From 452781058e08f78db14f6ebb8a8c3d16fb517c31 Mon Sep 17 00:00:00 2001 From: chainchad <96362174+chainchad@users.noreply.github.com> Date: Tue, 22 Oct 2024 14:49:36 -0400 Subject: [PATCH 1/7] Bump version and update CHANGELOG fore core v2.18.0 Signed-off-by: chainchad <96362174+chainchad@users.noreply.github.com> --- .changeset/angry-fishes-ring.md | 8 -- .changeset/brave-ads-explode.md | 9 -- .changeset/chilled-months-bow.md | 5 -- .changeset/chilled-plants-clap.md | 5 -- .changeset/chilly-crews-retire.md | 5 -- .changeset/cool-owls-laugh.md | 5 ++ .changeset/cuddly-colts-speak.md | 5 -- .changeset/curly-baboons-enjoy.md | 5 -- .changeset/curvy-eyes-own.md | 5 -- .changeset/early-rules-yell.md | 5 -- .changeset/eighty-bulldogs-smile.md | 5 -- .changeset/eleven-olives-accept.md | 5 -- .changeset/empty-bees-fix.md | 5 -- .changeset/empty-pianos-attack.md | 5 -- .changeset/fair-swans-accept.md | 5 -- .changeset/few-pillows-yawn.md | 5 -- .changeset/fifty-pillows-peel.md | 5 -- .changeset/fifty-squids-juggle.md | 5 -- .changeset/five-chicken-talk.md | 5 -- .changeset/flat-horses-argue.md | 5 -- .changeset/flat-spiders-sing.md | 5 -- .changeset/forty-lizards-camp.md | 5 -- .changeset/four-buses-invite.md | 5 -- .changeset/fresh-falcons-cheer.md | 5 -- .changeset/giant-pillows-sort.md | 5 -- .changeset/gorgeous-wolves-collect.md | 5 -- .changeset/healthy-flowers-nail.md | 5 -- .changeset/honest-cameras-cross.md | 5 -- .changeset/khaki-pants-melt.md | 5 -- .changeset/late-pillows-shake.md | 5 -- .changeset/lemon-apples-explain.md | 5 -- .changeset/metal-eels-check.md | 5 -- .changeset/metal-meals-mix.md | 5 -- .changeset/metal-pots-lie.md | 5 -- .changeset/moody-rules-agree.md | 8 -- .changeset/moody-trains-grow.md | 5 -- .changeset/neat-numbers-lay.md | 5 -- .changeset/nervous-books-push.md | 5 -- .changeset/nice-cows-yell.md | 5 -- .changeset/ninety-feet-change.md | 5 -- .changeset/old-humans-watch.md | 5 -- .changeset/olive-bugs-relax.md | 5 -- .changeset/orange-feet-share.md | 25 ------ .changeset/orange-humans-laugh.md | 5 -- .changeset/polite-tips-sneeze.md | 5 -- .changeset/pretty-worms-smell.md | 5 -- .changeset/real-doors-visit.md | 6 -- .changeset/red-jobs-marry.md | 5 -- .changeset/rude-spies-serve.md | 5 -- .changeset/seven-forks-hug.md | 5 -- .changeset/silent-foxes-battle.md | 5 -- .changeset/silly-lies-boil.md | 8 -- .changeset/silly-starfishes-destroy.md | 5 -- .changeset/silver-pens-float.md | 5 -- .changeset/six-frogs-juggle.md | 5 -- .changeset/smooth-queens-dance.md | 5 -- .changeset/stale-pugs-sin.md | 5 -- .changeset/ten-rats-tie.md | 5 -- .changeset/three-otters-drum.md | 5 -- .changeset/tidy-apricots-care.md | 5 -- .changeset/tough-boats-shop.md | 5 -- .changeset/two-snails-mix.md | 5 -- .changeset/wise-pandas-join.md | 5 -- CHANGELOG.md | 109 +++++++++++++++++++++++++ package.json | 2 +- 65 files changed, 115 insertions(+), 345 deletions(-) delete mode 100644 .changeset/angry-fishes-ring.md delete mode 100644 .changeset/brave-ads-explode.md delete mode 100644 .changeset/chilled-months-bow.md delete mode 100644 .changeset/chilled-plants-clap.md delete mode 100644 .changeset/chilly-crews-retire.md create mode 100644 .changeset/cool-owls-laugh.md delete mode 100644 .changeset/cuddly-colts-speak.md delete mode 100644 .changeset/curly-baboons-enjoy.md delete mode 100644 .changeset/curvy-eyes-own.md delete mode 100644 .changeset/early-rules-yell.md delete mode 100644 .changeset/eighty-bulldogs-smile.md delete mode 100644 .changeset/eleven-olives-accept.md delete mode 100644 .changeset/empty-bees-fix.md delete mode 100644 .changeset/empty-pianos-attack.md delete mode 100644 .changeset/fair-swans-accept.md delete mode 100644 .changeset/few-pillows-yawn.md delete mode 100644 .changeset/fifty-pillows-peel.md delete mode 100644 .changeset/fifty-squids-juggle.md delete mode 100644 .changeset/five-chicken-talk.md delete mode 100644 .changeset/flat-horses-argue.md delete mode 100644 .changeset/flat-spiders-sing.md delete mode 100644 .changeset/forty-lizards-camp.md delete mode 100644 .changeset/four-buses-invite.md delete mode 100644 .changeset/fresh-falcons-cheer.md delete mode 100644 .changeset/giant-pillows-sort.md delete mode 100644 .changeset/gorgeous-wolves-collect.md delete mode 100644 .changeset/healthy-flowers-nail.md delete mode 100644 .changeset/honest-cameras-cross.md delete mode 100644 .changeset/khaki-pants-melt.md delete mode 100644 .changeset/late-pillows-shake.md delete mode 100644 .changeset/lemon-apples-explain.md delete mode 100644 .changeset/metal-eels-check.md delete mode 100644 .changeset/metal-meals-mix.md delete mode 100644 .changeset/metal-pots-lie.md delete mode 100644 .changeset/moody-rules-agree.md delete mode 100644 .changeset/moody-trains-grow.md delete mode 100644 .changeset/neat-numbers-lay.md delete mode 100644 .changeset/nervous-books-push.md delete mode 100644 .changeset/nice-cows-yell.md delete mode 100644 .changeset/ninety-feet-change.md delete mode 100644 .changeset/old-humans-watch.md delete mode 100644 .changeset/olive-bugs-relax.md delete mode 100644 .changeset/orange-feet-share.md delete mode 100644 .changeset/orange-humans-laugh.md delete mode 100644 .changeset/polite-tips-sneeze.md delete mode 100644 .changeset/pretty-worms-smell.md delete mode 100644 .changeset/real-doors-visit.md delete mode 100644 .changeset/red-jobs-marry.md delete mode 100644 .changeset/rude-spies-serve.md delete mode 100644 .changeset/seven-forks-hug.md delete mode 100644 .changeset/silent-foxes-battle.md delete mode 100644 .changeset/silly-lies-boil.md delete mode 100644 .changeset/silly-starfishes-destroy.md delete mode 100644 .changeset/silver-pens-float.md delete mode 100644 .changeset/six-frogs-juggle.md delete mode 100644 .changeset/smooth-queens-dance.md delete mode 100644 .changeset/stale-pugs-sin.md delete mode 100644 .changeset/ten-rats-tie.md delete mode 100644 .changeset/three-otters-drum.md delete mode 100644 .changeset/tidy-apricots-care.md delete mode 100644 .changeset/tough-boats-shop.md delete mode 100644 .changeset/two-snails-mix.md delete mode 100644 .changeset/wise-pandas-join.md diff --git a/.changeset/angry-fishes-ring.md b/.changeset/angry-fishes-ring.md deleted file mode 100644 index 86671967372..00000000000 --- a/.changeset/angry-fishes-ring.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"chainlink": minor ---- - -#internal add getNextDonId() and getNodes(bytes32[] calldata p2pIds) in CapabilitiesRegistry and define interface for node info - - -PR issue: CCIP-3569 \ No newline at end of file diff --git a/.changeset/brave-ads-explode.md b/.changeset/brave-ads-explode.md deleted file mode 100644 index 4be608e2d1d..00000000000 --- a/.changeset/brave-ads-explode.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"chainlink": patch ---- - -Remove finality depth as the default value for minConfirmation for tx jobs. -Update the sql query for fetching pending callback transactions: -if minConfirmation is not null, we check difference if the current block - tx block > minConfirmation -else we check if the tx block is <= finalizedBlock -#updated diff --git a/.changeset/chilled-months-bow.md b/.changeset/chilled-months-bow.md deleted file mode 100644 index d3bbf7f97e3..00000000000 --- a/.changeset/chilled-months-bow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#added oracle support in standard capabilities diff --git a/.changeset/chilled-plants-clap.md b/.changeset/chilled-plants-clap.md deleted file mode 100644 index 2a23b0960f1..00000000000 --- a/.changeset/chilled-plants-clap.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -The findBroadcastedAttempts in detectStuckTransactionsHeuristic can returns uninitialized struct that potentially cause nil pointer error. Changed the return type of findBroadcastedAttempts to be pointers and added nil pointer check. #bugfix diff --git a/.changeset/chilly-crews-retire.md b/.changeset/chilly-crews-retire.md deleted file mode 100644 index 28b531a9ddb..00000000000 --- a/.changeset/chilly-crews-retire.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#added log-event-trigger LOOPP capability, using ChainReader diff --git a/.changeset/cool-owls-laugh.md b/.changeset/cool-owls-laugh.md new file mode 100644 index 00000000000..a3667ed20e0 --- /dev/null +++ b/.changeset/cool-owls-laugh.md @@ -0,0 +1,5 @@ +--- +"chainlink": minor +--- + +Bump to start the next version diff --git a/.changeset/cuddly-colts-speak.md b/.changeset/cuddly-colts-speak.md deleted file mode 100644 index ab16cc83123..00000000000 --- a/.changeset/cuddly-colts-speak.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Fix for Mercury transmitter decoding reports of a different codec version #internal diff --git a/.changeset/curly-baboons-enjoy.md b/.changeset/curly-baboons-enjoy.md deleted file mode 100644 index 440f394d23b..00000000000 --- a/.changeset/curly-baboons-enjoy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -Added the compute unit limit estimation feature for the Solana TXM #added diff --git a/.changeset/curvy-eyes-own.md b/.changeset/curvy-eyes-own.md deleted file mode 100644 index 30e72a7cf57..00000000000 --- a/.changeset/curvy-eyes-own.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -Update dynamic fee types to align with geth #internal diff --git a/.changeset/early-rules-yell.md b/.changeset/early-rules-yell.md deleted file mode 100644 index 718f48063e8..00000000000 --- a/.changeset/early-rules-yell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#updated support aptos creation in chain config UI diff --git a/.changeset/eighty-bulldogs-smile.md b/.changeset/eighty-bulldogs-smile.md deleted file mode 100644 index c91d0cf58b7..00000000000 --- a/.changeset/eighty-bulldogs-smile.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#added Use ApplyDefaultsAndValidate diff --git a/.changeset/eleven-olives-accept.md b/.changeset/eleven-olives-accept.md deleted file mode 100644 index c06cd65c9fe..00000000000 --- a/.changeset/eleven-olives-accept.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -#added #fix add chain fee tests to initial deploy diff --git a/.changeset/empty-bees-fix.md b/.changeset/empty-bees-fix.md deleted file mode 100644 index e76ee621253..00000000000 --- a/.changeset/empty-bees-fix.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#wip implement gateway handler that forwards outgoing request from http target capability. introduce gateway http client diff --git a/.changeset/empty-pianos-attack.md b/.changeset/empty-pianos-attack.md deleted file mode 100644 index 5ec420b14ca..00000000000 --- a/.changeset/empty-pianos-attack.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -#internal Update gethwrapper for FeeQuoter, Internal.sol comment and byte calc update diff --git a/.changeset/fair-swans-accept.md b/.changeset/fair-swans-accept.md deleted file mode 100644 index dd834aa2d80..00000000000 --- a/.changeset/fair-swans-accept.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#internal Add support for data word detail manual input in Contract Reader for searching through EVM log event data with Contract Reader QueryKey ValueComparators. diff --git a/.changeset/few-pillows-yawn.md b/.changeset/few-pillows-yawn.md deleted file mode 100644 index ada48200d53..00000000000 --- a/.changeset/few-pillows-yawn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#added Add RMNRemote in the chain reader definition diff --git a/.changeset/fifty-pillows-peel.md b/.changeset/fifty-pillows-peel.md deleted file mode 100644 index 711a8869aa4..00000000000 --- a/.changeset/fifty-pillows-peel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Added `EVM.HeadTracker.PersistenceEnabled` config option to disable persistence for HeadTracker. #added diff --git a/.changeset/fifty-squids-juggle.md b/.changeset/fifty-squids-juggle.md deleted file mode 100644 index 5c5530bf03c..00000000000 --- a/.changeset/fifty-squids-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -FHE empty reward fix #internal diff --git a/.changeset/five-chicken-talk.md b/.changeset/five-chicken-talk.md deleted file mode 100644 index 5f93b29364b..00000000000 --- a/.changeset/five-chicken-talk.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#updated introduce network field on chain resolver diff --git a/.changeset/flat-horses-argue.md b/.changeset/flat-horses-argue.md deleted file mode 100644 index 08f151cd5aa..00000000000 --- a/.changeset/flat-horses-argue.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#added LogPoller MaxLogsKept feature: recency count-based instead of time based log retention diff --git a/.changeset/flat-spiders-sing.md b/.changeset/flat-spiders-sing.md deleted file mode 100644 index 6fba341b191..00000000000 --- a/.changeset/flat-spiders-sing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Set chainType in chain client #internal diff --git a/.changeset/forty-lizards-camp.md b/.changeset/forty-lizards-camp.md deleted file mode 100644 index 3e0a5a59b0e..00000000000 --- a/.changeset/forty-lizards-camp.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Enable rotating encryptionPublicKey in CapabilitiesRegistry contract diff --git a/.changeset/four-buses-invite.md b/.changeset/four-buses-invite.md deleted file mode 100644 index 2f657dd4503..00000000000 --- a/.changeset/four-buses-invite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#added Introduce aptosKeys Graphql query diff --git a/.changeset/fresh-falcons-cheer.md b/.changeset/fresh-falcons-cheer.md deleted file mode 100644 index 505582cc4fd..00000000000 --- a/.changeset/fresh-falcons-cheer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#added solana: compute unit limit configuration and transaction instruction diff --git a/.changeset/giant-pillows-sort.md b/.changeset/giant-pillows-sort.md deleted file mode 100644 index a2b44319ecb..00000000000 --- a/.changeset/giant-pillows-sort.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#added Add prometheus metrics exposing health of telemetry client diff --git a/.changeset/gorgeous-wolves-collect.md b/.changeset/gorgeous-wolves-collect.md deleted file mode 100644 index 62b11100151..00000000000 --- a/.changeset/gorgeous-wolves-collect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Add DA oracle type to arbitrum and zksync configs #bugfix diff --git a/.changeset/healthy-flowers-nail.md b/.changeset/healthy-flowers-nail.md deleted file mode 100644 index aefc463472d..00000000000 --- a/.changeset/healthy-flowers-nail.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -Return ErrConnectivity error when halting bumping #internal diff --git a/.changeset/honest-cameras-cross.md b/.changeset/honest-cameras-cross.md deleted file mode 100644 index 1da50c97bd5..00000000000 --- a/.changeset/honest-cameras-cross.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Implementing evm specific token data encoder for CCIP #internal diff --git a/.changeset/khaki-pants-melt.md b/.changeset/khaki-pants-melt.md deleted file mode 100644 index 133fd480f56..00000000000 --- a/.changeset/khaki-pants-melt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -#updated Workflows Engine loop refactored diff --git a/.changeset/late-pillows-shake.md b/.changeset/late-pillows-shake.md deleted file mode 100644 index f27f09519db..00000000000 --- a/.changeset/late-pillows-shake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Refactor OP oracle to accept generic DA oracle config #wip diff --git a/.changeset/lemon-apples-explain.md b/.changeset/lemon-apples-explain.md deleted file mode 100644 index 75f2b874fc4..00000000000 --- a/.changeset/lemon-apples-explain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -#internal update ccip chainreader config. diff --git a/.changeset/metal-eels-check.md b/.changeset/metal-eels-check.md deleted file mode 100644 index 387eb51fc6d..00000000000 --- a/.changeset/metal-eels-check.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -#updated Consume Feeds Manager WSRPC protos from Chainlink Protos Repository. diff --git a/.changeset/metal-meals-mix.md b/.changeset/metal-meals-mix.md deleted file mode 100644 index 66ebcec9982..00000000000 --- a/.changeset/metal-meals-mix.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Adjustments for usdc reader tests #internal diff --git a/.changeset/metal-pots-lie.md b/.changeset/metal-pots-lie.md deleted file mode 100644 index bfa498cd4ac..00000000000 --- a/.changeset/metal-pots-lie.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Registering USDC/CCTP events in the ChainReader during oracle creation #internal diff --git a/.changeset/moody-rules-agree.md b/.changeset/moody-rules-agree.md deleted file mode 100644 index ef1f3bcaf62..00000000000 --- a/.changeset/moody-rules-agree.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"chainlink": patch ---- - -- register polling subscription to avoid subscription leaking when rpc client gets closed. -- add a temporary special treatment for SubscribeNewHead before we replace it with SubscribeToHeads. Add a goroutine that forwards new head from poller to caller channel. -- fix a deadlock in poller, by using a new lock for subs slice in rpc client. -#bugfix diff --git a/.changeset/moody-trains-grow.md b/.changeset/moody-trains-grow.md deleted file mode 100644 index 304e91c1664..00000000000 --- a/.changeset/moody-trains-grow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -#added graceful shutdown for ccip oracles diff --git a/.changeset/neat-numbers-lay.md b/.changeset/neat-numbers-lay.md deleted file mode 100644 index 69276e84f68..00000000000 --- a/.changeset/neat-numbers-lay.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#removed Removing unreferenced unused files. diff --git a/.changeset/nervous-books-push.md b/.changeset/nervous-books-push.md deleted file mode 100644 index b0f797344e3..00000000000 --- a/.changeset/nervous-books-push.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#internal Updated QueryKey to be able to do advanced queries on contract event data words diff --git a/.changeset/nice-cows-yell.md b/.changeset/nice-cows-yell.md deleted file mode 100644 index 1e7f045b476..00000000000 --- a/.changeset/nice-cows-yell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -#updated Refactors store_db diff --git a/.changeset/ninety-feet-change.md b/.changeset/ninety-feet-change.md deleted file mode 100644 index 2c4cea72106..00000000000 --- a/.changeset/ninety-feet-change.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -#updated default config values for FinalityTagEnabled to match CCIP configs diff --git a/.changeset/old-humans-watch.md b/.changeset/old-humans-watch.md deleted file mode 100644 index e58dedcd368..00000000000 --- a/.changeset/old-humans-watch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -Fix TXM flakey test #internal diff --git a/.changeset/olive-bugs-relax.md b/.changeset/olive-bugs-relax.md deleted file mode 100644 index 6e681000358..00000000000 --- a/.changeset/olive-bugs-relax.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -add address bytes to string modifier to chainReader. #internal diff --git a/.changeset/orange-feet-share.md b/.changeset/orange-feet-share.md deleted file mode 100644 index 9583bce3d64..00000000000 --- a/.changeset/orange-feet-share.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -"chainlink": minor ---- - -Implemented new chain agnostic MultiNode design along with the corresponding EVM implementation. The chain agnostic components enable Multinode to be integrated with Solana and other non-EVM chains. Previously the Multinode was coupled with EVM specific actions, and was called to execute these actions direclty. With this change, the MultiNode's responsibility has been simplified to focus on RPC selection along with performing health checks. Chain specific actions will instead be executed on the RPC directly after being selected by MultiNode. The Chain Agnostic MultiNode provides improved reliability and metrics for all chain integrations using it. - -These are following main components: -Node: Common component which wraps an RPC with state information, health checks, and an alive loop to handle state changes along with maintaining chain information. -RPCClient: Chain-specific RPC wrapper which implements required interface for MultiNode along with any chain-specific functionality needed. -MultiNode: Perform RPCClient selection and performs health checks on all RPCs. -TransactionSender: Chain agnostic component which broadcasts transactions to all healthy RPCs and aggregates results. A chain-specific error classifier must be implemented. - -MultiNode picks the "best" RPC based on one of the configurable criteria: -- Priority defined in the config. -- Highest latest block. -- Round-robin within the same priority level (or using other configurable selection algorithms) - -Benefits of Chain Agnostic MultiNode: - Reliability: Improved RPC reliability scaleable to all chains - Maintainability: Can apply changes across all chain integrations through the use of common code - Extendability: Can add new health checks, RPC selection and ranking algorithms - Integration Speed: Much faster to integrate MultiNode with new chains - Reduced Generics: Significantly less bulky code! - -#updated #changed #internal diff --git a/.changeset/orange-humans-laugh.md b/.changeset/orange-humans-laugh.md deleted file mode 100644 index b9f8fa74f54..00000000000 --- a/.changeset/orange-humans-laugh.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -Support Zircuit fraud transactions detection and zk overflow detection #added diff --git a/.changeset/polite-tips-sneeze.md b/.changeset/polite-tips-sneeze.md deleted file mode 100644 index 4dc0e000046..00000000000 --- a/.changeset/polite-tips-sneeze.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#added keystone contract deployment diff --git a/.changeset/pretty-worms-smell.md b/.changeset/pretty-worms-smell.md deleted file mode 100644 index 9633de09502..00000000000 --- a/.changeset/pretty-worms-smell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Added a custom client error message for Mantle to capture NonceTooLow error. #added diff --git a/.changeset/real-doors-visit.md b/.changeset/real-doors-visit.md deleted file mode 100644 index 39fa064c3a8..00000000000 --- a/.changeset/real-doors-visit.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"chainlink": patch ---- - -Implement blue-green Configurator contract and retirement report handover for LLO -#added diff --git a/.changeset/red-jobs-marry.md b/.changeset/red-jobs-marry.md deleted file mode 100644 index d66ad019027..00000000000 --- a/.changeset/red-jobs-marry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Rename DA oracle consts to be more descriptive #wip diff --git a/.changeset/rude-spies-serve.md b/.changeset/rude-spies-serve.md deleted file mode 100644 index d861b5cf6ba..00000000000 --- a/.changeset/rude-spies-serve.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -#added new config field to FeeQuoter diff --git a/.changeset/seven-forks-hug.md b/.changeset/seven-forks-hug.md deleted file mode 100644 index 5ddcbfe3fec..00000000000 --- a/.changeset/seven-forks-hug.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -Add encryptionPublicKey to CapabilitiesRegistry.sol diff --git a/.changeset/silent-foxes-battle.md b/.changeset/silent-foxes-battle.md deleted file mode 100644 index f3f4b48962c..00000000000 --- a/.changeset/silent-foxes-battle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Bump chainlink-solana and fix tests #internal diff --git a/.changeset/silly-lies-boil.md b/.changeset/silly-lies-boil.md deleted file mode 100644 index b2a5084a36c..00000000000 --- a/.changeset/silly-lies-boil.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"chainlink": minor ---- - -Make websocket URL `WSURL` for `EVM.Nodes` optional, and apply logic so that: -* If WS URL was not provided, SubscribeFilterLogs should fail with an explicit error -* If WS URL was not provided LogBroadcaster should be disabled -#nops diff --git a/.changeset/silly-starfishes-destroy.md b/.changeset/silly-starfishes-destroy.md deleted file mode 100644 index ebb552fdca2..00000000000 --- a/.changeset/silly-starfishes-destroy.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -#internal ccip contract reader config. diff --git a/.changeset/silver-pens-float.md b/.changeset/silver-pens-float.md deleted file mode 100644 index e8a135b9de4..00000000000 --- a/.changeset/silver-pens-float.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#internal: Adding test for rmn home reader diff --git a/.changeset/six-frogs-juggle.md b/.changeset/six-frogs-juggle.md deleted file mode 100644 index 2b960c4be0f..00000000000 --- a/.changeset/six-frogs-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#added HTTP target capability and gateway connector handler diff --git a/.changeset/smooth-queens-dance.md b/.changeset/smooth-queens-dance.md deleted file mode 100644 index 861c5284984..00000000000 --- a/.changeset/smooth-queens-dance.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -Add compute capability #internal diff --git a/.changeset/stale-pugs-sin.md b/.changeset/stale-pugs-sin.md deleted file mode 100644 index 58ebd2d7acd..00000000000 --- a/.changeset/stale-pugs-sin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#added introduce cosmosKeys and starknetKeys graphql query diff --git a/.changeset/ten-rats-tie.md b/.changeset/ten-rats-tie.md deleted file mode 100644 index f97594914cd..00000000000 --- a/.changeset/ten-rats-tie.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Fix testWSServer issue causing panic in testing #internal diff --git a/.changeset/three-otters-drum.md b/.changeset/three-otters-drum.md deleted file mode 100644 index c3888df8580..00000000000 --- a/.changeset/three-otters-drum.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -Hedera chain type: broadcast transactions only to a single healthy RPC instead of all healthy RPCs to avoid redundant relay fees. #changed diff --git a/.changeset/tidy-apricots-care.md b/.changeset/tidy-apricots-care.md deleted file mode 100644 index 60429107f11..00000000000 --- a/.changeset/tidy-apricots-care.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -#added Pass the home chain selector to the commit plugin factory diff --git a/.changeset/tough-boats-shop.md b/.changeset/tough-boats-shop.md deleted file mode 100644 index 45a16fc965a..00000000000 --- a/.changeset/tough-boats-shop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -start of next release diff --git a/.changeset/two-snails-mix.md b/.changeset/two-snails-mix.md deleted file mode 100644 index 0fb49dce9b2..00000000000 --- a/.changeset/two-snails-mix.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -Rename SequenceAt to NonceAt #internal diff --git a/.changeset/wise-pandas-join.md b/.changeset/wise-pandas-join.md deleted file mode 100644 index 7b375b0895d..00000000000 --- a/.changeset/wise-pandas-join.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": minor ---- - -Fix BHE PriceMax bug #bugfix diff --git a/CHANGELOG.md b/CHANGELOG.md index c1a09677ba7..52b5cd967ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,114 @@ # Changelog Chainlink Core +## 2.18.0 - UNRELEASED + +### Minor Changes + +- [#14696](https://github.com/smartcontractkit/chainlink/pull/14696) [`072bfb667a`](https://github.com/smartcontractkit/chainlink/commit/072bfb667a4e1f7cc0c874409ebfe6ef7f7b6cbe) Thanks [@0xsuryansh](https://github.com/0xsuryansh)! - #internal add getNextDonId() and getNodes(bytes32[] calldata p2pIds) in CapabilitiesRegistry and define interface for node info + + PR issue: CCIP-3569 + +- [#14305](https://github.com/smartcontractkit/chainlink/pull/14305) [`5ca0d1f19f`](https://github.com/smartcontractkit/chainlink/commit/5ca0d1f19f90c7b42c3cb1ae7b6b860802c92f64) Thanks [@DeividasK](https://github.com/DeividasK)! - #added oracle support in standard capabilities +- [#14308](https://github.com/smartcontractkit/chainlink/pull/14308) [`3e9e058da4`](https://github.com/smartcontractkit/chainlink/commit/3e9e058da4f2ba4b51286d4f05aa7efcba179e79) Thanks [@kidambisrinivas](https://github.com/kidambisrinivas)! - #added log-event-trigger LOOPP capability, using ChainReader +- [#14741](https://github.com/smartcontractkit/chainlink/pull/14741) [`89fcfea8a4`](https://github.com/smartcontractkit/chainlink/commit/89fcfea8a42f67a592cb1187538f9b3a9791b58f) Thanks [@amit-momin](https://github.com/amit-momin)! - Added the compute unit limit estimation feature for the Solana TXM #added +- [#14602](https://github.com/smartcontractkit/chainlink/pull/14602) [`002296d9db`](https://github.com/smartcontractkit/chainlink/commit/002296d9dbbcb356d6f66d5e274b18bfb16681be) Thanks [@dimriou](https://github.com/dimriou)! - Update dynamic fee types to align with geth #internal +- [#14765](https://github.com/smartcontractkit/chainlink/pull/14765) [`ca31213970`](https://github.com/smartcontractkit/chainlink/commit/ca31213970eac30d46ffbb0e6551e12fc31ce7e5) Thanks [@graham-chainlink](https://github.com/graham-chainlink)! - #updated support aptos creation in chain config UI +- [#14651](https://github.com/smartcontractkit/chainlink/pull/14651) [`8ca41fc8f7`](https://github.com/smartcontractkit/chainlink/commit/8ca41fc8f722accfccccb4b1778db2df8fef5437) Thanks [@0xnogo](https://github.com/0xnogo)! - #added Use ApplyDefaultsAndValidate +- [#14536](https://github.com/smartcontractkit/chainlink/pull/14536) [`4b977021ed`](https://github.com/smartcontractkit/chainlink/commit/4b977021ed2150678bbe497afeb1312aa64e62cf) Thanks [@jinhoonbang](https://github.com/jinhoonbang)! - #wip implement gateway handler that forwards outgoing request from http target capability. introduce gateway http client +- [#14622](https://github.com/smartcontractkit/chainlink/pull/14622) [`c654322ace`](https://github.com/smartcontractkit/chainlink/commit/c654322acea7da8e6bd84a8a045690002f1f172d) Thanks [@ilija42](https://github.com/ilija42)! - #internal Add support for data word detail manual input in Contract Reader for searching through EVM log event data with Contract Reader QueryKey ValueComparators. +- [#14588](https://github.com/smartcontractkit/chainlink/pull/14588) [`fc1fefcba7`](https://github.com/smartcontractkit/chainlink/commit/fc1fefcba7a09699dade771d992a388cf71e82b4) Thanks [@0xnogo](https://github.com/0xnogo)! - #added Add RMNRemote in the chain reader definition +- [#14857](https://github.com/smartcontractkit/chainlink/pull/14857) [`b8ae4adcfc`](https://github.com/smartcontractkit/chainlink/commit/b8ae4adcfc1ab6b92f287a2c2a7051b140782a56) Thanks [@dimriou](https://github.com/dimriou)! - FHE empty reward fix #internal +- [#14718](https://github.com/smartcontractkit/chainlink/pull/14718) [`16499e5cb7`](https://github.com/smartcontractkit/chainlink/commit/16499e5cb79e3ccba654070d13d9af7be3d33a07) Thanks [@graham-chainlink](https://github.com/graham-chainlink)! - #updated introduce network field on chain resolver +- [#14574](https://github.com/smartcontractkit/chainlink/pull/14574) [`accbf0fe96`](https://github.com/smartcontractkit/chainlink/commit/accbf0fe9647f36bab9016f75b48a9338546ae7d) Thanks [@reductionista](https://github.com/reductionista)! - #added LogPoller MaxLogsKept feature: recency count-based instead of time based log retention +- [#14729](https://github.com/smartcontractkit/chainlink/pull/14729) [`770d2bc9b0`](https://github.com/smartcontractkit/chainlink/commit/770d2bc9b097b78b6396d7912eb64ddc2950afa6) Thanks [@graham-chainlink](https://github.com/graham-chainlink)! - #added Introduce aptosKeys Graphql query +- [#14576](https://github.com/smartcontractkit/chainlink/pull/14576) [`0e35bc794c`](https://github.com/smartcontractkit/chainlink/commit/0e35bc794ce666f13fb24a6918f7617928c17235) Thanks [@aalu1418](https://github.com/aalu1418)! - #added solana: compute unit limit configuration and transaction instruction +- [#14661](https://github.com/smartcontractkit/chainlink/pull/14661) [`9641ea29da`](https://github.com/smartcontractkit/chainlink/commit/9641ea29daa9da459975afaddc78120f5b15d38c) Thanks [@emate](https://github.com/emate)! - #added Add prometheus metrics exposing health of telemetry client +- [#14702](https://github.com/smartcontractkit/chainlink/pull/14702) [`ca9fb64356`](https://github.com/smartcontractkit/chainlink/commit/ca9fb64356735a4d4b6b6c1914256e74cd127d4b) Thanks [@dimriou](https://github.com/dimriou)! - Return ErrConnectivity error when halting bumping #internal +- [#14706](https://github.com/smartcontractkit/chainlink/pull/14706) [`f7abc3eb0e`](https://github.com/smartcontractkit/chainlink/commit/f7abc3eb0e9c6525a2d470205f730c888c8b929a) Thanks [@pavel-raykov](https://github.com/pavel-raykov)! - #removed Removing unreferenced unused files. +- [#14511](https://github.com/smartcontractkit/chainlink/pull/14511) [`8fa9a67dfc`](https://github.com/smartcontractkit/chainlink/commit/8fa9a67dfc130feab290860f0b7bf860ddc86bb3) Thanks [@silaslenihan](https://github.com/silaslenihan)! - #internal Updated QueryKey to be able to do advanced queries on contract event data words +- [#14697](https://github.com/smartcontractkit/chainlink/pull/14697) [`4c3e7ec8c3`](https://github.com/smartcontractkit/chainlink/commit/4c3e7ec8c3b334a13be13780dbfe19dc1f2eacd1) Thanks [@dimriou](https://github.com/dimriou)! - Fix TXM flakey test #internal +- [#14620](https://github.com/smartcontractkit/chainlink/pull/14620) [`09145baa9b`](https://github.com/smartcontractkit/chainlink/commit/09145baa9bb37103605cbebaad87c5059d1d454b) Thanks [@Farber98](https://github.com/Farber98)! - add address bytes to string modifier to chainReader. #internal +- [#13386](https://github.com/smartcontractkit/chainlink/pull/13386) [`4b21c32e25`](https://github.com/smartcontractkit/chainlink/commit/4b21c32e257f534f97829f50aaac4bbe8e9c1ae7) Thanks [@DylanTinianov](https://github.com/DylanTinianov)! - Implemented new chain agnostic MultiNode design along with the corresponding EVM implementation. The chain agnostic components enable Multinode to be integrated with Solana and other non-EVM chains. Previously the Multinode was coupled with EVM specific actions, and was called to execute these actions direclty. With this change, the MultiNode's responsibility has been simplified to focus on RPC selection along with performing health checks. Chain specific actions will instead be executed on the RPC directly after being selected by MultiNode. The Chain Agnostic MultiNode provides improved reliability and metrics for all chain integrations using it. + + These are following main components: + Node: Common component which wraps an RPC with state information, health checks, and an alive loop to handle state changes along with maintaining chain information. + RPCClient: Chain-specific RPC wrapper which implements required interface for MultiNode along with any chain-specific functionality needed. + MultiNode: Perform RPCClient selection and performs health checks on all RPCs. + TransactionSender: Chain agnostic component which broadcasts transactions to all healthy RPCs and aggregates results. A chain-specific error classifier must be implemented. + + MultiNode picks the "best" RPC based on one of the configurable criteria: + + - Priority defined in the config. + - Highest latest block. + - Round-robin within the same priority level (or using other configurable selection algorithms) + + Benefits of Chain Agnostic MultiNode: + Reliability: Improved RPC reliability scaleable to all chains + Maintainability: Can apply changes across all chain integrations through the use of common code + Extendability: Can add new health checks, RPC selection and ranking algorithms + Integration Speed: Much faster to integrate MultiNode with new chains + Reduced Generics: Significantly less bulky code! + + #updated #changed #internal +- [#14629](https://github.com/smartcontractkit/chainlink/pull/14629) [`4928e60ddf`](https://github.com/smartcontractkit/chainlink/commit/4928e60ddfe375e4a0c644cb210802b4c4db5dbd) Thanks [@huangzhen1997](https://github.com/huangzhen1997)! - Support Zircuit fraud transactions detection and zk overflow detection #added +- [#14334](https://github.com/smartcontractkit/chainlink/pull/14334) [`0ad624673f`](https://github.com/smartcontractkit/chainlink/commit/0ad624673f6f1a8e155fc43c67a8ae6caddefa90) Thanks [@krehermann](https://github.com/krehermann)! - #added keystone contract deployment +- [#14709](https://github.com/smartcontractkit/chainlink/pull/14709) [`1560aa9167`](https://github.com/smartcontractkit/chainlink/commit/1560aa9167a812abe3a8370c033b3290dcbcb261) Thanks [@KuphJr](https://github.com/KuphJr)! - Add encryptionPublicKey to CapabilitiesRegistry.sol +- [#14364](https://github.com/smartcontractkit/chainlink/pull/14364) [`5d96be59a2`](https://github.com/smartcontractkit/chainlink/commit/5d96be59a27f68f2f491a7d9f8cb0b2af4e0e835) Thanks [@huangzhen1997](https://github.com/huangzhen1997)! - Make websocket URL `WSURL` for `EVM.Nodes` optional, and apply logic so that: + + - If WS URL was not provided, SubscribeFilterLogs should fail with an explicit error + - If WS URL was not provided LogBroadcaster should be disabled + #nops + +- [#14789](https://github.com/smartcontractkit/chainlink/pull/14789) [`5dfb13071e`](https://github.com/smartcontractkit/chainlink/commit/5dfb13071e96f8e0cda7b79a4c1797c1f064972b) Thanks [@0xnogo](https://github.com/0xnogo)! - #internal: Adding test for rmn home reader +- [#14491](https://github.com/smartcontractkit/chainlink/pull/14491) [`c6e6e213a6`](https://github.com/smartcontractkit/chainlink/commit/c6e6e213a698b558d3302277566587ba0c30a6fe) Thanks [@jinhoonbang](https://github.com/jinhoonbang)! - #added HTTP target capability and gateway connector handler +- [#14496](https://github.com/smartcontractkit/chainlink/pull/14496) [`25c469880f`](https://github.com/smartcontractkit/chainlink/commit/25c469880f537556278e3d4eff3e87f185917834) Thanks [@cedric-cordenier](https://github.com/cedric-cordenier)! - Add compute capability #internal +- [#14764](https://github.com/smartcontractkit/chainlink/pull/14764) [`56d4b84cc2`](https://github.com/smartcontractkit/chainlink/commit/56d4b84cc2ccde953241a81bcaeb1929724c77a2) Thanks [@graham-chainlink](https://github.com/graham-chainlink)! - #added introduce cosmosKeys and starknetKeys graphql query +- [#14500](https://github.com/smartcontractkit/chainlink/pull/14500) [`d435981038`](https://github.com/smartcontractkit/chainlink/commit/d4359810380a34fbcdd2839e0fc23a35c5236acd) Thanks [@0xnogo](https://github.com/0xnogo)! - #added Pass the home chain selector to the commit plugin factory +- [#14564](https://github.com/smartcontractkit/chainlink/pull/14564) [`8b01661e03`](https://github.com/smartcontractkit/chainlink/commit/8b01661e032add54c07f269624b46bddd4476b95) Thanks [@momentmaker](https://github.com/momentmaker)! - start of next release +- [#14855](https://github.com/smartcontractkit/chainlink/pull/14855) [`7cd384b945`](https://github.com/smartcontractkit/chainlink/commit/7cd384b945ec66532b68cbdfffa3b48a8e375158) Thanks [@dimriou](https://github.com/dimriou)! - Rename SequenceAt to NonceAt #internal +- [#14670](https://github.com/smartcontractkit/chainlink/pull/14670) [`ad29b19612`](https://github.com/smartcontractkit/chainlink/commit/ad29b19612dbd9e2aab093bd0e7df85daa995662) Thanks [@dimriou](https://github.com/dimriou)! - Fix BHE PriceMax bug #bugfix + +### Patch Changes + +- [#14509](https://github.com/smartcontractkit/chainlink/pull/14509) [`dbd42db9b8`](https://github.com/smartcontractkit/chainlink/commit/dbd42db9b838b619d0f8a5acd21328ecd5043cd3) Thanks [@huangzhen1997](https://github.com/huangzhen1997)! - Remove finality depth as the default value for minConfirmation for tx jobs. + Update the sql query for fetching pending callback transactions: + if minConfirmation is not null, we check difference if the current block - tx block > minConfirmation + else we check if the tx block is <= finalizedBlock + #updated +- [#14685](https://github.com/smartcontractkit/chainlink/pull/14685) [`c5e9f932ca`](https://github.com/smartcontractkit/chainlink/commit/c5e9f932ca2115b833675d9c098e96676c2b6b58) Thanks [@huangzhen1997](https://github.com/huangzhen1997)! - The findBroadcastedAttempts in detectStuckTransactionsHeuristic can returns uninitialized struct that potentially cause nil pointer error. Changed the return type of findBroadcastedAttempts to be pointers and added nil pointer check. #bugfix +- [#14631](https://github.com/smartcontractkit/chainlink/pull/14631) [`ad9398a8fd`](https://github.com/smartcontractkit/chainlink/commit/ad9398a8fd2c2e95f3b4241bbfcfe264d8cda030) Thanks [@martin-cll](https://github.com/martin-cll)! - Fix for Mercury transmitter decoding reports of a different codec version #internal +- [#14829](https://github.com/smartcontractkit/chainlink/pull/14829) [`83c3a329b8`](https://github.com/smartcontractkit/chainlink/commit/83c3a329b87e08693d347deb588ad9725dbc681a) Thanks [@asoliman92](https://github.com/asoliman92)! - #added #fix add chain fee tests to initial deploy +- [#14798](https://github.com/smartcontractkit/chainlink/pull/14798) [`26e22eb6cf`](https://github.com/smartcontractkit/chainlink/commit/26e22eb6cfc320d981c91b1bfeb87c3c645f10d6) Thanks [@0xsuryansh](https://github.com/0xsuryansh)! - #internal Update gethwrapper for FeeQuoter, Internal.sol comment and byte calc update +- [#14558](https://github.com/smartcontractkit/chainlink/pull/14558) [`133e347872`](https://github.com/smartcontractkit/chainlink/commit/133e3478727814575636d5989af9d61cbf7997cb) Thanks [@dhaidashenko](https://github.com/dhaidashenko)! - Added `EVM.HeadTracker.PersistenceEnabled` config option to disable persistence for HeadTracker. #added +- [#14719](https://github.com/smartcontractkit/chainlink/pull/14719) [`de9ce674c6`](https://github.com/smartcontractkit/chainlink/commit/de9ce674c6fd18c1c0a2ce7896682d7b711eea8c) Thanks [@amit-momin](https://github.com/amit-momin)! - Set chainType in chain client #internal +- [#14760](https://github.com/smartcontractkit/chainlink/pull/14760) [`3af39c8032`](https://github.com/smartcontractkit/chainlink/commit/3af39c803201461009ef63f709851fe6a24f0284) Thanks [@KuphJr](https://github.com/KuphJr)! - Enable rotating encryptionPublicKey in CapabilitiesRegistry contract +- [#14835](https://github.com/smartcontractkit/chainlink/pull/14835) [`468fc4cd35`](https://github.com/smartcontractkit/chainlink/commit/468fc4cd352b5be8cfd0e65f7da370fdf544be46) Thanks [@ogtownsend](https://github.com/ogtownsend)! - Add DA oracle type to arbitrum and zksync configs #bugfix +- [#14603](https://github.com/smartcontractkit/chainlink/pull/14603) [`19690b0c44`](https://github.com/smartcontractkit/chainlink/commit/19690b0c4499cf01379f98396917be170ba2b333) Thanks [@mateusz-sekara](https://github.com/mateusz-sekara)! - Implementing evm specific token data encoder for CCIP #internal +- [#14375](https://github.com/smartcontractkit/chainlink/pull/14375) [`816b25c001`](https://github.com/smartcontractkit/chainlink/commit/816b25c00122003e14e3d214d9de7a6e58b3323e) Thanks [@vyzaldysanchez](https://github.com/vyzaldysanchez)! - #updated Workflows Engine loop refactored +- [#14599](https://github.com/smartcontractkit/chainlink/pull/14599) [`4ac405a6d5`](https://github.com/smartcontractkit/chainlink/commit/4ac405a6d5e3bc668ee96eac6bdbecc524467fd6) Thanks [@ogtownsend](https://github.com/ogtownsend)! - Refactor OP oracle to accept generic DA oracle config #wip +- [#14607](https://github.com/smartcontractkit/chainlink/pull/14607) [`eec0ff9469`](https://github.com/smartcontractkit/chainlink/commit/eec0ff946986dfbeeb46ed3d311ff9b8d0e21735) Thanks [@winder](https://github.com/winder)! - #internal update ccip chainreader config. +- [#14693](https://github.com/smartcontractkit/chainlink/pull/14693) [`03df8989e8`](https://github.com/smartcontractkit/chainlink/commit/03df8989e8e7549afb05bb49c765c0c07db8669e) Thanks [@ChrisAmora](https://github.com/ChrisAmora)! - #updated Consume Feeds Manager WSRPC protos from Chainlink Protos Repository. +- [#14694](https://github.com/smartcontractkit/chainlink/pull/14694) [`e9b3397f46`](https://github.com/smartcontractkit/chainlink/commit/e9b3397f465e26209c8c8ccfed66aa9595f8246b) Thanks [@mateusz-sekara](https://github.com/mateusz-sekara)! - Adjustments for usdc reader tests #internal +- [#14624](https://github.com/smartcontractkit/chainlink/pull/14624) [`be774f00a9`](https://github.com/smartcontractkit/chainlink/commit/be774f00a961d9a7361d9ae5b10c97996f7ab164) Thanks [@mateusz-sekara](https://github.com/mateusz-sekara)! - Registering USDC/CCTP events in the ChainReader during oracle creation #internal +- [#14534](https://github.com/smartcontractkit/chainlink/pull/14534) [`de268e98b8`](https://github.com/smartcontractkit/chainlink/commit/de268e98b8d68a284e1260297925b91c5d2411bc) Thanks [@huangzhen1997](https://github.com/huangzhen1997)! - - register polling subscription to avoid subscription leaking when rpc client gets closed. + + - add a temporary special treatment for SubscribeNewHead before we replace it with SubscribeToHeads. Add a goroutine that forwards new head from poller to caller channel. + - fix a deadlock in poller, by using a new lock for subs slice in rpc client. + #bugfix + +- [#14656](https://github.com/smartcontractkit/chainlink/pull/14656) [`004a0de233`](https://github.com/smartcontractkit/chainlink/commit/004a0de2337b0312558ae7c045e7fc2fb4a05916) Thanks [@dimkouv](https://github.com/dimkouv)! - #added graceful shutdown for ccip oracles +- [#14720](https://github.com/smartcontractkit/chainlink/pull/14720) [`4f8c55eb01`](https://github.com/smartcontractkit/chainlink/commit/4f8c55eb01b5823f43f49761344e92dc37ec0114) Thanks [@vyzaldysanchez](https://github.com/vyzaldysanchez)! - #updated Refactors store_db +- [#14530](https://github.com/smartcontractkit/chainlink/pull/14530) [`2c16f46311`](https://github.com/smartcontractkit/chainlink/commit/2c16f4631184a6e3da7f2f3957173500e2c4837b) Thanks [@Madalosso](https://github.com/Madalosso)! - #updated default config values for FinalityTagEnabled to match CCIP configs +- [#14859](https://github.com/smartcontractkit/chainlink/pull/14859) [`80b0501bee`](https://github.com/smartcontractkit/chainlink/commit/80b0501bee805f30da170f779e7ceeb4b0ebe179) Thanks [@ma33r](https://github.com/ma33r)! - Added a custom client error message for Mantle to capture NonceTooLow error. #added +- [#14628](https://github.com/smartcontractkit/chainlink/pull/14628) [`6ec5ab8315`](https://github.com/smartcontractkit/chainlink/commit/6ec5ab83158172ac0c8e591bfa8dd9ffb35880ea) Thanks [@samsondav](https://github.com/samsondav)! - Implement blue-green Configurator contract and retirement report handover for LLO + #added +- [#14743](https://github.com/smartcontractkit/chainlink/pull/14743) [`d5dfe4af8c`](https://github.com/smartcontractkit/chainlink/commit/d5dfe4af8c87d481e9963275caf95407d38361f1) Thanks [@ogtownsend](https://github.com/ogtownsend)! - Rename DA oracle consts to be more descriptive #wip +- [#14734](https://github.com/smartcontractkit/chainlink/pull/14734) [`ca71878aa5`](https://github.com/smartcontractkit/chainlink/commit/ca71878aa5a55fe239a456d7b564ffeba9bc84d7) Thanks [@RyanRHall](https://github.com/RyanRHall)! - #added new config field to FeeQuoter +- [#14575](https://github.com/smartcontractkit/chainlink/pull/14575) [`1b41e69cca`](https://github.com/smartcontractkit/chainlink/commit/1b41e69cca2f4622d367ef18733c36fcae433505) Thanks [@DylanTinianov](https://github.com/DylanTinianov)! - Bump chainlink-solana and fix tests #internal +- [#14668](https://github.com/smartcontractkit/chainlink/pull/14668) [`dacb6a8c70`](https://github.com/smartcontractkit/chainlink/commit/dacb6a8c708e8d7cb94aa63ae7463f58a38d0e59) Thanks [@winder](https://github.com/winder)! - #internal ccip contract reader config. +- [#14814](https://github.com/smartcontractkit/chainlink/pull/14814) [`f708ebb094`](https://github.com/smartcontractkit/chainlink/commit/f708ebb094ecd6f4f77e9c480ceacd250fc1fadc) Thanks [@DylanTinianov](https://github.com/DylanTinianov)! - Fix testWSServer issue causing panic in testing #internal +- [#14635](https://github.com/smartcontractkit/chainlink/pull/14635) [`ee1d6e3b1a`](https://github.com/smartcontractkit/chainlink/commit/ee1d6e3b1a60dc657a5cab869aac0897e33dc76d) Thanks [@dhaidashenko](https://github.com/dhaidashenko)! - Hedera chain type: broadcast transactions only to a single healthy RPC instead of all healthy RPCs to avoid redundant relay fees. #changed + ## 2.17.0 - 2024-10-10 ### Minor Changes diff --git a/package.json b/package.json index 0382ca4e5cb..1da5d63f6d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "chainlink", - "version": "2.17.0", + "version": "2.18.0", "description": "node of the decentralized oracle network, bridging on and off-chain computation", "main": "index.js", "scripts": { From bbd887e3eb493fc4bc7a1301e219b1cf712fbf05 Mon Sep 17 00:00:00 2001 From: Jordan Krage Date: Tue, 22 Oct 2024 14:06:50 -0500 Subject: [PATCH 2/7] core/services/ocr2/plugins/ccip/internal/ccipdata/factory: check error from TypeAndVersion (#14861) * core/services/ocr2/plugins/ccip/internal/ccipdata/factory: check error from TypeAndVersion * .github: CCIP CODEOWNERS (cherry picked from commit cc9bafa3916e4aa56ea48deb7834d20f914e67eb) --- .github/CODEOWNERS | 4 ++++ .../plugins/ccip/internal/ccipdata/factory/price_registry.go | 3 +++ 2 files changed, 7 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 5fc21e8c159..3bba74af7ce 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -31,6 +31,10 @@ /core/services/webhook @smartcontractkit/foundations @smartcontractkit/bix-framework /core/services/llo @smartcontractkit/data-streams-engineers +# CCIP +/core/services/ccip @smartcontractkit/ccip +/core/services/ocr2/plugins/ccip @smartcontractkit/ccip + # VRF-related services /core/services/vrf @smartcontractkit/dev-services /core/services/blockhashstore @smartcontractkit/dev-services diff --git a/core/services/ocr2/plugins/ccip/internal/ccipdata/factory/price_registry.go b/core/services/ocr2/plugins/ccip/internal/ccipdata/factory/price_registry.go index 214c3bad73e..cb82e7273bf 100644 --- a/core/services/ocr2/plugins/ccip/internal/ccipdata/factory/price_registry.go +++ b/core/services/ocr2/plugins/ccip/internal/ccipdata/factory/price_registry.go @@ -35,6 +35,9 @@ func initOrClosePriceRegistryReader(ctx context.Context, lggr logger.Logger, ver } contractType, version, err := versionFinder.TypeAndVersion(priceRegistryAddress, cl) + if err != nil { + return nil, err + } if contractType != ccipconfig.PriceRegistry { return nil, errors.Errorf("expected %v got %v", ccipconfig.PriceRegistry, contractType) } From 1d72e0cd3a7a8986a40fd31f9cad76815c6feee4 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko <34754799+dhaidashenko@users.noreply.github.com> Date: Wed, 23 Oct 2024 23:12:34 +0200 Subject: [PATCH 3/7] TXM Configmer logs warning only if the provided chain does not contain finalized block (#14914) (cherry picked from commit 47aaff4320c800a9c85241949981cee687051aac) --- common/txmgr/confirmer.go | 27 +++++++++++++------------ core/chains/evm/txmgr/confirmer_test.go | 21 ++++++++----------- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/common/txmgr/confirmer.go b/common/txmgr/confirmer.go index d2d491d794c..dd3dc4e4b33 100644 --- a/common/txmgr/confirmer.go +++ b/common/txmgr/confirmer.go @@ -339,7 +339,7 @@ func (ec *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]) pro ec.lggr.Debugw("Finished RebroadcastWhereNecessary", "headNum", head.BlockNumber(), "time", time.Since(mark), "id", "confirmer") mark = time.Now() - if err := ec.EnsureConfirmedTransactionsInLongestChain(ctx, head, latestFinalizedHead.BlockNumber()); err != nil { + if err := ec.EnsureConfirmedTransactionsInLongestChain(ctx, head); err != nil { return fmt.Errorf("EnsureConfirmedTransactionsInLongestChain failed: %w", err) } @@ -1072,19 +1072,20 @@ func (ec *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]) han // // If any of the confirmed transactions does not have a receipt in the chain, it has been // re-org'd out and will be rebroadcast. -func (ec *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]) EnsureConfirmedTransactionsInLongestChain(ctx context.Context, head types.Head[BLOCK_HASH], latestFinalizedHeadNumber int64) error { +func (ec *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]) EnsureConfirmedTransactionsInLongestChain(ctx context.Context, head types.Head[BLOCK_HASH]) error { logArgs := []interface{}{ - "chainLength", head.ChainLength(), "latestFinalizedHead number", latestFinalizedHeadNumber, - } - - if head.BlockNumber() < latestFinalizedHeadNumber { - errMsg := "current head is shorter than latest finalized head" - ec.lggr.Errorw(errMsg, append(logArgs, "head block number", head.BlockNumber())...) - return errors.New(errMsg) - } - - calculatedFinalityDepth := uint32(head.BlockNumber() - latestFinalizedHeadNumber) - if head.ChainLength() < calculatedFinalityDepth { + "chainLength", head.ChainLength(), + } + + //Here, we rely on the finalized block provided in the chain instead of the one + //provided via a dedicated method to avoid the false warning of the chain being + //too short. When `FinalityTagBypass = true,` HeadTracker tracks `finality depth + //+ history depth` to prevent excessive CPU usage. Thus, the provided chain may + //be shorter than the chain from the latest to the latest finalized, marked with + //a tag. A proper fix of this issue and complete switch to finality tag support + //will be introduced in BCFR-620 + latestFinalized := head.LatestFinalizedHead() + if latestFinalized == nil || !latestFinalized.IsValid() { if ec.nConsecutiveBlocksChainTooShort > logAfterNConsecutiveBlocksChainTooShort { warnMsg := "Chain length supplied for re-org detection was shorter than the depth from the latest head to the finalized head. Re-org protection is not working properly. This could indicate a problem with the remote RPC endpoint, a compatibility issue with a particular blockchain, a bug with this particular blockchain, heads table being truncated too early, remote node out of sync, or something else. If this happens a lot please raise a bug with the Chainlink team including a log output sample and details of the chain and RPC endpoint you are using." ec.lggr.Warnw(warnMsg, append(logArgs, "nConsecutiveBlocksChainTooShort", ec.nConsecutiveBlocksChainTooShort)...) diff --git a/core/chains/evm/txmgr/confirmer_test.go b/core/chains/evm/txmgr/confirmer_test.go index 03a43a61cf0..d468d1b4c10 100644 --- a/core/chains/evm/txmgr/confirmer_test.go +++ b/core/chains/evm/txmgr/confirmer_test.go @@ -2742,11 +2742,6 @@ func TestEthConfirmer_EnsureConfirmedTransactionsInLongestChain(t *testing.T) { gconfig, config := newTestChainScopedConfig(t) ec := newEthConfirmer(t, txStore, ethClient, gconfig, config, ethKeyStore, nil) - latestFinalizedHead := evmtypes.Head{ - Number: 8, - Hash: testutils.NewHash(), - } - h8 := &evmtypes.Head{ Number: 8, Hash: testutils.NewHash(), @@ -2762,14 +2757,14 @@ func TestEthConfirmer_EnsureConfirmedTransactionsInLongestChain(t *testing.T) { } head.Parent.Store(h9) t.Run("does nothing if there aren't any transactions", func(t *testing.T) { - require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head, latestFinalizedHead.BlockNumber())) + require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head)) }) t.Run("does nothing to unconfirmed transactions", func(t *testing.T) { etx := cltest.MustInsertUnconfirmedEthTxWithBroadcastLegacyAttempt(t, txStore, 0, fromAddress) // Do the thing - require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head, latestFinalizedHead.BlockNumber())) + require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head)) etx, err := txStore.FindTxWithAttempts(ctx, etx.ID) require.NoError(t, err) @@ -2781,7 +2776,7 @@ func TestEthConfirmer_EnsureConfirmedTransactionsInLongestChain(t *testing.T) { mustInsertEthReceipt(t, txStore, head.Number, head.Hash, etx.TxAttempts[0].Hash) // Do the thing - require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head, latestFinalizedHead.BlockNumber())) + require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head)) etx, err := txStore.FindTxWithAttempts(ctx, etx.ID) require.NoError(t, err) @@ -2794,7 +2789,7 @@ func TestEthConfirmer_EnsureConfirmedTransactionsInLongestChain(t *testing.T) { mustInsertEthReceipt(t, txStore, h8.Number-1, testutils.NewHash(), etx.TxAttempts[0].Hash) // Do the thing - require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head, latestFinalizedHead.BlockNumber())) + require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head)) etx, err := txStore.FindTxWithAttempts(ctx, etx.ID) require.NoError(t, err) @@ -2815,7 +2810,7 @@ func TestEthConfirmer_EnsureConfirmedTransactionsInLongestChain(t *testing.T) { }), fromAddress).Return(commonclient.Successful, nil).Once() // Do the thing - require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head, latestFinalizedHead.BlockNumber())) + require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head)) etx, err := txStore.FindTxWithAttempts(ctx, etx.ID) require.NoError(t, err) @@ -2838,7 +2833,7 @@ func TestEthConfirmer_EnsureConfirmedTransactionsInLongestChain(t *testing.T) { commonclient.Successful, nil).Once() // Do the thing - require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head, latestFinalizedHead.BlockNumber())) + require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head)) etx, err := txStore.FindTxWithAttempts(ctx, etx.ID) require.NoError(t, err) @@ -2873,7 +2868,7 @@ func TestEthConfirmer_EnsureConfirmedTransactionsInLongestChain(t *testing.T) { }), fromAddress).Return(commonclient.Successful, nil).Once() // Do the thing - require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head, latestFinalizedHead.BlockNumber())) + require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head)) etx, err := txStore.FindTxWithAttempts(ctx, etx.ID) require.NoError(t, err) @@ -2893,7 +2888,7 @@ func TestEthConfirmer_EnsureConfirmedTransactionsInLongestChain(t *testing.T) { // Add receipt that is higher than head mustInsertEthReceipt(t, txStore, head.Number+1, testutils.NewHash(), attempt.Hash) - require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head, latestFinalizedHead.BlockNumber())) + require.NoError(t, ec.EnsureConfirmedTransactionsInLongestChain(tests.Context(t), head)) etx, err := txStore.FindTxWithAttempts(ctx, etx.ID) require.NoError(t, err) From 6951f9e74ae016fab1548b682d4fd8ed5b818d3c Mon Sep 17 00:00:00 2001 From: Oliver Townsend <133903322+ogtownsend@users.noreply.github.com> Date: Wed, 30 Oct 2024 01:27:57 -0700 Subject: [PATCH 4/7] Update DA oracle config struct members to pointers (#15008) * Update DA oracle config struct members to pointers * Update tests and remake config docs * suggestions and fix docs_test * fix config test (cherry picked from commit b5856542d0c5cb887e6d95a9c663e20ae8a6544f) --- .changeset/green-crabs-joke.md | 5 ++ .../ocrimpls/contract_transmitter_test.go | 11 +++- .../evm/config/chain_scoped_gas_estimator.go | 6 +-- core/chains/evm/config/config.go | 4 +- core/chains/evm/config/toml/config.go | 23 ++++++-- core/chains/evm/gas/models.go | 1 + .../evm/gas/rollups/da_oracle_test_helper.go | 8 +-- core/chains/evm/gas/rollups/l1_oracle.go | 8 ++- core/chains/evm/gas/rollups/op_l1_oracle.go | 54 ++++++++++++------- core/chains/evm/txmgr/test_helpers.go | 7 ++- core/config/docs/docs_test.go | 4 +- core/services/chainlink/config_test.go | 7 +++ docs/CONFIG.md | 22 -------- 13 files changed, 99 insertions(+), 61 deletions(-) create mode 100644 .changeset/green-crabs-joke.md diff --git a/.changeset/green-crabs-joke.md b/.changeset/green-crabs-joke.md new file mode 100644 index 00000000000..4e9480e9c89 --- /dev/null +++ b/.changeset/green-crabs-joke.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +#bugfix Update DA oracle config struct members to pointers diff --git a/core/capabilities/ccip/ocrimpls/contract_transmitter_test.go b/core/capabilities/ccip/ocrimpls/contract_transmitter_test.go index 0f84d80a1f8..fa40dca6b85 100644 --- a/core/capabilities/ccip/ocrimpls/contract_transmitter_test.go +++ b/core/capabilities/ccip/ocrimpls/contract_transmitter_test.go @@ -600,7 +600,11 @@ type TestDAOracleConfig struct { evmconfig.DAOracle } -func (d *TestDAOracleConfig) OracleType() toml.DAOracleType { return toml.DAOracleOPStack } +func (d *TestDAOracleConfig) OracleType() *toml.DAOracleType { + oracleType := toml.DAOracleOPStack + return &oracleType +} + func (d *TestDAOracleConfig) OracleAddress() *types.EIP55Address { a, err := types.NewEIP55Address("0x420000000000000000000000000000000000000F") if err != nil { @@ -608,7 +612,10 @@ func (d *TestDAOracleConfig) OracleAddress() *types.EIP55Address { } return &a } -func (d *TestDAOracleConfig) CustomGasPriceCalldata() string { return "" } + +func (d *TestDAOracleConfig) CustomGasPriceCalldata() *string { + return nil +} func (g *TestGasEstimatorConfig) BlockHistory() evmconfig.BlockHistory { return &TestBlockHistoryConfig{} diff --git a/core/chains/evm/config/chain_scoped_gas_estimator.go b/core/chains/evm/config/chain_scoped_gas_estimator.go index 1e04690b12f..764efc20191 100644 --- a/core/chains/evm/config/chain_scoped_gas_estimator.go +++ b/core/chains/evm/config/chain_scoped_gas_estimator.go @@ -127,7 +127,7 @@ type daOracleConfig struct { c toml.DAOracle } -func (d *daOracleConfig) OracleType() toml.DAOracleType { +func (d *daOracleConfig) OracleType() *toml.DAOracleType { return d.c.OracleType } @@ -137,9 +137,9 @@ func (d *daOracleConfig) OracleAddress() *types.EIP55Address { } // CustomGasPriceCalldata returns the calldata for a custom gas price API. -func (d *daOracleConfig) CustomGasPriceCalldata() string { +func (d *daOracleConfig) CustomGasPriceCalldata() *string { // TODO: CCIP-3710 update once custom calldata oracle is added - return "" + return nil } type limitJobTypeConfig struct { diff --git a/core/chains/evm/config/config.go b/core/chains/evm/config/config.go index 6d4bcf159b5..f2a571f94b0 100644 --- a/core/chains/evm/config/config.go +++ b/core/chains/evm/config/config.go @@ -165,9 +165,9 @@ type BlockHistory interface { } type DAOracle interface { - OracleType() toml.DAOracleType + OracleType() *toml.DAOracleType OracleAddress() *types.EIP55Address - CustomGasPriceCalldata() string + CustomGasPriceCalldata() *string } type FeeHistory interface { diff --git a/core/chains/evm/config/toml/config.go b/core/chains/evm/config/toml/config.go index cc6a8d4eabf..4a1f73094d5 100644 --- a/core/chains/evm/config/toml/config.go +++ b/core/chains/evm/config/toml/config.go @@ -759,9 +759,9 @@ func (u *FeeHistoryEstimator) setFrom(f *FeeHistoryEstimator) { } type DAOracle struct { - OracleType DAOracleType + OracleType *DAOracleType OracleAddress *types.EIP55Address - CustomGasPriceCalldata string + CustomGasPriceCalldata *string } type DAOracleType string @@ -772,6 +772,17 @@ const ( DAOracleZKSync = DAOracleType("zksync") ) +func (o *DAOracle) ValidateConfig() (err error) { + if o.OracleType != nil { + if *o.OracleType == DAOracleOPStack { + if o.OracleAddress == nil { + err = multierr.Append(err, commonconfig.ErrMissing{Name: "OracleAddress", Msg: "required for 'opstack' oracle types"}) + } + } + } + return +} + func (o DAOracleType) IsValid() bool { switch o { case "", DAOracleOPStack, DAOracleArbitrum, DAOracleZKSync: @@ -781,11 +792,15 @@ func (o DAOracleType) IsValid() bool { } func (d *DAOracle) setFrom(f *DAOracle) { - d.OracleType = f.OracleType + if v := f.OracleType; v != nil { + d.OracleType = v + } if v := f.OracleAddress; v != nil { d.OracleAddress = v } - d.CustomGasPriceCalldata = f.CustomGasPriceCalldata + if v := f.CustomGasPriceCalldata; v != nil { + d.CustomGasPriceCalldata = v + } } type KeySpecificConfig []KeySpecific diff --git a/core/chains/evm/gas/models.go b/core/chains/evm/gas/models.go index cac6efb7271..a162cdd014a 100644 --- a/core/chains/evm/gas/models.go +++ b/core/chains/evm/gas/models.go @@ -76,6 +76,7 @@ func NewEstimator(lggr logger.Logger, ethClient feeEstimatorClient, chaintype ch "priceMax", geCfg.PriceMax(), "priceMin", geCfg.PriceMin(), "estimateLimit", geCfg.EstimateLimit(), + "daOracleType", geCfg.DAOracle().OracleType(), "daOracleAddress", geCfg.DAOracle().OracleAddress(), ) df := geCfg.EIP1559DynamicFees() diff --git a/core/chains/evm/gas/rollups/da_oracle_test_helper.go b/core/chains/evm/gas/rollups/da_oracle_test_helper.go index 6dfa96d3118..ce5343f9863 100644 --- a/core/chains/evm/gas/rollups/da_oracle_test_helper.go +++ b/core/chains/evm/gas/rollups/da_oracle_test_helper.go @@ -13,7 +13,7 @@ type TestDAOracle struct { toml.DAOracle } -func (d *TestDAOracle) OracleType() toml.DAOracleType { +func (d *TestDAOracle) OracleType() *toml.DAOracleType { return d.DAOracle.OracleType } @@ -21,7 +21,7 @@ func (d *TestDAOracle) OracleAddress() *types.EIP55Address { return d.DAOracle.OracleAddress } -func (d *TestDAOracle) CustomGasPriceCalldata() string { +func (d *TestDAOracle) CustomGasPriceCalldata() *string { return d.DAOracle.CustomGasPriceCalldata } @@ -31,9 +31,9 @@ func CreateTestDAOracle(t *testing.T, oracleType toml.DAOracleType, oracleAddres return &TestDAOracle{ DAOracle: toml.DAOracle{ - OracleType: oracleType, + OracleType: &oracleType, OracleAddress: &oracleAddr, - CustomGasPriceCalldata: customGasPriceCalldata, + CustomGasPriceCalldata: &customGasPriceCalldata, }, } } diff --git a/core/chains/evm/gas/rollups/l1_oracle.go b/core/chains/evm/gas/rollups/l1_oracle.go index 28172051fb7..df6fbd9fa44 100644 --- a/core/chains/evm/gas/rollups/l1_oracle.go +++ b/core/chains/evm/gas/rollups/l1_oracle.go @@ -2,6 +2,7 @@ package rollups import ( "context" + "errors" "fmt" "math/big" "slices" @@ -56,7 +57,12 @@ func NewL1GasOracle(lggr logger.Logger, ethClient l1OracleClient, chainType chai var l1Oracle L1Oracle var err error if daOracle != nil { - switch daOracle.OracleType() { + oracleType := daOracle.OracleType() + if oracleType == nil { + return nil, errors.New("required field OracleType is nil in non-nil DAOracle config") + } + + switch *oracleType { case toml.DAOracleOPStack: l1Oracle, err = NewOpStackL1GasOracle(lggr, ethClient, chainType, daOracle) case toml.DAOracleArbitrum: diff --git a/core/chains/evm/gas/rollups/op_l1_oracle.go b/core/chains/evm/gas/rollups/op_l1_oracle.go index 4f1e8c67cb7..764a1bfb875 100644 --- a/core/chains/evm/gas/rollups/op_l1_oracle.go +++ b/core/chains/evm/gas/rollups/op_l1_oracle.go @@ -2,6 +2,7 @@ package rollups import ( "context" + "errors" "fmt" "math/big" "strings" @@ -21,6 +22,7 @@ import ( evmclient "github.com/smartcontractkit/chainlink/v2/core/chains/evm/client" evmconfig "github.com/smartcontractkit/chainlink/v2/core/chains/evm/config" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/config/chaintype" + "github.com/smartcontractkit/chainlink/v2/core/chains/evm/config/toml" ) // Reads L2-specific precompiles and caches the l1GasPrice set by the L2. @@ -30,12 +32,12 @@ type optimismL1Oracle struct { pollPeriod time.Duration logger logger.SugaredLogger - daOracleConfig evmconfig.DAOracle - l1GasPriceMu sync.RWMutex - l1GasPrice priceEntry - isEcotone bool - isFjord bool - upgradeCheckTs time.Time + daOracleAddress common.Address + l1GasPriceMu sync.RWMutex + l1GasPrice priceEntry + isEcotone bool + isFjord bool + upgradeCheckTs time.Time chInitialised chan struct{} chStop services.StopChan @@ -88,6 +90,20 @@ const ( ) func NewOpStackL1GasOracle(lggr logger.Logger, ethClient l1OracleClient, chainType chaintype.ChainType, daOracle evmconfig.DAOracle) (*optimismL1Oracle, error) { + if daOracle.OracleType() == nil { + return nil, errors.New("OracleType is required but was nil") + } + if *daOracle.OracleType() != toml.DAOracleOPStack { + return nil, fmt.Errorf("expected %s oracle type, got %s", toml.DAOracleOPStack, *daOracle.OracleType()) + } + if daOracle.CustomGasPriceCalldata() != nil && *daOracle.CustomGasPriceCalldata() != "" { + lggr.Warnf("CustomGasPriceCalldata is set but will be ignored for OPStack DA oracle") + } + if daOracle.OracleAddress() == nil || *daOracle.OracleAddress() == "" { + return nil, errors.New("OracleAddress is required but was nil or empty") + } + oracleAddress := *daOracle.OracleAddress() + getL1FeeMethodAbi, err := abi.JSON(strings.NewReader(GetL1FeeAbiString)) if err != nil { return nil, fmt.Errorf("failed to parse L1 gas cost method ABI for chain: %s", chainType) @@ -141,10 +157,10 @@ func NewOpStackL1GasOracle(lggr logger.Logger, ethClient l1OracleClient, chainTy pollPeriod: PollPeriod, logger: logger.Sugared(logger.Named(lggr, fmt.Sprintf("L1GasOracle(%s)", chainType))), - daOracleConfig: daOracle, - isEcotone: false, - isFjord: false, - upgradeCheckTs: time.Time{}, + daOracleAddress: oracleAddress.Address(), + isEcotone: false, + isFjord: false, + upgradeCheckTs: time.Time{}, chInitialised: make(chan struct{}), chStop: make(chan struct{}), @@ -276,6 +292,7 @@ func (o *optimismL1Oracle) checkForUpgrade(ctx context.Context) error { if time.Since(o.upgradeCheckTs) < upgradePollingPeriod { return nil } + o.upgradeCheckTs = time.Now() rpcBatchCalls := []rpc.BatchElem{ { @@ -283,7 +300,7 @@ func (o *optimismL1Oracle) checkForUpgrade(ctx context.Context) error { Args: []any{ map[string]interface{}{ "from": common.Address{}, - "to": o.daOracleConfig.OracleAddress().String(), + "to": o.daOracleAddress.String(), "data": hexutil.Bytes(o.isFjordCalldata), }, "latest", @@ -295,7 +312,7 @@ func (o *optimismL1Oracle) checkForUpgrade(ctx context.Context) error { Args: []any{ map[string]interface{}{ "from": common.Address{}, - "to": o.daOracleConfig.OracleAddress().String(), + "to": o.daOracleAddress.String(), "data": hexutil.Bytes(o.isEcotoneCalldata), }, "latest", @@ -336,9 +353,8 @@ func (o *optimismL1Oracle) checkForUpgrade(ctx context.Context) error { } func (o *optimismL1Oracle) getV1GasPrice(ctx context.Context) (*big.Int, error) { - l1OracleAddress := o.daOracleConfig.OracleAddress().Address() b, err := o.client.CallContract(ctx, ethereum.CallMsg{ - To: &l1OracleAddress, + To: &o.daOracleAddress, Data: o.l1BaseFeeCalldata, }, nil) if err != nil { @@ -360,7 +376,7 @@ func (o *optimismL1Oracle) getEcotoneFjordGasPrice(ctx context.Context) (*big.In Args: []any{ map[string]interface{}{ "from": common.Address{}, - "to": o.daOracleConfig.OracleAddress().String(), + "to": o.daOracleAddress.String(), "data": hexutil.Bytes(o.l1BaseFeeCalldata), }, "latest", @@ -372,7 +388,7 @@ func (o *optimismL1Oracle) getEcotoneFjordGasPrice(ctx context.Context) (*big.In Args: []any{ map[string]interface{}{ "from": common.Address{}, - "to": o.daOracleConfig.OracleAddress().String(), + "to": o.daOracleAddress.String(), "data": hexutil.Bytes(o.baseFeeScalarCalldata), }, "latest", @@ -384,7 +400,7 @@ func (o *optimismL1Oracle) getEcotoneFjordGasPrice(ctx context.Context) (*big.In Args: []any{ map[string]interface{}{ "from": common.Address{}, - "to": o.daOracleConfig.OracleAddress().String(), + "to": o.daOracleAddress.String(), "data": hexutil.Bytes(o.blobBaseFeeCalldata), }, "latest", @@ -396,7 +412,7 @@ func (o *optimismL1Oracle) getEcotoneFjordGasPrice(ctx context.Context) (*big.In Args: []any{ map[string]interface{}{ "from": common.Address{}, - "to": o.daOracleConfig.OracleAddress().String(), + "to": o.daOracleAddress.String(), "data": hexutil.Bytes(o.blobBaseFeeScalarCalldata), }, "latest", @@ -408,7 +424,7 @@ func (o *optimismL1Oracle) getEcotoneFjordGasPrice(ctx context.Context) (*big.In Args: []any{ map[string]interface{}{ "from": common.Address{}, - "to": o.daOracleConfig.OracleAddress().String(), + "to": o.daOracleAddress.String(), "data": hexutil.Bytes(o.decimalsCalldata), }, "latest", diff --git a/core/chains/evm/txmgr/test_helpers.go b/core/chains/evm/txmgr/test_helpers.go index 960d921e879..27f94b28ee7 100644 --- a/core/chains/evm/txmgr/test_helpers.go +++ b/core/chains/evm/txmgr/test_helpers.go @@ -82,7 +82,10 @@ type TestDAOracleConfig struct { evmconfig.DAOracle } -func (d *TestDAOracleConfig) OracleType() toml.DAOracleType { return toml.DAOracleOPStack } +func (d *TestDAOracleConfig) OracleType() *toml.DAOracleType { + oracleType := toml.DAOracleOPStack + return &oracleType +} func (d *TestDAOracleConfig) OracleAddress() *types.EIP55Address { a, err := types.NewEIP55Address("0x420000000000000000000000000000000000000F") if err != nil { @@ -90,7 +93,7 @@ func (d *TestDAOracleConfig) OracleAddress() *types.EIP55Address { } return &a } -func (d *TestDAOracleConfig) CustomGasPriceCalldata() string { return "" } +func (d *TestDAOracleConfig) CustomGasPriceCalldata() *string { return nil } func (g *TestGasEstimatorConfig) BlockHistory() evmconfig.BlockHistory { return &TestBlockHistoryConfig{} diff --git a/core/config/docs/docs_test.go b/core/config/docs/docs_test.go index bb572773c4a..9fca08ee99b 100644 --- a/core/config/docs/docs_test.go +++ b/core/config/docs/docs_test.go @@ -97,8 +97,8 @@ func TestDoc(t *testing.T) { docDefaults.Transactions.AutoPurge.Threshold = nil docDefaults.Transactions.AutoPurge.MinAttempts = nil - // GasEstimator.DAOracle.OracleAddress is only set if DA oracle config is used - docDefaults.GasEstimator.DAOracle.OracleAddress = nil + // Fallback DA oracle is not set + docDefaults.GasEstimator.DAOracle = evmcfg.DAOracle{} assertTOML(t, fallbackDefaults, docDefaults) }) diff --git a/core/services/chainlink/config_test.go b/core/services/chainlink/config_test.go index 4171c7af164..b3533398518 100644 --- a/core/services/chainlink/config_test.go +++ b/core/services/chainlink/config_test.go @@ -1398,9 +1398,16 @@ func TestConfig_full(t *testing.T) { if got.EVM[c].Transactions.AutoPurge.DetectionApiUrl == nil { got.EVM[c].Transactions.AutoPurge.DetectionApiUrl = new(commoncfg.URL) } + if got.EVM[c].GasEstimator.DAOracle.OracleType == nil { + oracleType := evmcfg.DAOracleOPStack + got.EVM[c].GasEstimator.DAOracle.OracleType = &oracleType + } if got.EVM[c].GasEstimator.DAOracle.OracleAddress == nil { got.EVM[c].GasEstimator.DAOracle.OracleAddress = new(types.EIP55Address) } + if got.EVM[c].GasEstimator.DAOracle.CustomGasPriceCalldata == nil { + got.EVM[c].GasEstimator.DAOracle.CustomGasPriceCalldata = new(string) + } } cfgtest.AssertFieldsNotNil(t, got) diff --git a/docs/CONFIG.md b/docs/CONFIG.md index ba36c8d258d..0b52274cff8 100644 --- a/docs/CONFIG.md +++ b/docs/CONFIG.md @@ -2445,7 +2445,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x420000000000000000000000000000000000000F' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 300 @@ -3906,7 +3905,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x4200000000000000000000000000000000000005' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 400 @@ -4014,7 +4012,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'zksync' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 50 @@ -4330,7 +4327,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'zksync' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 50 @@ -4438,7 +4434,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'zksync' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 50 @@ -4548,7 +4543,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x420000000000000000000000000000000000000F' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 300 @@ -5384,7 +5378,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x420000000000000000000000000000000000000F' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 300 @@ -5493,7 +5486,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x4200000000000000000000000000000000000005' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 400 @@ -5913,7 +5905,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x420000000000000000000000000000000000000F' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 300 @@ -6126,7 +6117,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'arbitrum' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 100 @@ -6235,7 +6225,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'arbitrum' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 100 @@ -6344,7 +6333,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'arbitrum' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 100 @@ -6872,7 +6860,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x420000000000000000000000000000000000000F' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 2000 @@ -6984,7 +6971,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x420000000000000000000000000000000000000F' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 2000 @@ -7713,7 +7699,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x420000000000000000000000000000000000000F' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 300 @@ -7822,7 +7807,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x420000000000000000000000000000000000000F' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 300 @@ -7931,7 +7915,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'arbitrum' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 100 @@ -8040,7 +8023,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'arbitrum' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 100 @@ -8148,7 +8130,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'arbitrum' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 100 @@ -8257,7 +8238,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x5300000000000000000000000000000000000002' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 50 @@ -8366,7 +8346,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x5300000000000000000000000000000000000002' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 50 @@ -8579,7 +8558,6 @@ CacheTimeout = '10s' [GasEstimator.DAOracle] OracleType = 'opstack' OracleAddress = '0x420000000000000000000000000000000000000F' -CustomGasPriceCalldata = '' [HeadTracker] HistoryDepth = 300 From 0e855379b9f4ff54944f8ee9918b7bbfc0a67469 Mon Sep 17 00:00:00 2001 From: chainchad <96362174+chainchad@users.noreply.github.com> Date: Wed, 30 Oct 2024 16:43:47 -0400 Subject: [PATCH 5/7] Consume latest changeset and update changelog (#15036) --- .changeset/green-crabs-joke.md | 5 ----- CHANGELOG.md | 2 ++ 2 files changed, 2 insertions(+), 5 deletions(-) delete mode 100644 .changeset/green-crabs-joke.md diff --git a/.changeset/green-crabs-joke.md b/.changeset/green-crabs-joke.md deleted file mode 100644 index 4e9480e9c89..00000000000 --- a/.changeset/green-crabs-joke.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"chainlink": patch ---- - -#bugfix Update DA oracle config struct members to pointers diff --git a/CHANGELOG.md b/CHANGELOG.md index 52b5cd967ce..eb8569f1d33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,6 +50,7 @@ Reduced Generics: Significantly less bulky code! #updated #changed #internal + - [#14629](https://github.com/smartcontractkit/chainlink/pull/14629) [`4928e60ddf`](https://github.com/smartcontractkit/chainlink/commit/4928e60ddfe375e4a0c644cb210802b4c4db5dbd) Thanks [@huangzhen1997](https://github.com/huangzhen1997)! - Support Zircuit fraud transactions detection and zk overflow detection #added - [#14334](https://github.com/smartcontractkit/chainlink/pull/14334) [`0ad624673f`](https://github.com/smartcontractkit/chainlink/commit/0ad624673f6f1a8e155fc43c67a8ae6caddefa90) Thanks [@krehermann](https://github.com/krehermann)! - #added keystone contract deployment - [#14709](https://github.com/smartcontractkit/chainlink/pull/14709) [`1560aa9167`](https://github.com/smartcontractkit/chainlink/commit/1560aa9167a812abe3a8370c033b3290dcbcb261) Thanks [@KuphJr](https://github.com/KuphJr)! - Add encryptionPublicKey to CapabilitiesRegistry.sol @@ -108,6 +109,7 @@ - [#14668](https://github.com/smartcontractkit/chainlink/pull/14668) [`dacb6a8c70`](https://github.com/smartcontractkit/chainlink/commit/dacb6a8c708e8d7cb94aa63ae7463f58a38d0e59) Thanks [@winder](https://github.com/winder)! - #internal ccip contract reader config. - [#14814](https://github.com/smartcontractkit/chainlink/pull/14814) [`f708ebb094`](https://github.com/smartcontractkit/chainlink/commit/f708ebb094ecd6f4f77e9c480ceacd250fc1fadc) Thanks [@DylanTinianov](https://github.com/DylanTinianov)! - Fix testWSServer issue causing panic in testing #internal - [#14635](https://github.com/smartcontractkit/chainlink/pull/14635) [`ee1d6e3b1a`](https://github.com/smartcontractkit/chainlink/commit/ee1d6e3b1a60dc657a5cab869aac0897e33dc76d) Thanks [@dhaidashenko](https://github.com/dhaidashenko)! - Hedera chain type: broadcast transactions only to a single healthy RPC instead of all healthy RPCs to avoid redundant relay fees. #changed +- [#15031](https://github.com/smartcontractkit/chainlink/pull/15031) [`6951f9e74a`](https://github.com/smartcontractkit/chainlink/commit/6951f9e74ae016fab1548b682d4fd8ed5b818d3c) Thanks [@ogtownsend](https://github.com/ogtownsend)! - #bugfix Update DA oracle config struct members to pointers ## 2.17.0 - 2024-10-10 From fb7d6e88ea3471909a4f9aa29992ec080bba9057 Mon Sep 17 00:00:00 2001 From: chainchad <96362174+chainchad@users.noreply.github.com> Date: Fri, 1 Nov 2024 13:34:15 -0400 Subject: [PATCH 6/7] Finalize date on changelog for 2.18.0 (#15073) Signed-off-by: chainchad <96362174+chainchad@users.noreply.github.com> --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb8569f1d33..f4326bd705d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog Chainlink Core -## 2.18.0 - UNRELEASED +## 2.18.0 - 2024-11-01 ### Minor Changes From fffd87b8dcde7adb4a578f9380e590d0fc66863d Mon Sep 17 00:00:00 2001 From: chainchad <96362174+chainchad@users.noreply.github.com> Date: Mon, 4 Nov 2024 14:45:19 -0500 Subject: [PATCH 7/7] Add spacing to comments to appease linter --- common/txmgr/confirmer.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/common/txmgr/confirmer.go b/common/txmgr/confirmer.go index dd3dc4e4b33..e6fd5b61f68 100644 --- a/common/txmgr/confirmer.go +++ b/common/txmgr/confirmer.go @@ -1077,13 +1077,13 @@ func (ec *Confirmer[CHAIN_ID, HEAD, ADDR, TX_HASH, BLOCK_HASH, R, SEQ, FEE]) Ens "chainLength", head.ChainLength(), } - //Here, we rely on the finalized block provided in the chain instead of the one - //provided via a dedicated method to avoid the false warning of the chain being - //too short. When `FinalityTagBypass = true,` HeadTracker tracks `finality depth - //+ history depth` to prevent excessive CPU usage. Thus, the provided chain may - //be shorter than the chain from the latest to the latest finalized, marked with - //a tag. A proper fix of this issue and complete switch to finality tag support - //will be introduced in BCFR-620 + // Here, we rely on the finalized block provided in the chain instead of the one + // provided via a dedicated method to avoid the false warning of the chain being + // too short. When `FinalityTagBypass = true,` HeadTracker tracks `finality depth + // + history depth` to prevent excessive CPU usage. Thus, the provided chain may + // be shorter than the chain from the latest to the latest finalized, marked with + // a tag. A proper fix of this issue and complete switch to finality tag support + // will be introduced in BCFR-620 latestFinalized := head.LatestFinalizedHead() if latestFinalized == nil || !latestFinalized.IsValid() { if ec.nConsecutiveBlocksChainTooShort > logAfterNConsecutiveBlocksChainTooShort {