From 1b41e69cca2f4622d367ef18733c36fcae433505 Mon Sep 17 00:00:00 2001 From: Dylan Tinianov Date: Mon, 7 Oct 2024 19:48:02 -0400 Subject: [PATCH] Bump chainlink-solana (#14575) * Bump chainlink-solana * Add Solana SendOnly config * Add Solana SendOnly config * Bump Solana * Update Solana Multinode config * go mod tidy * Fix finality tag * Fix tests * bump solana * Update chains-solana.toml * make config docs * Set FinalityTagEnabled * Set SendOnly * Changeset * Bump Solana * undo config changes --- .changeset/silent-foxes-battle.md | 5 + core/config/docs/chains-solana.toml | 32 +++++ core/scripts/go.mod | 2 +- core/scripts/go.sum | 4 +- core/services/chainlink/config_test.go | 78 ++++++++++++ .../chainlink/testdata/config-full.toml | 17 +++ .../config-multi-chain-effective.toml | 34 ++++++ .../testdata/config-multi-chain.toml | 34 ++++++ core/web/resolver/testdata/config-full.toml | 17 +++ .../config-multi-chain-effective.toml | 34 ++++++ .../resolver/testdata/config-multi-chain.toml | 34 ++++++ core/web/solana_chains_controller_test.go | 17 +++ docs/CONFIG.md | 111 ++++++++++++++++++ go.mod | 2 +- go.sum | 4 +- integration-tests/go.mod | 2 +- integration-tests/go.sum | 4 +- integration-tests/load/go.mod | 2 +- integration-tests/load/go.sum | 4 +- 19 files changed, 425 insertions(+), 12 deletions(-) create mode 100644 .changeset/silent-foxes-battle.md diff --git a/.changeset/silent-foxes-battle.md b/.changeset/silent-foxes-battle.md new file mode 100644 index 00000000000..f3f4b48962c --- /dev/null +++ b/.changeset/silent-foxes-battle.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +Bump chainlink-solana and fix tests #internal diff --git a/core/config/docs/chains-solana.toml b/core/config/docs/chains-solana.toml index 98b777f11c2..7a5911c4d2e 100644 --- a/core/config/docs/chains-solana.toml +++ b/core/config/docs/chains-solana.toml @@ -39,6 +39,38 @@ BlockHistoryPollPeriod = '5s' # Default # ComputeUnitLimitDefault is the compute units limit applied to transactions unless overriden during the txm enqueue ComputeUnitLimitDefault = 200_000 # Default +[Solana.MultiNode] +# Enabled enables the multinode feature. +Enabled = false # Default +# PollFailureThreshold is the number of consecutive poll failures before a node is considered unhealthy. +PollFailureThreshold = 5 # Default +# PollInterval is the rate to poll for node health. +PollInterval = '10s' # Default +# SelectionMode is the method used to select the next best node to use. +SelectionMode = 'PriorityLevel' # Default +# SyncThreshold is the number of blocks behind the best node that a node can be before it is considered out of sync. +SyncThreshold = 5 # Default +# NodeIsSyncingEnabled enables the feature to avoid sending transactions to nodes that are syncing. Not relavant for Solana. +NodeIsSyncingEnabled = false # Default +# LeaseDuration is the max duration a node can be leased for. +LeaseDuration = '1m0s' # Default +# FinalizedBlockPollInterval is the rate to poll for the finalized block. +FinalizedBlockPollInterval = '10s' # Default +# EnforceRepeatableRead enforces the repeatable read guarantee for multinode. +EnforceRepeatableRead = true # Default +# DeathDeclarationDelay is the duration to wait before declaring a node dead. +DeathDeclarationDelay = '10s' # Default +# NodeNoNewHeadsThreshold is the duration to wait before declaring a node unhealthy due to no new heads. +NodeNoNewHeadsThreshold = '10s' # Default +# NoNewFinalizedHeadsThreshold is the duration to wait before declaring a node unhealthy due to no new finalized heads. +NoNewFinalizedHeadsThreshold = '10s' # Default +# FinalityDepth is not used when finality tags are enabled. +FinalityDepth = 0 # Default +# FinalityTagEnabled enables the use of finality tags. +FinalityTagEnabled = true # Default +# FinalizedBlockOffset is the offset from the finalized block to use for finality tags. +FinalizedBlockOffset = 0 # Default + [[Solana.Nodes]] # Name is a unique (per-chain) identifier for this node. Name = 'primary' # Example diff --git a/core/scripts/go.mod b/core/scripts/go.mod index fa071aa2b10..c00a5c8344d 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -282,7 +282,7 @@ require ( github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240911175228-daf2600bb7b7 // indirect github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-433914114bd2 // indirect github.com/smartcontractkit/chainlink-feeds v0.0.0-20240910155501-42f20443189f // indirect - github.com/smartcontractkit/chainlink-solana v1.1.1-0.20240927143737-7e527aa85bff // indirect + github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241004161234-3f52bbcae72c // indirect github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240911194142-506bc469d8ae // indirect github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect github.com/smartcontractkit/tdh2/go/ocr2/decryptionplugin v0.0.0-20230906073235-9e478e5e19f1 // indirect diff --git a/core/scripts/go.sum b/core/scripts/go.sum index 010ee613221..213a9f479c0 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1107,8 +1107,8 @@ github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-4339141 github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-433914114bd2/go.mod h1:rNhNSrrRMvkgAm5SA6bNTdh2340bTQQZdUVNtZ2o2bk= github.com/smartcontractkit/chainlink-feeds v0.0.0-20240910155501-42f20443189f h1:p4p3jBT91EQyLuAMvHD+zNJsuAYI/QjJbzuGUJ7wIgg= github.com/smartcontractkit/chainlink-feeds v0.0.0-20240910155501-42f20443189f/go.mod h1:FLlWBt2hwiMVgt9AcSo6wBJYIRd/nsc8ENbV1Wir1bw= -github.com/smartcontractkit/chainlink-solana v1.1.1-0.20240927143737-7e527aa85bff h1:piMugtrRlbVdcC6xZF37me686eS1YwpLQ0kN2v2b9YE= -github.com/smartcontractkit/chainlink-solana v1.1.1-0.20240927143737-7e527aa85bff/go.mod h1:5jD47oCERRQ4eGi0iNdk9ZV5HMEdolfQwHpUX1+Ix4s= +github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241004161234-3f52bbcae72c h1:9JU37oQZd/IYyozhzz5MjYFKzLe6K2LrTyI51N6kMPo= +github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241004161234-3f52bbcae72c/go.mod h1:7v0DnxHb6UQUSHTcLcs2juJcyOjHQV+5oJc3jobqqM0= github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240911194142-506bc469d8ae h1:d+B8y2Nd/PrnPMNoaSPn3eDgUgxcVcIqAxGrvYu/gGw= github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240911194142-506bc469d8ae/go.mod h1:ec/a20UZ7YRK4oxJcnTBFzp1+DBcJcwqEaerUMsktMs= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12ijqMM9tvYVEm+nR826WsrNi6zCKpwBhuApq127wHs= diff --git a/core/services/chainlink/config_test.go b/core/services/chainlink/config_test.go index e09fe2ef6bf..9443fc1d060 100644 --- a/core/services/chainlink/config_test.go +++ b/core/services/chainlink/config_test.go @@ -47,6 +47,10 @@ var ( //go:embed testdata/config-multi-chain.toml multiChainTOML string + second = *commoncfg.MustNewDuration(time.Second) + minute = *commoncfg.MustNewDuration(time.Minute) + selectionMode = client.NodeSelectionModeHighestHead + multiChain = Config{ Core: toml.Core{ RootDir: ptr("my/root/dir"), @@ -167,6 +171,25 @@ var ( Chain: solcfg.Chain{ MaxRetries: ptr[int64](12), }, + MultiNode: solcfg.MultiNodeConfig{ + MultiNode: solcfg.MultiNode{ + Enabled: ptr(false), + PollFailureThreshold: ptr[uint32](5), + PollInterval: &second, + SelectionMode: &selectionMode, + SyncThreshold: ptr[uint32](5), + NodeIsSyncingEnabled: ptr(false), + LeaseDuration: &minute, + FinalizedBlockPollInterval: &second, + EnforceRepeatableRead: ptr(true), + DeathDeclarationDelay: &minute, + NodeNoNewHeadsThreshold: &minute, + NoNewFinalizedHeadsThreshold: &minute, + FinalityDepth: ptr[uint32](0), + FinalityTagEnabled: ptr(true), + FinalizedBlockOffset: ptr[uint32](0), + }, + }, Nodes: []*solcfg.Node{ {Name: ptr("primary"), URL: commoncfg.MustParseURL("http://mainnet.solana.com")}, }, @@ -176,6 +199,25 @@ var ( Chain: solcfg.Chain{ OCR2CachePollPeriod: commoncfg.MustNewDuration(time.Minute), }, + MultiNode: solcfg.MultiNodeConfig{ + MultiNode: solcfg.MultiNode{ + Enabled: ptr(false), + PollFailureThreshold: ptr[uint32](5), + PollInterval: &second, + SelectionMode: &selectionMode, + SyncThreshold: ptr[uint32](5), + NodeIsSyncingEnabled: ptr(false), + LeaseDuration: &minute, + FinalizedBlockPollInterval: &second, + EnforceRepeatableRead: ptr(true), + DeathDeclarationDelay: &minute, + NodeNoNewHeadsThreshold: &minute, + NoNewFinalizedHeadsThreshold: &minute, + FinalityDepth: ptr[uint32](0), + FinalityTagEnabled: ptr(true), + FinalizedBlockOffset: ptr[uint32](0), + }, + }, Nodes: []*solcfg.Node{ {Name: ptr("secondary"), URL: commoncfg.MustParseURL("http://testnet.solana.com")}, }, @@ -712,6 +754,25 @@ func TestConfig_Marshal(t *testing.T) { BlockHistoryPollPeriod: commoncfg.MustNewDuration(time.Minute), ComputeUnitLimitDefault: ptr[uint32](100_000), }, + MultiNode: solcfg.MultiNodeConfig{ + MultiNode: solcfg.MultiNode{ + Enabled: ptr(false), + PollFailureThreshold: ptr[uint32](5), + PollInterval: &second, + SelectionMode: &selectionMode, + SyncThreshold: ptr[uint32](5), + NodeIsSyncingEnabled: ptr(false), + LeaseDuration: &minute, + FinalizedBlockPollInterval: &second, + EnforceRepeatableRead: ptr(true), + DeathDeclarationDelay: &minute, + NodeNoNewHeadsThreshold: &minute, + NoNewFinalizedHeadsThreshold: &minute, + FinalityDepth: ptr[uint32](0), + FinalityTagEnabled: ptr(true), + FinalizedBlockOffset: ptr[uint32](0), + }, + }, Nodes: []*solcfg.Node{ {Name: ptr("primary"), URL: commoncfg.MustParseURL("http://solana.web")}, {Name: ptr("foo"), URL: commoncfg.MustParseURL("http://solana.foo"), SendOnly: true}, @@ -1218,6 +1279,23 @@ FeeBumpPeriod = '1m0s' BlockHistoryPollPeriod = '1m0s' ComputeUnitLimitDefault = 100000 +[Solana.MultiNode] +Enabled = false +PollFailureThreshold = 5 +PollInterval = '1s' +SelectionMode = 'HighestHead' +SyncThreshold = 5 +NodeIsSyncingEnabled = false +LeaseDuration = '1m0s' +FinalizedBlockPollInterval = '1s' +EnforceRepeatableRead = true +DeathDeclarationDelay = '1m0s' +NodeNoNewHeadsThreshold = '1m0s' +NoNewFinalizedHeadsThreshold = '1m0s' +FinalityDepth = 0 +FinalityTagEnabled = true +FinalizedBlockOffset = 0 + [[Solana.Nodes]] Name = 'primary' URL = 'http://solana.web' diff --git a/core/services/chainlink/testdata/config-full.toml b/core/services/chainlink/testdata/config-full.toml index 2cd36c34ff8..35b8903878d 100644 --- a/core/services/chainlink/testdata/config-full.toml +++ b/core/services/chainlink/testdata/config-full.toml @@ -501,6 +501,23 @@ FeeBumpPeriod = '1m0s' BlockHistoryPollPeriod = '1m0s' ComputeUnitLimitDefault = 100000 +[Solana.MultiNode] +Enabled = false +PollFailureThreshold = 5 +PollInterval = '1s' +SelectionMode = 'HighestHead' +SyncThreshold = 5 +NodeIsSyncingEnabled = false +LeaseDuration = '1m0s' +FinalizedBlockPollInterval = '1s' +EnforceRepeatableRead = true +DeathDeclarationDelay = '1m0s' +NodeNoNewHeadsThreshold = '1m0s' +NoNewFinalizedHeadsThreshold = '1m0s' +FinalityDepth = 0 +FinalityTagEnabled = true +FinalizedBlockOffset = 0 + [[Solana.Nodes]] Name = 'primary' URL = 'http://solana.web' diff --git a/core/services/chainlink/testdata/config-multi-chain-effective.toml b/core/services/chainlink/testdata/config-multi-chain-effective.toml index b4cb107cdef..3d82a30e88c 100644 --- a/core/services/chainlink/testdata/config-multi-chain-effective.toml +++ b/core/services/chainlink/testdata/config-multi-chain-effective.toml @@ -662,6 +662,23 @@ FeeBumpPeriod = '3s' BlockHistoryPollPeriod = '5s' ComputeUnitLimitDefault = 200000 +[Solana.MultiNode] +Enabled = false +PollFailureThreshold = 5 +PollInterval = '1s' +SelectionMode = 'HighestHead' +SyncThreshold = 5 +NodeIsSyncingEnabled = false +LeaseDuration = '1m0s' +FinalizedBlockPollInterval = '1s' +EnforceRepeatableRead = true +DeathDeclarationDelay = '1m0s' +NodeNoNewHeadsThreshold = '1m0s' +NoNewFinalizedHeadsThreshold = '1m0s' +FinalityDepth = 0 +FinalityTagEnabled = true +FinalizedBlockOffset = 0 + [[Solana.Nodes]] Name = 'primary' URL = 'http://mainnet.solana.com' @@ -687,6 +704,23 @@ FeeBumpPeriod = '3s' BlockHistoryPollPeriod = '5s' ComputeUnitLimitDefault = 200000 +[Solana.MultiNode] +Enabled = false +PollFailureThreshold = 5 +PollInterval = '1s' +SelectionMode = 'HighestHead' +SyncThreshold = 5 +NodeIsSyncingEnabled = false +LeaseDuration = '1m0s' +FinalizedBlockPollInterval = '1s' +EnforceRepeatableRead = true +DeathDeclarationDelay = '1m0s' +NodeNoNewHeadsThreshold = '1m0s' +NoNewFinalizedHeadsThreshold = '1m0s' +FinalityDepth = 0 +FinalityTagEnabled = true +FinalizedBlockOffset = 0 + [[Solana.Nodes]] Name = 'secondary' URL = 'http://testnet.solana.com' diff --git a/core/services/chainlink/testdata/config-multi-chain.toml b/core/services/chainlink/testdata/config-multi-chain.toml index 45a6de47a98..e15fd143665 100644 --- a/core/services/chainlink/testdata/config-multi-chain.toml +++ b/core/services/chainlink/testdata/config-multi-chain.toml @@ -90,6 +90,23 @@ TendermintURL = 'http://bombay.cosmos.com' ChainID = 'mainnet' MaxRetries = 12 +[Solana.MultiNode] +Enabled = false +PollFailureThreshold = 5 +PollInterval = '1s' +SelectionMode = 'HighestHead' +SyncThreshold = 5 +NodeIsSyncingEnabled = false +LeaseDuration = '1m0s' +FinalizedBlockPollInterval = '1s' +EnforceRepeatableRead = true +DeathDeclarationDelay = '1m0s' +NodeNoNewHeadsThreshold = '1m0s' +NoNewFinalizedHeadsThreshold = '1m0s' +FinalityDepth = 0 +FinalityTagEnabled = true +FinalizedBlockOffset = 0 + [[Solana.Nodes]] Name = 'primary' URL = 'http://mainnet.solana.com' @@ -99,6 +116,23 @@ SendOnly = false ChainID = 'testnet' OCR2CachePollPeriod = '1m0s' +[Solana.MultiNode] +Enabled = false +PollFailureThreshold = 5 +PollInterval = '1s' +SelectionMode = 'HighestHead' +SyncThreshold = 5 +NodeIsSyncingEnabled = false +LeaseDuration = '1m0s' +FinalizedBlockPollInterval = '1s' +EnforceRepeatableRead = true +DeathDeclarationDelay = '1m0s' +NodeNoNewHeadsThreshold = '1m0s' +NoNewFinalizedHeadsThreshold = '1m0s' +FinalityDepth = 0 +FinalityTagEnabled = true +FinalizedBlockOffset = 0 + [[Solana.Nodes]] Name = 'secondary' URL = 'http://testnet.solana.com' diff --git a/core/web/resolver/testdata/config-full.toml b/core/web/resolver/testdata/config-full.toml index b26e1068ac8..6f8a6d5e777 100644 --- a/core/web/resolver/testdata/config-full.toml +++ b/core/web/resolver/testdata/config-full.toml @@ -500,6 +500,23 @@ FeeBumpPeriod = '3s' BlockHistoryPollPeriod = '5s' ComputeUnitLimitDefault = 200000 +[Solana.MultiNode] +Enabled = false +PollFailureThreshold = 5 +PollInterval = '1s' +SelectionMode = 'HighestHead' +SyncThreshold = 5 +NodeIsSyncingEnabled = false +LeaseDuration = '1m0s' +FinalizedBlockPollInterval = '1s' +EnforceRepeatableRead = true +DeathDeclarationDelay = '1m0s' +NodeNoNewHeadsThreshold = '1m0s' +NoNewFinalizedHeadsThreshold = '1m0s' +FinalityDepth = 0 +FinalityTagEnabled = true +FinalizedBlockOffset = 0 + [[Solana.Nodes]] Name = 'primary' URL = 'http://solana.web' diff --git a/core/web/resolver/testdata/config-multi-chain-effective.toml b/core/web/resolver/testdata/config-multi-chain-effective.toml index 303843cf8bf..612f2eaf390 100644 --- a/core/web/resolver/testdata/config-multi-chain-effective.toml +++ b/core/web/resolver/testdata/config-multi-chain-effective.toml @@ -662,6 +662,23 @@ FeeBumpPeriod = '3s' BlockHistoryPollPeriod = '5s' ComputeUnitLimitDefault = 200000 +[Solana.MultiNode] +Enabled = false +PollFailureThreshold = 5 +PollInterval = '1s' +SelectionMode = 'HighestHead' +SyncThreshold = 5 +NodeIsSyncingEnabled = false +LeaseDuration = '1m0s' +FinalizedBlockPollInterval = '1s' +EnforceRepeatableRead = true +DeathDeclarationDelay = '1m0s' +NodeNoNewHeadsThreshold = '1m0s' +NoNewFinalizedHeadsThreshold = '1m0s' +FinalityDepth = 0 +FinalityTagEnabled = true +FinalizedBlockOffset = 0 + [[Solana.Nodes]] Name = 'primary' URL = 'http://mainnet.solana.com' @@ -687,6 +704,23 @@ FeeBumpPeriod = '3s' BlockHistoryPollPeriod = '5s' ComputeUnitLimitDefault = 200000 +[Solana.MultiNode] +Enabled = false +PollFailureThreshold = 5 +PollInterval = '1s' +SelectionMode = 'HighestHead' +SyncThreshold = 5 +NodeIsSyncingEnabled = false +LeaseDuration = '1m0s' +FinalizedBlockPollInterval = '1s' +EnforceRepeatableRead = true +DeathDeclarationDelay = '1m0s' +NodeNoNewHeadsThreshold = '1m0s' +NoNewFinalizedHeadsThreshold = '1m0s' +FinalityDepth = 0 +FinalityTagEnabled = true +FinalizedBlockOffset = 0 + [[Solana.Nodes]] Name = 'secondary' URL = 'http://testnet.solana.com' diff --git a/core/web/resolver/testdata/config-multi-chain.toml b/core/web/resolver/testdata/config-multi-chain.toml index 7d72ef55de7..a305332b5ff 100644 --- a/core/web/resolver/testdata/config-multi-chain.toml +++ b/core/web/resolver/testdata/config-multi-chain.toml @@ -98,6 +98,23 @@ TendermintURL = 'http://bombay.cosmos.com' ChainID = 'mainnet' MaxRetries = 12 +[Solana.MultiNode] +Enabled = false +PollFailureThreshold = 5 +PollInterval = '1s' +SelectionMode = 'HighestHead' +SyncThreshold = 5 +NodeIsSyncingEnabled = false +LeaseDuration = '1m0s' +FinalizedBlockPollInterval = '1s' +EnforceRepeatableRead = true +DeathDeclarationDelay = '1m0s' +NodeNoNewHeadsThreshold = '1m0s' +NoNewFinalizedHeadsThreshold = '1m0s' +FinalityDepth = 0 +FinalityTagEnabled = true +FinalizedBlockOffset = 0 + [[Solana.Nodes]] Name = 'primary' URL = 'http://mainnet.solana.com' @@ -107,6 +124,23 @@ SendOnly = false ChainID = 'testnet' OCR2CachePollPeriod = '1m0s' +[Solana.MultiNode] +Enabled = false +PollFailureThreshold = 5 +PollInterval = '1s' +SelectionMode = 'HighestHead' +SyncThreshold = 5 +NodeIsSyncingEnabled = false +LeaseDuration = '1m0s' +FinalizedBlockPollInterval = '1s' +EnforceRepeatableRead = true +DeathDeclarationDelay = '1m0s' +NodeNoNewHeadsThreshold = '1m0s' +NoNewFinalizedHeadsThreshold = '1m0s' +FinalityDepth = 0 +FinalityTagEnabled = true +FinalizedBlockOffset = 0 + [[Solana.Nodes]] Name = 'secondary' URL = 'http://testnet.solana.com' diff --git a/core/web/solana_chains_controller_test.go b/core/web/solana_chains_controller_test.go index 3f64431b049..316f14ccf2d 100644 --- a/core/web/solana_chains_controller_test.go +++ b/core/web/solana_chains_controller_test.go @@ -60,6 +60,23 @@ FeeBumpPeriod = '3s' BlockHistoryPollPeriod = '5s' ComputeUnitLimitDefault = 200000 Nodes = [] + +[MultiNode] +Enabled = false +PollFailureThreshold = 5 +PollInterval = '10s' +SelectionMode = 'PriorityLevel' +SyncThreshold = 5 +NodeIsSyncingEnabled = false +LeaseDuration = '1m0s' +FinalizedBlockPollInterval = '5s' +EnforceRepeatableRead = true +DeathDeclarationDelay = '10s' +NodeNoNewHeadsThreshold = '10s' +NoNewFinalizedHeadsThreshold = '10s' +FinalityDepth = 0 +FinalityTagEnabled = true +FinalizedBlockOffset = 0 `, } }, diff --git a/docs/CONFIG.md b/docs/CONFIG.md index 592e21286d4..59192906fc1 100644 --- a/docs/CONFIG.md +++ b/docs/CONFIG.md @@ -10076,6 +10076,117 @@ ComputeUnitLimitDefault = 200_000 # Default ``` ComputeUnitLimitDefault is the compute units limit applied to transactions unless overriden during the txm enqueue +## Solana.MultiNode +```toml +[Solana.MultiNode] +Enabled = false # Default +PollFailureThreshold = 5 # Default +PollInterval = '10s' # Default +SelectionMode = 'PriorityLevel' # Default +SyncThreshold = 5 # Default +NodeIsSyncingEnabled = false # Default +LeaseDuration = '1m0s' # Default +FinalizedBlockPollInterval = '10s' # Default +EnforceRepeatableRead = true # Default +DeathDeclarationDelay = '10s' # Default +NodeNoNewHeadsThreshold = '10s' # Default +NoNewFinalizedHeadsThreshold = '10s' # Default +FinalityDepth = 0 # Default +FinalityTagEnabled = true # Default +FinalizedBlockOffset = 0 # Default +``` + + +### Enabled +```toml +Enabled = false # Default +``` +Enabled enables the multinode feature. + +### PollFailureThreshold +```toml +PollFailureThreshold = 5 # Default +``` +PollFailureThreshold is the number of consecutive poll failures before a node is considered unhealthy. + +### PollInterval +```toml +PollInterval = '10s' # Default +``` +PollInterval is the rate to poll for node health. + +### SelectionMode +```toml +SelectionMode = 'PriorityLevel' # Default +``` +SelectionMode is the method used to select the next best node to use. + +### SyncThreshold +```toml +SyncThreshold = 5 # Default +``` +SyncThreshold is the number of blocks behind the best node that a node can be before it is considered out of sync. + +### NodeIsSyncingEnabled +```toml +NodeIsSyncingEnabled = false # Default +``` +NodeIsSyncingEnabled enables the feature to avoid sending transactions to nodes that are syncing. Not relavant for Solana. + +### LeaseDuration +```toml +LeaseDuration = '1m0s' # Default +``` +LeaseDuration is the max duration a node can be leased for. + +### FinalizedBlockPollInterval +```toml +FinalizedBlockPollInterval = '10s' # Default +``` +FinalizedBlockPollInterval is the rate to poll for the finalized block. + +### EnforceRepeatableRead +```toml +EnforceRepeatableRead = true # Default +``` +EnforceRepeatableRead enforces the repeatable read guarantee for multinode. + +### DeathDeclarationDelay +```toml +DeathDeclarationDelay = '10s' # Default +``` +DeathDeclarationDelay is the duration to wait before declaring a node dead. + +### NodeNoNewHeadsThreshold +```toml +NodeNoNewHeadsThreshold = '10s' # Default +``` +NodeNoNewHeadsThreshold is the duration to wait before declaring a node unhealthy due to no new heads. + +### NoNewFinalizedHeadsThreshold +```toml +NoNewFinalizedHeadsThreshold = '10s' # Default +``` +NoNewFinalizedHeadsThreshold is the duration to wait before declaring a node unhealthy due to no new finalized heads. + +### FinalityDepth +```toml +FinalityDepth = 0 # Default +``` +FinalityDepth is not used when finality tags are enabled. + +### FinalityTagEnabled +```toml +FinalityTagEnabled = true # Default +``` +FinalityTagEnabled enables the use of finality tags. + +### FinalizedBlockOffset +```toml +FinalizedBlockOffset = 0 # Default +``` +FinalizedBlockOffset is the offset from the finalized block to use for finality tags. + ## Solana.Nodes ```toml [[Solana.Nodes]] diff --git a/go.mod b/go.mod index 1a7124881d2..9cc7e43b93a 100644 --- a/go.mod +++ b/go.mod @@ -80,7 +80,7 @@ require ( github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240911175228-daf2600bb7b7 github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-433914114bd2 github.com/smartcontractkit/chainlink-feeds v0.0.0-20240910155501-42f20443189f - github.com/smartcontractkit/chainlink-solana v1.1.1-0.20240927143737-7e527aa85bff + github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241004161234-3f52bbcae72c github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240911194142-506bc469d8ae github.com/smartcontractkit/libocr v0.0.0-20240717100443-f6226e09bee7 github.com/smartcontractkit/tdh2/go/ocr2/decryptionplugin v0.0.0-20230906073235-9e478e5e19f1 diff --git a/go.sum b/go.sum index 09f2be6dcb4..c08e0022b40 100644 --- a/go.sum +++ b/go.sum @@ -1068,8 +1068,8 @@ github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-4339141 github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-433914114bd2/go.mod h1:rNhNSrrRMvkgAm5SA6bNTdh2340bTQQZdUVNtZ2o2bk= github.com/smartcontractkit/chainlink-feeds v0.0.0-20240910155501-42f20443189f h1:p4p3jBT91EQyLuAMvHD+zNJsuAYI/QjJbzuGUJ7wIgg= github.com/smartcontractkit/chainlink-feeds v0.0.0-20240910155501-42f20443189f/go.mod h1:FLlWBt2hwiMVgt9AcSo6wBJYIRd/nsc8ENbV1Wir1bw= -github.com/smartcontractkit/chainlink-solana v1.1.1-0.20240927143737-7e527aa85bff h1:piMugtrRlbVdcC6xZF37me686eS1YwpLQ0kN2v2b9YE= -github.com/smartcontractkit/chainlink-solana v1.1.1-0.20240927143737-7e527aa85bff/go.mod h1:5jD47oCERRQ4eGi0iNdk9ZV5HMEdolfQwHpUX1+Ix4s= +github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241004161234-3f52bbcae72c h1:9JU37oQZd/IYyozhzz5MjYFKzLe6K2LrTyI51N6kMPo= +github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241004161234-3f52bbcae72c/go.mod h1:7v0DnxHb6UQUSHTcLcs2juJcyOjHQV+5oJc3jobqqM0= github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240911194142-506bc469d8ae h1:d+B8y2Nd/PrnPMNoaSPn3eDgUgxcVcIqAxGrvYu/gGw= github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240911194142-506bc469d8ae/go.mod h1:ec/a20UZ7YRK4oxJcnTBFzp1+DBcJcwqEaerUMsktMs= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12ijqMM9tvYVEm+nR826WsrNi6zCKpwBhuApq127wHs= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index e061f0c38f0..3c975d4b3bc 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -414,7 +414,7 @@ require ( github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240911175228-daf2600bb7b7 // indirect github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-433914114bd2 // indirect github.com/smartcontractkit/chainlink-feeds v0.0.0-20240910155501-42f20443189f // indirect - github.com/smartcontractkit/chainlink-solana v1.1.1-0.20240927143737-7e527aa85bff // indirect + github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241004161234-3f52bbcae72c // indirect github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240911194142-506bc469d8ae // indirect github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect github.com/smartcontractkit/tdh2/go/ocr2/decryptionplugin v0.0.0-20230906073235-9e478e5e19f1 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 42652b38eb9..0cc241f9fff 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1447,8 +1447,8 @@ github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-4339141 github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-433914114bd2/go.mod h1:rNhNSrrRMvkgAm5SA6bNTdh2340bTQQZdUVNtZ2o2bk= github.com/smartcontractkit/chainlink-feeds v0.0.0-20240910155501-42f20443189f h1:p4p3jBT91EQyLuAMvHD+zNJsuAYI/QjJbzuGUJ7wIgg= github.com/smartcontractkit/chainlink-feeds v0.0.0-20240910155501-42f20443189f/go.mod h1:FLlWBt2hwiMVgt9AcSo6wBJYIRd/nsc8ENbV1Wir1bw= -github.com/smartcontractkit/chainlink-solana v1.1.1-0.20240927143737-7e527aa85bff h1:piMugtrRlbVdcC6xZF37me686eS1YwpLQ0kN2v2b9YE= -github.com/smartcontractkit/chainlink-solana v1.1.1-0.20240927143737-7e527aa85bff/go.mod h1:5jD47oCERRQ4eGi0iNdk9ZV5HMEdolfQwHpUX1+Ix4s= +github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241004161234-3f52bbcae72c h1:9JU37oQZd/IYyozhzz5MjYFKzLe6K2LrTyI51N6kMPo= +github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241004161234-3f52bbcae72c/go.mod h1:7v0DnxHb6UQUSHTcLcs2juJcyOjHQV+5oJc3jobqqM0= github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240911194142-506bc469d8ae h1:d+B8y2Nd/PrnPMNoaSPn3eDgUgxcVcIqAxGrvYu/gGw= github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240911194142-506bc469d8ae/go.mod h1:ec/a20UZ7YRK4oxJcnTBFzp1+DBcJcwqEaerUMsktMs= github.com/smartcontractkit/chainlink-testing-framework/havoc v1.50.0 h1:mgjBQIEy+3V3G6K8e+6by3xndgsXdYYsdy+7kzQZwSk= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index 4ee1555edf1..d39b1f65264 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -395,7 +395,7 @@ require ( github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240911175228-daf2600bb7b7 // indirect github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-433914114bd2 // indirect github.com/smartcontractkit/chainlink-feeds v0.0.0-20240910155501-42f20443189f // indirect - github.com/smartcontractkit/chainlink-solana v1.1.1-0.20240927143737-7e527aa85bff // indirect + github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241004161234-3f52bbcae72c // indirect github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240911194142-506bc469d8ae // indirect github.com/smartcontractkit/chainlink-testing-framework/havoc v1.50.0 // indirect github.com/smartcontractkit/chainlink-testing-framework/lib/grafana v1.50.0 // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index 489b33e451a..6946809689b 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1423,8 +1423,8 @@ github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-4339141 github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-433914114bd2/go.mod h1:rNhNSrrRMvkgAm5SA6bNTdh2340bTQQZdUVNtZ2o2bk= github.com/smartcontractkit/chainlink-feeds v0.0.0-20240910155501-42f20443189f h1:p4p3jBT91EQyLuAMvHD+zNJsuAYI/QjJbzuGUJ7wIgg= github.com/smartcontractkit/chainlink-feeds v0.0.0-20240910155501-42f20443189f/go.mod h1:FLlWBt2hwiMVgt9AcSo6wBJYIRd/nsc8ENbV1Wir1bw= -github.com/smartcontractkit/chainlink-solana v1.1.1-0.20240927143737-7e527aa85bff h1:piMugtrRlbVdcC6xZF37me686eS1YwpLQ0kN2v2b9YE= -github.com/smartcontractkit/chainlink-solana v1.1.1-0.20240927143737-7e527aa85bff/go.mod h1:5jD47oCERRQ4eGi0iNdk9ZV5HMEdolfQwHpUX1+Ix4s= +github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241004161234-3f52bbcae72c h1:9JU37oQZd/IYyozhzz5MjYFKzLe6K2LrTyI51N6kMPo= +github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241004161234-3f52bbcae72c/go.mod h1:7v0DnxHb6UQUSHTcLcs2juJcyOjHQV+5oJc3jobqqM0= github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240911194142-506bc469d8ae h1:d+B8y2Nd/PrnPMNoaSPn3eDgUgxcVcIqAxGrvYu/gGw= github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240911194142-506bc469d8ae/go.mod h1:ec/a20UZ7YRK4oxJcnTBFzp1+DBcJcwqEaerUMsktMs= github.com/smartcontractkit/chainlink-testing-framework/havoc v1.50.0 h1:mgjBQIEy+3V3G6K8e+6by3xndgsXdYYsdy+7kzQZwSk=