Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
cfa6dbe
wip
Unheilbar Dec 11, 2025
de7e29d
wip sol cap working
Unheilbar Dec 15, 2025
d7b3142
wip run write report in remote don
Unheilbar Jan 8, 2026
57a8899
add v2_solana_write test
Unheilbar Jan 21, 2026
6ecee5d
prints cleanup
Unheilbar Jan 21, 2026
b3b415f
Merge branch 'develop' into PLEX-1920
Unheilbar Jan 21, 2026
f53ab78
bump solana
Unheilbar Jan 21, 2026
8b96f09
bump solana
Unheilbar Jan 23, 2026
4c294f2
bump solana
Unheilbar Jan 23, 2026
a66b7ca
bump deps
Unheilbar Jan 28, 2026
e1aecf1
rm logs
Unheilbar Jan 28, 2026
59cdc25
bump common replace chain selector to testnet
Unheilbar Jan 29, 2026
0365ba2
bump compute limit
Unheilbar Jan 29, 2026
344e605
solana logtrigger e2e
silaslenihan Jan 29, 2026
a8fef08
bump dependencies
Unheilbar Jan 29, 2026
bddd52d
increase delta stage
Unheilbar Jan 30, 2026
7ffda9d
Merge branch 'PLEX-1920' into solana-logtrigger-e2e
silaslenihan Jan 29, 2026
62978b9
Merge branch 'PLEX-1920' into solana-logtrigger-e2e
silaslenihan Feb 2, 2026
41a90e0
split logtrigger & writereport tests
silaslenihan Feb 2, 2026
877c2bc
Merge branch 'develop' into PLEX-1920
Unheilbar Feb 3, 2026
f467844
Merge branch 'develop' into PLEX-1920
Unheilbar Feb 3, 2026
49851db
bump common
Unheilbar Feb 3, 2026
b8432f0
fix lint
Unheilbar Feb 3, 2026
845edeb
bump solana
Unheilbar Feb 3, 2026
b7fea43
remove solana v1
Unheilbar Feb 3, 2026
63d401e
added subkey filters
silaslenihan Feb 3, 2026
85d15f5
Merge branch 'develop' into PLEX-1920
Unheilbar Feb 3, 2026
0a94fdc
Merge branch 'develop' into PLEX-1920
Unheilbar Feb 4, 2026
18d3784
Merge branch 'develop' into PLEX-1920
Unheilbar Feb 4, 2026
1386e12
fix core tests amd lints
Unheilbar Feb 4, 2026
5620ef1
asign topology to oslana cre suite
Unheilbar Feb 4, 2026
160957f
fix test
Unheilbar Feb 4, 2026
3d08bf1
add solana to private plugins
Unheilbar Feb 4, 2026
5807f15
add debug err
Unheilbar Feb 4, 2026
2009ef7
bumped and fixed tests
silaslenihan Feb 4, 2026
d35ecf1
Merge branch 'PLEX-1920' into solana-logtrigger-e2e
silaslenihan Feb 4, 2026
884dce6
update solana changeset to support v2 contracts
Unheilbar Feb 5, 2026
02875a6
add debug logs
Unheilbar Feb 5, 2026
b936903
update consensus ref
Unheilbar Feb 5, 2026
ee322c6
fix lint
Unheilbar Feb 5, 2026
31767da
Merge branch 'develop' into PLEX-1920
Unheilbar Feb 5, 2026
3702806
p
Unheilbar Feb 5, 2026
977d376
make modgraph
Unheilbar Feb 6, 2026
d891964
Merge branch 'PLEX-1920' into solana-logtrigger-e2e
silaslenihan Feb 6, 2026
e9dda08
Merge branch 'develop' into solana-logtrigger-e2e
silaslenihan Feb 24, 2026
eda5a14
Merge branch 'develop' into solana-logtrigger-e2e
silaslenihan Feb 24, 2026
7f647c0
revert messed up merge files
silaslenihan Feb 25, 2026
db5d90a
fix broken tests
silaslenihan Feb 25, 2026
149e69d
Merge branch 'develop' into solana-logtrigger-e2e
silaslenihan Feb 25, 2026
e68f3cb
fix CRE e2e test
silaslenihan Feb 26, 2026
143a15c
Merge branch 'develop' into solana-logtrigger-e2e
silaslenihan Mar 2, 2026
a4cee9d
bump go.mod for solana e2e workflows
silaslenihan Mar 2, 2026
61318b3
bump go.mods to capabilities-development branches
silaslenihan Mar 2, 2026
d15ce08
Merge branch 'develop' into solana-logtrigger-e2e
silaslenihan Mar 3, 2026
4ed8fed
Merge branch 'develop' into solana-logtrigger-e2e
silaslenihan Mar 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
[blockchains.solana_programs]
keystone_forwarder = "whV7Q5pi17hPPyaPksToDw1nMx6Lh8qmNWKFaLRQ4wz"
data_feeds_cache = "3kX63udXtYcsdj2737Wi2KGd2PhqiKPgAFAxstrjtRUa"
log_read_test = "J1zQwrBNBngz26jRPNWsUSZMHJwBwpkoDitXRV95LdK4"

