Skip to content

Conversation

@fernandezlautaro
Copy link
Contributor

@fernandezlautaro fernandezlautaro commented Sep 9, 2025

Jira: https://smartcontract-it.atlassian.net/browse/PLEX-1706

After PRODCRE-792 was merge it is now possible to hook up a capability that had multiple capabilities types (read, trigger, etc.) while also adding the one_at_a_time strategy calling (needed for the WriteReport).

This PR enables the EVM Capability to be used in a remote/capabilities DON by registering all the methods configs (all reads, log trigger, and write report), while also using the cascade calling (one_at_a_time for the write report)

Requires

Supports

@fernandezlautaro fernandezlautaro force-pushed the PLEX-1706_evmCapRemoteDonConfigs branch from 9c3fcbd to 80f68d2 Compare September 9, 2025 18:56
@github-actions
Copy link
Contributor

github-actions bot commented Sep 9, 2025

I see you updated files related to core. Please run pnpm changeset in the root directory to add a changeset as well as in the text include at least one of the following tags:

  • #added For any new functionality added.
  • #breaking_change For any functionality that requires manual action for the node to boot.
  • #bugfix For bug fixes.
  • #changed For any change to the existing functionality.
  • #db_update For any feature that introduces updates to database schema.
  • #deprecation_notice For any upcoming deprecation functionality.
  • #internal For changesets that need to be excluded from the final changelog.
  • #nops For any feature that is NOP facing and needs to be in the official Release Notes for the release.
  • #removed For any functionality/config that is removed.
  • #updated For any functionality that is updated.
  • #wip For any change that is not ready yet and external communication about it should be held off till it is feature complete.

@fernandezlautaro fernandezlautaro force-pushed the PLEX-1706_evmCapRemoteDonConfigs branch from 80f68d2 to a541353 Compare September 9, 2025 18:58
@fernandezlautaro fernandezlautaro marked this pull request as ready for review September 9, 2025 19:13
@fernandezlautaro fernandezlautaro requested review from a team as code owners September 9, 2025 19:13
@fernandezlautaro fernandezlautaro requested review from bolekk, dhaidashenko and ilija42 and removed request for krehermann September 9, 2025 19:13
Copy link
Contributor

@krehermann krehermann left a comment

Choose a reason for hiding this comment

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

@prashantkumar1982 saw similar failures as this pr

iirc the root cause was bad topology config. he may know how to fix

ode_id:"node_LnoMUamXGtGmSwQzdLz9G"  spec:"\n\ttype = \"bootstrap\"\n\tschemaVersion = 1\n\texternalJobID = \"c815840d-0eeb-4534-a039-9bccfaec3ff1\"\n\tname = \"ocr3-bootstrap-capability_evm_1337-1337\"\n\tcontractID = \"0x0165878A594ca255338adfa4d48449f69242Eb8F\"\n\tcontractConfigTrackerPollInterval = \"1s\"\n\tcontractConfigConfirmations = 1\n\trelay = \"evm\"\n\t[relayConfig]\n\tchainID = 1337\n\tproviderType = \"ocr3-capability\"\n"
Error: failed to setup test environment: failed to create jobs with Job Distributor: failed to create jobs: failed to create jobs for DON 2: failed to create at least one job for DON: failed to propose job for node node_LnoMUamXGtGmSwQzdLz9G: failed to accept job. err: failed to approve job proposal spec
Stack trace: goroutine 1 [running]:
runtime/debug.Stack()
	/opt/hostedtoolcache/go/1.24.5/x64/src/runtime/debug/stack.go:26 +0x5e
github.com/smartcontractkit/chainlink/core/scripts/cre/environment/environment.startCmd.func1(0xc001896908, {0xc00226b340?, 0x4?, 0xc5f3b15?})
	/home/runner/_work/chainlink/chainlink/core/scripts/cre/environment/environment/environment.go:322 +0x117f
github.com/spf13/cobra.(*Command).execute(0xc001896908, {0xc00226b320, 0x2, 0x2})
	/home/runner/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1015 +0xaaa
github.com/spf13/cobra.(*Command).ExecuteC(0x126b1400)
	/home/runner/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1148 +0x46f
