Skip to content

Commit f461f22

Browse files
committed
Bump EVM finalized state availability config
1 parent 3403a9a commit f461f22

31 files changed

Lines changed: 386 additions & 61 deletions

ccip/config/evm/fallback.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ SyncThreshold = 5
8686
LeaseDuration = '0s'
8787
NodeIsSyncingEnabled = false
8888
FinalizedBlockPollInterval = '5s'
89+
HistoricalBalanceCheckAddress = '0x0000000000000000000000000000000000000000'
90+
FinalizedStateCheckFailureThreshold = 0
8991
EnforceRepeatableRead = false
9092
DeathDeclarationDelay = '10s'
9193
NewHeadsPollInterval = '0s'

core/config/docs/chains-evm.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,17 @@ NodeIsSyncingEnabled = false # Default
473473
#
474474
# Set to 0 to disable.
475475
FinalizedBlockPollInterval = '5s' # Default
476+
# HistoricalBalanceCheckAddress is the probe account used by the historical balance health check.
477+
# The check executes `eth_getBalance` for this address at the latest finalized block.
478+
# Finalized block selection follows chain finality settings:
479+
# - `FinalityTagEnabled = true`: use `finalized` tag
480+
# - `FinalityTagEnabled = false`: use `latest - FinalityDepth`
481+
# The check is only active when `FinalizedStateCheckFailureThreshold > 0`.
482+
HistoricalBalanceCheckAddress = '0x0000000000000000000000000000000000000000' # Default
483+
# FinalizedStateCheckFailureThreshold is the number of consecutive failures of the finalized state availability check
484+
# before the node is marked as FinalizedStateNotAvailable.
485+
# Set to 0 to disable the check.
486+
FinalizedStateCheckFailureThreshold = 0 # Default
476487
# EnforceRepeatableRead defines if Core should only use RPCs whose most recently finalized block is greater or equal to
477488
# `highest finalized block - FinalizedBlockOffset`. In other words, exclude RPCs lagging on latest finalized
478489
# block.
@@ -532,6 +543,8 @@ ServiceUnavailable = '(: |^)service unavailable' # Example
532543
TooManyResults = '(: |^)too many results' # Example
533544
# MissingBlocks is a regex pattern to match an eth_getLogs error indicating the rpc server is permanently missing some blocks in the requested block range
534545
MissingBlocks = '(: |^)missing blocks' # Example
546+
# FinalizedStateUnavailable is a regex pattern to match errors indicating the RPC cannot serve historical state at the finalized block (e.g., pruned/non-archive node)
547+
FinalizedStateUnavailable = '(missing trie node|state not available|historical state unavailable)' # Example
535548

536549
[EVM.OCR]
537550
# ContractConfirmations sets `OCR.ContractConfirmations` for this EVM chain.