[jd]
csa_encryption_key = "d1093c0060d50a3c89c189b2e485da5a3ce57f3dcb38ab7e2c0d5f0bb2314a44" # any random 32 byte hex string
Expand Down
7 changes: 6 additions & 1 deletion go.md
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,7 @@ flowchart LR
chainlink/system-tests/tests --> chainlink/system-tests/tests/smoke/cre/evm/logtrigger
chainlink/system-tests/tests --> chainlink/system-tests/tests/smoke/cre/evmread
chainlink/system-tests/tests --> chainlink/system-tests/tests/smoke/cre/httpaction
chainlink/system-tests/tests --> chainlink/system-tests/tests/smoke/cre/solana/sollogtrigger
chainlink/system-tests/tests --> chainlink/system-tests/tests/smoke/cre/solana/solwrite
chainlink/system-tests/tests --> chainlink/system-tests/tests/smoke/cre/vaultsecret
click chainlink/system-tests/tests href "https://github.com/smartcontractkit/chainlink"
Expand Down Expand Up @@ -512,6 +513,9 @@ flowchart LR
chainlink/system-tests/tests/smoke/cre/httpaction --> cre-sdk-go/capabilities/networking/http
chainlink/system-tests/tests/smoke/cre/httpaction --> cre-sdk-go/capabilities/scheduler/cron
click chainlink/system-tests/tests/smoke/cre/httpaction href "https://github.com/smartcontractkit/chainlink"
chainlink/system-tests/tests/smoke/cre/solana/sollogtrigger --> cre-sdk-go
chainlink/system-tests/tests/smoke/cre/solana/sollogtrigger --> cre-sdk-go/capabilities/blockchain/solana
click chainlink/system-tests/tests/smoke/cre/solana/sollogtrigger href "https://github.com/smartcontractkit/chainlink"
chainlink/system-tests/tests/smoke/cre/solana/solwrite --> cre-sdk-go/capabilities/blockchain/solana
chainlink/system-tests/tests/smoke/cre/solana/solwrite --> cre-sdk-go/capabilities/scheduler/cron
click chainlink/system-tests/tests/smoke/cre/solana/solwrite href "https://github.com/smartcontractkit/chainlink"
Expand All @@ -534,7 +538,7 @@ flowchart LR
cre-sdk-go/capabilities/blockchain/evm --> chainlink-common/pkg/workflows/sdk/v2/pb
cre-sdk-go/capabilities/blockchain/evm --> cre-sdk-go
click cre-sdk-go/capabilities/blockchain/evm href "https://github.com/smartcontractkit/cre-sdk-go"
cre-sdk-go/capabilities/blockchain/solana --> cre-sdk-go
cre-sdk-go/capabilities/blockchain/solana --> chainlink-protos/cre/go
click cre-sdk-go/capabilities/blockchain/solana href "https://github.com/smartcontractkit/cre-sdk-go"
cre-sdk-go/capabilities/networking/http --> cre-sdk-go
click cre-sdk-go/capabilities/networking/http href "https://github.com/smartcontractkit/cre-sdk-go"
Expand Down Expand Up @@ -588,6 +592,7 @@ flowchart LR
chainlink/system-tests/tests/smoke/cre/evm/logtrigger
chainlink/system-tests/tests/smoke/cre/evmread
chainlink/system-tests/tests/smoke/cre/httpaction
chainlink/system-tests/tests/smoke/cre/solana/sollogtrigger
chainlink/system-tests/tests/smoke/cre/solana/solwrite
chainlink/system-tests/tests/smoke/cre/vaultsecret
chainlink/v2
Expand Down
52 changes: 42 additions & 10 deletions system-tests/lib/cre/features/solana/v2/solana.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,10 @@ const (
"chainId":"{{.ChainID}}",
"network":"{{.Network}}"
}`
deltaStage = 14*time.Second + 2*time.Second // finalization time + 2 seconds delta
requestTimeout = 30 * time.Second
deltaStage = 14*time.Second + 2*time.Second // finalization time + 2 seconds delta
requestTimeout = 30 * time.Second
registrationRefresh = 20 * time.Second
registrationExpiry = 60 * time.Second
)

type SolChain interface {
Expand Down Expand Up @@ -102,7 +104,10 @@ func (s *Solana) PreEnvStartup(
}
}
// 4. Register Solana capability & its methods with Keystone
capabilities := registerSolanaCapability(solChain.ChainSelector())
capabilities, capErr := registerSolanaCapability(solChain.ChainSelector(), don.MustNodeSet())
if capErr != nil {
return nil, errors.Wrap(capErr, "failed to register solana capability")
}

return &cre.PreEnvStartupOutput{
DONCapabilityWithConfig: capabilities,
Expand Down Expand Up @@ -303,9 +308,12 @@ func createJobs(
}

// pre env
func registerSolanaCapability(selector uint64) []keystone_changeset.DONCapabilityWithConfig {
func registerSolanaCapability(selector uint64, nodeSet *cre.NodeSet) ([]keystone_changeset.DONCapabilityWithConfig, error) {
var caps []keystone_changeset.DONCapabilityWithConfig
methodConfigs := getMethodConfigs()
methodConfigs, err := getMethodConfigs(nodeSet)
if err != nil {
return nil, errors.Wrap(err, "failed to get method configs")
}
caps = append(caps, keystone_changeset.DONCapabilityWithConfig{
Capability: kcr.CapabilitiesRegistryCapability{
LabelledName: "solana" + ":ChainSelector:" + strconv.FormatUint(selector, 10),
Expand All @@ -316,17 +324,41 @@ func registerSolanaCapability(selector uint64) []keystone_changeset.DONCapabilit
},
})

return caps
return caps, nil
}

func getMethodConfigs() map[string]*capabilitiespb.CapabilityMethodConfig {
func getMethodConfigs(nodeSet *cre.NodeSet) (map[string]*capabilitiespb.CapabilityMethodConfig, error) {
methodConfigs := make(map[string]*capabilitiespb.CapabilityMethodConfig)

methodConfigs["WriteReport"] = writeReportActionConfig()
// PLEX-1828
// PLEX-1918 Add the rest of solana methods here

return methodConfigs
triggerConfig, err := logTriggerConfig(nodeSet)
if err != nil {
return nil, errors.Wrap(err, "failed to get config for LogTrigger")
}
methodConfigs["LogTrigger"] = triggerConfig

return methodConfigs, nil
}

func logTriggerConfig(nodeSet *cre.NodeSet) (*capabilitiespb.CapabilityMethodConfig, error) {
faultyNodes, faultyErr := nodeSet.MaxFaultyNodes()
if faultyErr != nil {
return nil, errors.Wrap(faultyErr, "failed to get faulty nodes")
}

return &capabilitiespb.CapabilityMethodConfig{
RemoteConfig: &capabilitiespb.CapabilityMethodConfig_RemoteTriggerConfig{
RemoteTriggerConfig: &capabilitiespb.RemoteTriggerConfig{
RegistrationRefresh: durationpb.New(registrationRefresh),
RegistrationExpiry: durationpb.New(registrationExpiry),
MinResponsesToAggregate: faultyNodes + 1,
MessageExpiry: durationpb.New(2 * registrationExpiry),
MaxBatchSize: 25,
BatchCollectionPeriod: durationpb.New(200 * time.Millisecond),
},
},
}, nil
}

func writeReportActionConfig() *capabilitiespb.CapabilityMethodConfig {
Expand Down
1 change: 1 addition & 0 deletions system-tests/tests/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ require (
github.com/smartcontractkit/chainlink/system-tests/tests/smoke/cre/evm/evmread v0.0.0-20251008094352-f74459c46e8c
github.com/smartcontractkit/chainlink/system-tests/tests/smoke/cre/evm/logtrigger v0.0.0-00010101000000-000000000000
github.com/smartcontractkit/chainlink/system-tests/tests/smoke/cre/evmread v0.0.0-20250917232237-c4ecf802c6f8
github.com/smartcontractkit/chainlink/system-tests/tests/smoke/cre/solana/sollogtrigger v0.0.0-00010101000000-000000000000
github.com/smartcontractkit/chainlink/system-tests/tests/smoke/cre/solana/solwrite v0.0.0-00010101000000-000000000000
github.com/smartcontractkit/libocr v0.0.0-20260304194147-a03701e2c02e
github.com/stretchr/testify v1.11.1
Expand Down
3 changes: 3 additions & 0 deletions system-tests/tests/smoke/cre/cre_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,9 @@ func Test_CRE_V2_Solana_Suite(t *testing.T) {
t.Run("[v2] Solana Write", func(t *testing.T) {
ExecuteSolanaWriteTest(t, testEnv)
})
t.Run("[v2] Solana LogTrigger", func(t *testing.T) {
ExecuteSolanaLogTriggerTest(t, testEnv)
})
}

func Test_CRE_V2_HTTP_Action_Regression_Suite(t *testing.T) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package config

import solanago "github.com/gagliardetto/solana-go"

type Config struct {
LogReadTestProgramID solanago.PublicKey
ExpectedU64Value uint64
}
48 changes: 48 additions & 0 deletions system-tests/tests/smoke/cre/solana/sollogtrigger/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
module github.com/smartcontractkit/chainlink/system-tests/tests/smoke/cre/solana/sollogtrigger

go 1.25.5

require (
github.com/gagliardetto/solana-go v1.14.0
github.com/smartcontractkit/chain-selectors v1.0.90
github.com/smartcontractkit/cre-sdk-go v1.3.1-0.20260225184421-f0b13c7a76a7
github.com/smartcontractkit/cre-sdk-go/capabilities/blockchain/solana v0.1.1-0.20260303175242-573e7e1ec998
gopkg.in/yaml.v3 v3.0.1
)

require (
filippo.io/edwards25519 v1.1.0 // indirect
github.com/blendle/zapdriver v1.3.1 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/fatih/color v1.18.0 // indirect
github.com/gagliardetto/binary v0.8.0 // indirect
github.com/gagliardetto/treeout v0.1.4 // indirect
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.18.2 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/logrusorgru/aurora v2.0.3+incompatible // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/mostynb/zstdpool-freelist v0.0.0-20201229113212-927304c0c3b1 // indirect
github.com/mr-tron/base58 v1.2.0 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/rogpeppe/go-internal v1.14.1 // indirect
github.com/shopspring/decimal v1.4.0 // indirect
github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260303174316-33ff4336e600 // indirect
github.com/streamingfast/logging v0.0.0-20230608130331-f22c91403091 // indirect
github.com/stretchr/testify v1.11.1 // indirect
go.mongodb.org/mongo-driver v1.17.2 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.1 // indirect
golang.org/x/crypto v0.48.0 // indirect
golang.org/x/sys v0.41.0 // indirect
golang.org/x/term v0.40.0 // indirect
google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
)

replace github.com/mattn/go-isatty => github.com/Unheilbar/go-isatty v0.0.2 // original isatty doesn't support wasim
Loading
Loading