github.com/spf13/cobra.(*Command).Execute(0x0?)
	/home/runner/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1071 +0x13
main.main()
	/home/runner/_work/chainlink/chainlink/core/scripts/cre/environment/main.go:26 +0x1a

Waiting 15s before cleanup
7:24PM INF Writing Docker containers logs
7:24PM INF Cleaning up docker containers label=framework=ctf
Error: failed to start environment: failed to setup test environment: failed to create jobs with Job Distributor: failed to create jobs: failed to create jobs for DON 2: failed to create at least one job for DON: failed to propose job for node node_LnoMUamXGtGmSwQzdLz9G: failed to accept job. err: failed to approve job proposal spec

Copy link
Contributor

@bolekk bolekk left a comment

Choose a reason for hiding this comment

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

Config LGTM. I can approve once CI is green.

dhaidashenko
dhaidashenko previously approved these changes Sep 10, 2025
@prashantkumar1982
Copy link
Contributor

@prashantkumar1982 saw similar failures as this pr

iirc the root cause was bad topology config. he may know how to fix

ode_id:"node_LnoMUamXGtGmSwQzdLz9G"  spec:"\n\ttype = \"bootstrap\"\n\tschemaVersion = 1\n\texternalJobID = \"c815840d-0eeb-4534-a039-9bccfaec3ff1\"\n\tname = \"ocr3-bootstrap-capability_evm_1337-1337\"\n\tcontractID = \"0x0165878A594ca255338adfa4d48449f69242Eb8F\"\n\tcontractConfigTrackerPollInterval = \"1s\"\n\tcontractConfigConfirmations = 1\n\trelay = \"evm\"\n\t[relayConfig]\n\tchainID = 1337\n\tproviderType = \"ocr3-capability\"\n"
Error: failed to setup test environment: failed to create jobs with Job Distributor: failed to create jobs: failed to create jobs for DON 2: failed to create at least one job for DON: failed to propose job for node node_LnoMUamXGtGmSwQzdLz9G: failed to accept job. err: failed to approve job proposal spec
Stack trace: goroutine 1 [running]:
runtime/debug.Stack()
	/opt/hostedtoolcache/go/1.24.5/x64/src/runtime/debug/stack.go:26 +0x5e
github.com/smartcontractkit/chainlink/core/scripts/cre/environment/environment.startCmd.func1(0xc001896908, {0xc00226b340?, 0x4?, 0xc5f3b15?})
	/home/runner/_work/chainlink/chainlink/core/scripts/cre/environment/environment/environment.go:322 +0x117f
github.com/spf13/cobra.(*Command).execute(0xc001896908, {0xc00226b320, 0x2, 0x2})
	/home/runner/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1015 +0xaaa
github.com/spf13/cobra.(*Command).ExecuteC(0x126b1400)
	/home/runner/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1148 +0x46f
github.com/spf13/cobra.(*Command).Execute(0x0?)
	/home/runner/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1071 +0x13
main.main()
	/home/runner/_work/chainlink/chainlink/core/scripts/cre/environment/main.go:26 +0x1a

Waiting 15s before cleanup
7:24PM INF Writing Docker containers logs
7:24PM INF Cleaning up docker containers label=framework=ctf
Error: failed to start environment: failed to setup test environment: failed to create jobs with Job Distributor: failed to create jobs: failed to create jobs for DON 2: failed to create at least one job for DON: failed to propose job for node node_LnoMUamXGtGmSwQzdLz9G: failed to accept job. err: failed to approve job proposal spec

Yes, you need to make sure your capability is added to the right nodeset in the topology configs.

@prashantkumar1982
Copy link
Contributor

@prashantkumar1982 saw similar failures as this pr
iirc the root cause was bad topology config. he may know how to fix

