Skip to content

feat(evm): accept a Chainlink node TOML config in the EVM accessor - #1321

Merged
tt-cll merged 1 commit into
mainfrom
split/2-clnode-config
Jul 31, 2026
Merged

feat(evm): accept a Chainlink node TOML config in the EVM accessor#1321
tt-cll merged 1 commit into
mainfrom
split/2-clnode-config

Conversation

@tt-cll

@tt-cll tt-cll commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Description

https://smartcontract-it.atlassian.net/browse/CCIP-12568

The standalone EVM accessor accepts a Chainlink node's own TOML config directly: loadConfig tells the two formats apart by their top-level table (chains vs EVM) 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.

  • Chain IDs resolved to chain selectors; an unknown chain is an error, not a silently missing chain.
  • The node's own chain defaults are applied before finality translation, so an unconfigured chain keeps confirmation-depth behavior instead of moving onto finality tags.
  • Send-only nodes, Order, HTTPURLExtraWrite, IsLoadBalancedRPC have 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

  • Breaking changes documented in changelog (see changelog directory)
  • Cross link related PRs (in this or other repositories)

Copilot AI review requested due to automatic review settings July 31, 2026 10:53
@tt-cll
tt-cll requested a review from a team as a code owner July 31, 2026 10:53
@github-actions

Copy link
Copy Markdown

👋 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!

@github-actions

Copy link
Copy Markdown

Code coverage report:

Package main split/2-clnode-config Diff
github.com/smartcontractkit/chainlink-ccv/aggregator 50.86% 50.86% +0.00%
github.com/smartcontractkit/chainlink-ccv/bootstrap 69.54% 69.54% +0.00%
github.com/smartcontractkit/chainlink-ccv/cli 64.65% 64.65% +0.00%
github.com/smartcontractkit/chainlink-ccv/cmd 31.39% 31.39% +0.00%
github.com/smartcontractkit/chainlink-ccv/common 49.69% 49.69% +0.00%
github.com/smartcontractkit/chainlink-ccv/executor 47.31% 47.31% +0.00%
github.com/smartcontractkit/chainlink-ccv/indexer 35.54% 35.55% +0.01%
github.com/smartcontractkit/chainlink-ccv/integration 53.96% 56.07% +2.11%
github.com/smartcontractkit/chainlink-ccv/internal 0.00% 0.00% +0.00%
github.com/smartcontractkit/chainlink-ccv/pkg 100.00% 100.00% +0.00%
github.com/smartcontractkit/chainlink-ccv/pricer 0.00% 0.00% +0.00%
github.com/smartcontractkit/chainlink-ccv/protocol 63.06% 63.06% +0.00%
github.com/smartcontractkit/chainlink-ccv/tools 43.61% 43.61% +0.00%
github.com/smartcontractkit/chainlink-ccv/verifier 36.52% 36.52% +0.00%
Total 48.20% 48.50% +0.30%

Files added (in split/2-clnode-config):

  • github.com/smartcontractkit/chainlink-ccv/integration/pkg/accessors/evm/clnode_config.go

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 standalone chains.<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.

Comment thread integration/pkg/accessors/evm/factory_constructor.go
Comment thread integration/pkg/accessors/evm/clnode_config.go
Comment thread integration/pkg/accessors/evm/clnode_config_test.go
@tt-cll tt-cll mentioned this pull request Jul 31, 2026
2 tasks
isSet bool
}{
{"HTTPURLExtraWrite", node.HTTPURLExtraWrite != nil},
{"Order", node.Order != nil},

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suspect we should adopt this to inherit the multi-node prioritization behavior that is currently used - can we create a follow-up ticket?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tt-cll
tt-cll enabled auto-merge July 31, 2026 15:52
@tt-cll
tt-cll added this pull request to the merge queue Jul 31, 2026
Merged via the queue into main with commit bb329b8 Jul 31, 2026
50 checks passed
@tt-cll
tt-cll deleted the split/2-clnode-config branch July 31, 2026 16:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants