feat(evm): accept a Chainlink node TOML config in the EVM accessor - #1321
Conversation
|
👋 tt-cll, thanks for creating this pull request! To help reviewers, please consider creating future PRs as drafts first. This allows you to self-review and make any final changes before notifying the team. Once you're ready, you can mark it as "Ready for review" to request feedback. Thanks! |
|
Code coverage report:
Files added (in
|
There was a problem hiding this comment.
Pull request overview
This PR extends the standalone EVM accessor’s config loader to accept either the standalone operator TOML format or a Chainlink node’s TOML config, converting the latter into the standalone format at startup and surfacing any dropped/unsupported settings as warnings.
Changes:
- Updated EVM config loading to detect Chainlink node vs standalone formats and to return conversion metadata (warnings + “was converted” signal).
- Added conversion logic from
[[EVM]]/[[EVM.Nodes]]into the standalonechains.<selector>config shape, including chain-selector resolution and finality/default handling. - Added unit tests covering format classification, conversion behavior, warning ordering, and strict decoding.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| integration/pkg/accessors/evm/factory_constructor.go | Detects node-vs-standalone config format, performs conversion when needed, and logs conversion warnings/metadata. |
| integration/pkg/accessors/evm/factory_constructor_test.go | Updates existing load tests and adds coverage for conversion reporting and mixed-format rejection. |
| integration/pkg/accessors/evm/clnode_config.go | Implements Chainlink node EVM TOML → standalone operator config conversion with ordered warnings. |
| integration/pkg/accessors/evm/clnode_config_test.go | Adds comprehensive conversion tests (chains/nodes/finality/defaults/warnings/strict reload). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| isSet bool | ||
| }{ | ||
| {"HTTPURLExtraWrite", node.HTTPURLExtraWrite != nil}, | ||
| {"Order", node.Order != nil}, |
There was a problem hiding this comment.
I suspect we should adopt this to inherit the multi-node prioritization behavior that is currently used - can we create a follow-up ticket?
There was a problem hiding this comment.
Description
https://smartcontract-it.atlassian.net/browse/CCIP-12568
The standalone EVM accessor accepts a Chainlink node's own TOML config directly:
loadConfigtells the two formats apart by their top-level table (chainsvsEVM) and translates[[EVM]]/[[EVM.Nodes]]at startup. An operator moving off CL mode mounts the config their node already runs with — no conversion step, no second file to hand-write.Order,HTTPURLExtraWrite,IsLoadBalancedRPChave no standalone equivalent: dropped with a warning each, logged at startup.Testing
Unit tests for conversion (chains, nodes, finality, defaults), warning order, strict standalone loading, and node-vs-standalone classification.
Checklist
changelogdirectory)