ode_id:"node_LnoMUamXGtGmSwQzdLz9G"  spec:"\n\ttype = \"bootstrap\"\n\tschemaVersion = 1\n\texternalJobID = \"c815840d-0eeb-4534-a039-9bccfaec3ff1\"\n\tname = \"ocr3-bootstrap-capability_evm_1337-1337\"\n\tcontractID = \"0x0165878A594ca255338adfa4d48449f69242Eb8F\"\n\tcontractConfigTrackerPollInterval = \"1s\"\n\tcontractConfigConfirmations = 1\n\trelay = \"evm\"\n\t[relayConfig]\n\tchainID = 1337\n\tproviderType = \"ocr3-capability\"\n"
Error: failed to setup test environment: failed to create jobs with Job Distributor: failed to create jobs: failed to create jobs for DON 2: failed to create at least one job for DON: failed to propose job for node node_LnoMUamXGtGmSwQzdLz9G: failed to accept job. err: failed to approve job proposal spec
Stack trace: goroutine 1 [running]:
runtime/debug.Stack()
	/opt/hostedtoolcache/go/1.24.5/x64/src/runtime/debug/stack.go:26 +0x5e
github.com/smartcontractkit/chainlink/core/scripts/cre/environment/environment.startCmd.func1(0xc001896908, {0xc00226b340?, 0x4?, 0xc5f3b15?})
	/home/runner/_work/chainlink/chainlink/core/scripts/cre/environment/environment/environment.go:322 +0x117f
github.com/spf13/cobra.(*Command).execute(0xc001896908, {0xc00226b320, 0x2, 0x2})
	/home/runner/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1015 +0xaaa
github.com/spf13/cobra.(*Command).ExecuteC(0x126b1400)
	/home/runner/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1148 +0x46f
github.com/spf13/cobra.(*Command).Execute(0x0?)
	/home/runner/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1071 +0x13
main.main()
	/home/runner/_work/chainlink/chainlink/core/scripts/cre/environment/main.go:26 +0x1a

Waiting 15s before cleanup
7:24PM INF Writing Docker containers logs
7:24PM INF Cleaning up docker containers label=framework=ctf
Error: failed to start environment: failed to setup test environment: failed to create jobs with Job Distributor: failed to create jobs: failed to create jobs for DON 2: failed to create at least one job for DON: failed to propose job for node node_LnoMUamXGtGmSwQzdLz9G: failed to accept job. err: failed to approve job proposal spec

Yes, you need to make sure your capability is added to the right nodeset in the topology configs.

In you topology toml file, you need to add your capability to the capabilities list.

See the existing line:
capabilities = ["web-api-target","vault"]

I think you need the evm capability here?

@fernandezlautaro
Copy link
Contributor Author

@prashantkumar1982 saw similar failures as this pr
iirc the root cause was bad topology config. he may know how to fix

ode_id:"node_LnoMUamXGtGmSwQzdLz9G"  spec:"\n\ttype = \"bootstrap\"\n\tschemaVersion = 1\n\texternalJobID = \"c815840d-0eeb-4534-a039-9bccfaec3ff1\"\n\tname = \"ocr3-bootstrap-capability_evm_1337-1337\"\n\tcontractID = \"0x0165878A594ca255338adfa4d48449f69242Eb8F\"\n\tcontractConfigTrackerPollInterval = \"1s\"\n\tcontractConfigConfirmations = 1\n\trelay = \"evm\"\n\t[relayConfig]\n\tchainID = 1337\n\tproviderType = \"ocr3-capability\"\n"
Error: failed to setup test environment: failed to create jobs with Job Distributor: failed to create jobs: failed to create jobs for DON 2: failed to create at least one job for DON: failed to propose job for node node_LnoMUamXGtGmSwQzdLz9G: failed to accept job. err: failed to approve job proposal spec
Stack trace: goroutine 1 [running]:
runtime/debug.Stack()
	/opt/hostedtoolcache/go/1.24.5/x64/src/runtime/debug/stack.go:26 +0x5e
github.com/smartcontractkit/chainlink/core/scripts/cre/environment/environment.startCmd.func1(0xc001896908, {0xc00226b340?, 0x4?, 0xc5f3b15?})
	/home/runner/_work/chainlink/chainlink/core/scripts/cre/environment/environment/environment.go:322 +0x117f
github.com/spf13/cobra.(*Command).execute(0xc001896908, {0xc00226b320, 0x2, 0x2})
	/home/runner/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1015 +0xaaa