core/scripts/go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ require (
4949
github.com/smartcontractkit/chainlink-common/keystore v1.1.0
5050
github.com/smartcontractkit/chainlink-data-streams v0.1.13
5151
github.com/smartcontractkit/chainlink-deployments-framework v0.98.0
52-
github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260429160308-91a892a60171
52+
github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260429201611-18dd0c017bd0
5353
github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20260421142741-9c7fbaf7c828
5454
github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260420204255-a3f3bdd56877
5555
github.com/smartcontractkit/chainlink-protos/job-distributor v0.18.0
@@ -500,7 +500,7 @@ require (
500500
github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20260423135514-5b1a7565a99c // indirect
501501
github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20260423135514-5b1a7565a99c // indirect
502502
github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260423135514-5b1a7565a99c // indirect
503-
github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260423135514-5b1a7565a99c // indirect
503+
github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260429171842-de28b86b2338 // indirect
504504
github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4 // indirect
505505
github.com/smartcontractkit/chainlink-protos/chainlink-ccv/committee-verifier v0.0.0-20251211142334-5c3421fe2c8d // indirect
506506
github.com/smartcontractkit/chainlink-protos/chainlink-ccv/heartbeat v0.0.0-20260115142640-f6b99095c12e // indirect

core/scripts/go.sum

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/services/chainlink/config_test.go

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -726,19 +726,21 @@ func TestConfig_Marshal(t *testing.T) {
726726
},
727727

728728
NodePool: evmcfg.NodePool{
729-
PollFailureThreshold: ptr[uint32](5),
730-
PollSuccessThreshold: ptr[uint32](0),
731-
PollInterval: &minute,
732-
SelectionMode: &selectionMode,
733-
SyncThreshold: ptr[uint32](13),
734-
LeaseDuration: &zeroSeconds,
735-
NodeIsSyncingEnabled: ptr(true),
736-
FinalizedBlockPollInterval: &second,
737-
EnforceRepeatableRead: ptr(true),
738-
DeathDeclarationDelay: &minute,
739-
VerifyChainID: ptr(true),
740-
NewHeadsPollInterval: &zeroSeconds,
741-
ExternalRequestMaxResponseSize: ptr[uint32](10),
729+
PollFailureThreshold: ptr[uint32](5),
730+
PollSuccessThreshold: ptr[uint32](0),
731+
PollInterval: &minute,
732+
SelectionMode: &selectionMode,
733+
SyncThreshold: ptr[uint32](13),
734+
LeaseDuration: &zeroSeconds,
735+
NodeIsSyncingEnabled: ptr(true),
736+
FinalizedBlockPollInterval: &second,
737+
HistoricalBalanceCheckAddress: ptr(types.MustEIP55Address("0x0000000000000000000000000000000000000000")),
738+
EnforceRepeatableRead: ptr(true),
739+
DeathDeclarationDelay: &minute,
740+
VerifyChainID: ptr(true),
741+
NewHeadsPollInterval: &zeroSeconds,
742+
ExternalRequestMaxResponseSize: ptr[uint32](10),
743+
FinalizedStateCheckFailureThreshold: ptr[uint32](0),
742744
Errors: evmcfg.ClientErrors{
743745
NonceTooLow: ptr[string]("(: |^)nonce too low"),
744746
NonceTooHigh: ptr[string]("(: |^)nonce too high"),
@@ -756,6 +758,7 @@ func TestConfig_Marshal(t *testing.T) {
756758
ServiceUnavailable: ptr[string]("(: |^)service unavailable"),
757759
TooManyResults: ptr[string]("(: |^)too many results"),
758760
MissingBlocks: ptr[string]("(: |^)missing blocks"),
761+
FinalizedStateUnavailable: ptr[string]("(: |^)missing trie node"),
759762
},
760763
},
761764
OCR: evmcfg.OCR{
@@ -1181,6 +1184,8 @@ SyncThreshold = 13
11811184
LeaseDuration = '0s'
11821185
NodeIsSyncingEnabled = true
11831186
FinalizedBlockPollInterval = '1s'
1187+
HistoricalBalanceCheckAddress = '0x0000000000000000000000000000000000000000'
1188+
FinalizedStateCheckFailureThreshold = 0
11841189
EnforceRepeatableRead = true
11851190
DeathDeclarationDelay = '1m0s'
11861191
NewHeadsPollInterval = '0s'
@@ -1204,6 +1209,7 @@ Fatal = '(: |^)fatal'
12041209
ServiceUnavailable = '(: |^)service unavailable'
12051210
TooManyResults = '(: |^)too many results'
12061211
MissingBlocks = '(: |^)missing blocks'
1212+
FinalizedStateUnavailable = '(: |^)missing trie node'
12071213
12081214
[EVM.OCR]
12091215
ContractConfirmations = 11

core/services/chainlink/testdata/config-full.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,8 @@ SyncThreshold = 13
547547
LeaseDuration = '0s'
548548
NodeIsSyncingEnabled = true
549549
FinalizedBlockPollInterval = '1s'
550+
HistoricalBalanceCheckAddress = '0x0000000000000000000000000000000000000000'
551+
FinalizedStateCheckFailureThreshold = 0
550552
EnforceRepeatableRead = true
551553
DeathDeclarationDelay = '1m0s'
552554
NewHeadsPollInterval = '0s'
@@ -570,6 +572,7 @@ Fatal = '(: |^)fatal'
570572
ServiceUnavailable = '(: |^)service unavailable'
571573
TooManyResults = '(: |^)too many results'
572574
MissingBlocks = '(: |^)missing blocks'
575+
FinalizedStateUnavailable = '(: |^)missing trie node'
573576

574577
[EVM.OCR]
575578
ContractConfirmations = 11

core/services/chainlink/testdata/config-multi-chain-effective.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,8 @@ SyncThreshold = 5
488488
LeaseDuration = '0s'
489489
NodeIsSyncingEnabled = false
490490
FinalizedBlockPollInterval = '5s'
491+
HistoricalBalanceCheckAddress = '0x0000000000000000000000000000000000000000'
492+
FinalizedStateCheckFailureThreshold = 0
491493
EnforceRepeatableRead = true
492494
DeathDeclarationDelay = '1m0s'
493495
NewHeadsPollInterval = '0s'
@@ -613,6 +615,8 @@ SyncThreshold = 5
613615
LeaseDuration = '0s'
614616
NodeIsSyncingEnabled = false
615617
FinalizedBlockPollInterval = '5s'
618+
HistoricalBalanceCheckAddress = '0x0000000000000000000000000000000000000000'
619+
FinalizedStateCheckFailureThreshold = 0
616620
EnforceRepeatableRead = true
617621
DeathDeclarationDelay = '1m0s'
618622
NewHeadsPollInterval = '0s'
@@ -732,6 +736,8 @@ SyncThreshold = 10
732736
LeaseDuration = '0s'
733737
NodeIsSyncingEnabled = false
734738
FinalizedBlockPollInterval = '5s'
739+
HistoricalBalanceCheckAddress = '0x0000000000000000000000000000000000000000'
740+
FinalizedStateCheckFailureThreshold = 0
735741
EnforceRepeatableRead = true
736742
DeathDeclarationDelay = '1m0s'
737743
NewHeadsPollInterval = '0s'

core/web/resolver/testdata/config-full.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,8 @@ SyncThreshold = 13
523523
LeaseDuration = '0s'
524524
NodeIsSyncingEnabled = false
525525
FinalizedBlockPollInterval = '5s'
526+
HistoricalBalanceCheckAddress = '0x0000000000000000000000000000000000000000'
527+
FinalizedStateCheckFailureThreshold = 0
526528
EnforceRepeatableRead = true
527529
DeathDeclarationDelay = '1m0s'
528530
NewHeadsPollInterval = '0s'
@@ -546,6 +548,7 @@ Fatal = '(: |^)fatal'
546548
ServiceUnavailable = '(: |^)service unavailable'
547549
TooManyResults = '(: |^)too many results'
548550
MissingBlocks = '(: |^)missing blocks'
551+
FinalizedStateUnavailable = '(: |^)missing trie node'
549552

550553
[EVM.OCR]
551554
ContractConfirmations = 11

core/web/resolver/testdata/config-multi-chain-effective.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,8 @@ SyncThreshold = 5
488488
LeaseDuration = '0s'
489489
NodeIsSyncingEnabled = false
490490
FinalizedBlockPollInterval = '5s'
491+
HistoricalBalanceCheckAddress = '0x0000000000000000000000000000000000000000'
492+
FinalizedStateCheckFailureThreshold = 0
491493
EnforceRepeatableRead = true
492494
DeathDeclarationDelay = '1m0s'
493495
NewHeadsPollInterval = '0s'
@@ -613,6 +615,8 @@ SyncThreshold = 5
613615
LeaseDuration = '0s'
614616
NodeIsSyncingEnabled = false
615617
FinalizedBlockPollInterval = '5s'
618+
HistoricalBalanceCheckAddress = '0x0000000000000000000000000000000000000000'
619+
FinalizedStateCheckFailureThreshold = 0
616620
EnforceRepeatableRead = true
617621
DeathDeclarationDelay = '1m0s'
618622
NewHeadsPollInterval = '0s'
@@ -732,6 +736,8 @@ SyncThreshold = 10
732736
LeaseDuration = '0s'
733737
NodeIsSyncingEnabled = false
734738
FinalizedBlockPollInterval = '5s'
739+
HistoricalBalanceCheckAddress = '0x0000000000000000000000000000000000000000'
740+
FinalizedStateCheckFailureThreshold = 0
735741
EnforceRepeatableRead = true
736742
DeathDeclarationDelay = '1m0s'
737743
NewHeadsPollInterval = '0s'

deployment/go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ require (
4545
github.com/smartcontractkit/chainlink-common v0.11.2-0.20260429111145-3667714e0b37
4646
github.com/smartcontractkit/chainlink-common/keystore v1.1.0
4747
github.com/smartcontractkit/chainlink-deployments-framework v0.98.0
48-
github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260429160308-91a892a60171
48+
github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260429201611-18dd0c017bd0
4949
github.com/smartcontractkit/chainlink-evm/contracts/cre/gobindings v0.0.0-20260403151002-2c91155b5501
5050
github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20260421142741-9c7fbaf7c828
5151
github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260420204255-a3f3bdd56877
@@ -431,7 +431,7 @@ require (
431431
github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20260423135514-5b1a7565a99c // indirect
432432
github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20260423135514-5b1a7565a99c // indirect
433433
github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260423135514-5b1a7565a99c // indirect
434-
github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260423135514-5b1a7565a99c // indirect
434+
github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260429171842-de28b86b2338 // indirect
435435
github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4 // indirect
436436
github.com/smartcontractkit/chainlink-protos/chainlink-ccv/committee-verifier v0.0.0-20251211142334-5c3421fe2c8d // indirect
437437
github.com/smartcontractkit/chainlink-protos/chainlink-ccv/heartbeat v0.0.0-20260115142640-f6b99095c12e // indirect

0 commit comments

Comments
 (0)