github.com/spf13/cobra.(*Command).ExecuteC(0x126b1400)
	/home/runner/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1148 +0x46f
github.com/spf13/cobra.(*Command).Execute(0x0?)
	/home/runner/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1071 +0x13
main.main()
	/home/runner/_work/chainlink/chainlink/core/scripts/cre/environment/main.go:26 +0x1a

Waiting 15s before cleanup
7:24PM INF Writing Docker containers logs
7:24PM INF Cleaning up docker containers label=framework=ctf
Error: failed to start environment: failed to setup test environment: failed to create jobs with Job Distributor: failed to create jobs: failed to create jobs for DON 2: failed to create at least one job for DON: failed to propose job for node node_LnoMUamXGtGmSwQzdLz9G: failed to accept job. err: failed to approve job proposal spec

Yes, you need to make sure your capability is added to the right nodeset in the topology configs.

In you topology toml file, you need to add your capability to the capabilities list.

See the existing line: capabilities = ["web-api-target","vault"]

I think you need the evm capability here?

Accordingly to docs, I should not add it there.
Capabilities that are orthogonal/chain-agnostic live in the capabilities field as you mention (like vault or web-api-target, but chain-dependants like evm, write-evm, or read-contract must go under [nodesets.chain_capabilities]

Also, current TOML workflow-gateway-capabilities-don.toml ran locally managed to work, I deployed the EVM capability using Bolek's new work for remote DON and LogTrigger, WriteReport and GetTxByHash are working.

[nodesets.chain_capabilities]
write-evm = ["2337"]
read-contract = ["2337"]
evm = ["1337"]
Copy link
Contributor

Choose a reason for hiding this comment

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

@fernandezlautaro I think you should remove it from the workflow DON - maybe that's causing CI failures?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

trying that ATM, but I'm seeing several errors in CI like [Run Core CRE E2E Tests For PR / run-system-tests (Test_CRE_Suite, workflow, configs/workflow-don.toml)] which will run the tests using the workflow-don.toml, that has nothing to do with my changes in the workflow-gateway-capabilities-don.toml.
We will see what CI reports in a bit

@fernandezlautaro fernandezlautaro force-pushed the PLEX-1706_evmCapRemoteDonConfigs branch from 922c29c to 3a83c42 Compare September 11, 2025 03:36
@fernandezlautaro fernandezlautaro requested review from prashantkumar1982 and removed request for prashantkumar1982 September 12, 2025 22:11
@cl-sonarqube-production
Copy link

@bolekk bolekk enabled auto-merge September 13, 2025 01:11
@bolekk bolekk added this pull request to the merge queue Sep 15, 2025
write-evm = ["1337"]
evm = ["1337"] # TODO: move to capabilities DON when supported
read-contract = ["1337"]
evm = ["1337"] # TODO: move to capabilities DON when fix for WriteReport is done
Copy link
Contributor

Choose a reason for hiding this comment

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

assuming this is transmission strategy?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

no, to use the new codebase for the transmission strategy the capability has to be deployed in the capabilities don which I cannot do right now due to broken tests I'm planning to fix them now.

One of them is directly impacted by this https://smartcontract-it.atlassian.net/browse/PLEX-1730, and 2 others I didn't debug them properly.

Unless you were asking for the exact code regarding the transmission strategy, which is done in several PRs, among them #19102 (there are other fixes scattered while I was testing this)

@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Sep 15, 2025
@ilija42 ilija42 added this pull request to the merge queue Sep 15, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Sep 15, 2025
@ilija42 ilija42 added this pull request to the merge queue Sep 15, 2025
Merged via the queue into develop with commit 2780d31 Sep 15, 2025
156 of 157 checks passed
@ilija42 ilija42 deleted the PLEX-1706_evmCapRemoteDonConfigs branch September 15, 2025 14:12
cll-gg pushed a commit that referenced this pull request Sep 16, 2025
* PLEX-1706 Adding EVM cap methods for remote don

* lint

* leaving EVM cap only in remote DON

* fixing unmarshalling problem for interface types

* lint

* revert remote evm capability to workflow don so tests pass

* comment
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.

6 participants