From 84d0771919ab75c6ab2f47b10918154ffd8c856e Mon Sep 17 00:00:00 2001 From: FelixFan1992 Date: Thu, 12 Mar 2026 15:36:16 -0400 Subject: [PATCH 1/2] increase aptos curse mcms deployment gas limit (#21511) --- deployment/ccip/changeset/aptos/operation/curse_mcms.go | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/ccip/changeset/aptos/operation/curse_mcms.go b/deployment/ccip/changeset/aptos/operation/curse_mcms.go index 125f71626b7..97292e22613 100644 --- a/deployment/ccip/changeset/aptos/operation/curse_mcms.go +++ b/deployment/ccip/changeset/aptos/operation/curse_mcms.go @@ -43,6 +43,7 @@ func deployCurseMCMS(b operations.Bundle, deps dependency.AptosDeps, in DeployCu "mcms": in.MCMSAddress, "mcms_register_entrypoints": aptos.AccountOne, }, + aptos.MaxGasAmount(5_000_000), ) if err != nil { return aptos.AccountAddress{}, fmt.Errorf("failed to deploy CurseMCMS: %w", err) From 1784d6b54a46d5b4ffc89a36585013d3da7e7680 Mon Sep 17 00:00:00 2001 From: Dylan Tinianov Date: Thu, 12 Mar 2026 18:07:27 -0400 Subject: [PATCH 2/2] Logtrigger ACK System E2E Testing (#21495) * Add MethodTriggerEventAck * Add ackKey * Update DON2DON * Bump common * Add AckEvent * Use metadata for acks * Bump common * Generate * Bump common * Bump common * Update combined_client.go * Fix AckEvent * Update * Fix AckEvent * Improve logging * Fix AckEvent * Update fake_trigger.go * AckEvent * Add logging * Update test logs * Add log * Update launcher.go * tests logs * Update engine.go * Update engine.go * Test logs * Unimplement AckEvent * Bump common * Bump common * Bump common * Bump common * Bump common * Add AckEvent * Remove lggr * Update launcher_test.go * Add AckEvent * Add AckEvent * Update engine_test.go * lint * Update engine.go * Update trigger.go * lint * lint * Bump common * Add method * Add method to AckEvent * Bump common * Bump common * Create triggerEventStore * Add UpdateDelivery * Update trigger_event_store.go * Generate * Update trigger_event_store.go * Fix typo * Update 0292_cre_trigger_event_schema.sql * Remove anyTypeUrl * Return EventStore pointer * Use ptr receivers * Update ORM + plugin ref * Update 0293_cre_trigger_event_schema.sql * Update trigger_event_store_test.go * Update 0293_cre_trigger_event_schema.sql * Update trigger_event_store.go * Read DB * track trigger event lifecycle * Pass triggerID * Update v2_evm_capability_test.go * Update v2_evm_capability_test.go * Update workflow-gateway-capabilities-don.toml * Bump common * tidy * Verify per chain * per chain trigger verification logic * extract verifyTriggerEventACKs * Bump capabilities + common * lint --- core/capabilities/remote/trigger_publisher.go | 2 +- core/scripts/go.mod | 2 +- core/scripts/go.sum | 4 +- deployment/go.mod | 2 +- deployment/go.sum | 4 +- go.mod | 2 +- go.sum | 4 +- integration-tests/go.mod | 2 +- integration-tests/go.sum | 4 +- integration-tests/load/go.mod | 2 +- integration-tests/load/go.sum | 4 +- plugins/plugins.private.yaml | 2 +- system-tests/lib/go.mod | 2 +- system-tests/lib/go.sum | 4 +- system-tests/tests/go.mod | 2 +- system-tests/tests/go.sum | 4 +- .../tests/smoke/cre/v2_evm_capability_test.go | 91 ++++++++++++++++++- 17 files changed, 113 insertions(+), 24 deletions(-) diff --git a/core/capabilities/remote/trigger_publisher.go b/core/capabilities/remote/trigger_publisher.go index d12108160fe..f52db497bb8 100644 --- a/core/capabilities/remote/trigger_publisher.go +++ b/core/capabilities/remote/trigger_publisher.go @@ -296,7 +296,7 @@ func (p *triggerPublisher) Receive(_ context.Context, msg *types.MessageBody) { ctx, cancel := p.stopCh.NewCtx() defer cancel() p.lggr.Debugw("ACKing trigger event", "triggerEventId", triggerEventID) - err = cfg.underlying.AckEvent(ctx, p.capabilityID, triggerEventID, p.capMethodName) + err = cfg.underlying.AckEvent(ctx, triggerID, triggerEventID, p.capMethodName) if err != nil { p.lggr.Errorw("failed to AckEvent on underlying trigger capability", "eventID", triggerEventID, "capabilityID", p.capabilityID, "err", err) diff --git a/core/scripts/go.mod b/core/scripts/go.mod index 6cf7ae92222..f1444b4713f 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -46,7 +46,7 @@ require ( github.com/shopspring/decimal v1.4.0 github.com/smartcontractkit/chainlink-automation v0.8.1 github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260311190822-5cbfc939dd16 - github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd + github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 github.com/smartcontractkit/chainlink-common/keystore v1.0.2 github.com/smartcontractkit/chainlink-data-streams v0.1.12-0.20260227110503-42b236799872 github.com/smartcontractkit/chainlink-deployments-framework v0.86.0 diff --git a/core/scripts/go.sum b/core/scripts/go.sum index 7cee03db7f9..79134133e5a 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1620,8 +1620,8 @@ github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af98c8ae82/go.mod h1:r6gOO/602z5FQyRxsBHd93/oNsAgboo2+DMhPoisPuU= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619 h1:mM4TnyNkRnNXZ+3WkjL+B1/CvepoQ+Aw+Y1AuRIzJQY= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619/go.mod h1:RnuNcn7DZmjmzEkeEWX0uL5y1oslB3c9URPLOjFU+jE= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd h1:9hEKLyqLGl8juNUKRkNQDGRplchkSobV12BX0tE8RVQ= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 h1:BA5ZFT+8AZtzGbnNyZySl8k9vwaRV3+R0wwEG0+dhLY= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= github.com/smartcontractkit/chainlink-common/keystore v1.0.2 h1:AWisx4JT3QV8tcgh6J5NCrex+wAgTYpWyHsyNPSXzsQ= github.com/smartcontractkit/chainlink-common/keystore v1.0.2/go.mod h1:rSkIHdomyak3YnUtXLenl6poIq8q0V3UZPiiyYqPdGA= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20251211140724-319861e514c4 h1:NOUsjsMzNecbjiPWUQGlRSRAutEvCFrqqyETDJeh5q4= diff --git a/deployment/go.mod b/deployment/go.mod index 70c5b2842a5..c89a6b9376d 100644 --- a/deployment/go.mod +++ b/deployment/go.mod @@ -43,7 +43,7 @@ require ( github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260224214816-cb23ec38649f github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260310183131-8d0f0e383288 github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af98c8ae82 - github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd + github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 github.com/smartcontractkit/chainlink-common/keystore v1.0.2 github.com/smartcontractkit/chainlink-deployments-framework v0.86.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260312040800-ae9a90cffec3 diff --git a/deployment/go.sum b/deployment/go.sum index a17676aa2eb..34d5c1a20ae 100644 --- a/deployment/go.sum +++ b/deployment/go.sum @@ -1383,8 +1383,8 @@ github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af98c8ae82/go.mod h1:r6gOO/602z5FQyRxsBHd93/oNsAgboo2+DMhPoisPuU= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619 h1:mM4TnyNkRnNXZ+3WkjL+B1/CvepoQ+Aw+Y1AuRIzJQY= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619/go.mod h1:RnuNcn7DZmjmzEkeEWX0uL5y1oslB3c9URPLOjFU+jE= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd h1:9hEKLyqLGl8juNUKRkNQDGRplchkSobV12BX0tE8RVQ= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 h1:BA5ZFT+8AZtzGbnNyZySl8k9vwaRV3+R0wwEG0+dhLY= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= github.com/smartcontractkit/chainlink-common/keystore v1.0.2 h1:AWisx4JT3QV8tcgh6J5NCrex+wAgTYpWyHsyNPSXzsQ= github.com/smartcontractkit/chainlink-common/keystore v1.0.2/go.mod h1:rSkIHdomyak3YnUtXLenl6poIq8q0V3UZPiiyYqPdGA= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9oqASnkS03RE1HQwYQQxrO4l46O5JSzxqLgg= diff --git a/go.mod b/go.mod index 67fbdeb6cfd..ebeb58ed04a 100644 --- a/go.mod +++ b/go.mod @@ -85,7 +85,7 @@ require ( github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260224214816-cb23ec38649f github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250912190424-fd2e35d7deb5 github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619 - github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd + github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 github.com/smartcontractkit/chainlink-common/keystore v1.0.2 github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 github.com/smartcontractkit/chainlink-data-streams v0.1.12-0.20260227110503-42b236799872 diff --git a/go.sum b/go.sum index df0d63f724f..b8b019f5e22 100644 --- a/go.sum +++ b/go.sum @@ -1235,8 +1235,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250912190424-fd2e35d7deb5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619 h1:mM4TnyNkRnNXZ+3WkjL+B1/CvepoQ+Aw+Y1AuRIzJQY= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619/go.mod h1:RnuNcn7DZmjmzEkeEWX0uL5y1oslB3c9URPLOjFU+jE= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd h1:9hEKLyqLGl8juNUKRkNQDGRplchkSobV12BX0tE8RVQ= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 h1:BA5ZFT+8AZtzGbnNyZySl8k9vwaRV3+R0wwEG0+dhLY= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= github.com/smartcontractkit/chainlink-common/keystore v1.0.2 h1:AWisx4JT3QV8tcgh6J5NCrex+wAgTYpWyHsyNPSXzsQ= github.com/smartcontractkit/chainlink-common/keystore v1.0.2/go.mod h1:rSkIHdomyak3YnUtXLenl6poIq8q0V3UZPiiyYqPdGA= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9oqASnkS03RE1HQwYQQxrO4l46O5JSzxqLgg= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index a28e8d1675b..b89a7c2c3f7 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -50,7 +50,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260311190822-5cbfc939dd16 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260310183131-8d0f0e383288 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260310183131-8d0f0e383288 - github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd + github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 github.com/smartcontractkit/chainlink-common/keystore v1.0.2 github.com/smartcontractkit/chainlink-deployments-framework v0.86.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260312040800-ae9a90cffec3 diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 189f0de8729..c105a5f0ca3 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1624,8 +1624,8 @@ github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af98c8ae82/go.mod h1:r6gOO/602z5FQyRxsBHd93/oNsAgboo2+DMhPoisPuU= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619 h1:mM4TnyNkRnNXZ+3WkjL+B1/CvepoQ+Aw+Y1AuRIzJQY= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619/go.mod h1:RnuNcn7DZmjmzEkeEWX0uL5y1oslB3c9URPLOjFU+jE= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd h1:9hEKLyqLGl8juNUKRkNQDGRplchkSobV12BX0tE8RVQ= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 h1:BA5ZFT+8AZtzGbnNyZySl8k9vwaRV3+R0wwEG0+dhLY= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= github.com/smartcontractkit/chainlink-common/keystore v1.0.2 h1:AWisx4JT3QV8tcgh6J5NCrex+wAgTYpWyHsyNPSXzsQ= github.com/smartcontractkit/chainlink-common/keystore v1.0.2/go.mod h1:rSkIHdomyak3YnUtXLenl6poIq8q0V3UZPiiyYqPdGA= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9oqASnkS03RE1HQwYQQxrO4l46O5JSzxqLgg= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index 661ff257498..1659886a191 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -32,7 +32,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260311190822-5cbfc939dd16 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260310183131-8d0f0e383288 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260310183131-8d0f0e383288 - github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd + github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 github.com/smartcontractkit/chainlink-deployments-framework v0.86.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260312040800-ae9a90cffec3 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251222115927-36a18321243c diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index fd6b7fa8af5..96ca8eece70 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1602,8 +1602,8 @@ github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af98c8ae82/go.mod h1:r6gOO/602z5FQyRxsBHd93/oNsAgboo2+DMhPoisPuU= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619 h1:mM4TnyNkRnNXZ+3WkjL+B1/CvepoQ+Aw+Y1AuRIzJQY= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619/go.mod h1:RnuNcn7DZmjmzEkeEWX0uL5y1oslB3c9URPLOjFU+jE= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd h1:9hEKLyqLGl8juNUKRkNQDGRplchkSobV12BX0tE8RVQ= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 h1:BA5ZFT+8AZtzGbnNyZySl8k9vwaRV3+R0wwEG0+dhLY= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= github.com/smartcontractkit/chainlink-common/keystore v1.0.2 h1:AWisx4JT3QV8tcgh6J5NCrex+wAgTYpWyHsyNPSXzsQ= github.com/smartcontractkit/chainlink-common/keystore v1.0.2/go.mod h1:rSkIHdomyak3YnUtXLenl6poIq8q0V3UZPiiyYqPdGA= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9oqASnkS03RE1HQwYQQxrO4l46O5JSzxqLgg= diff --git a/plugins/plugins.private.yaml b/plugins/plugins.private.yaml index 3496b01e6df..df063b83179 100644 --- a/plugins/plugins.private.yaml +++ b/plugins/plugins.private.yaml @@ -40,7 +40,7 @@ plugins: installPath: "." evm: - moduleURI: "github.com/smartcontractkit/capabilities/chain_capabilities/evm" - gitRef: "9382dd467b74fe964497d84ac134162eac150322" + gitRef: "fb5ae42e0b1153ed284175c4cd87d80a7eb6fef5" installPath: "." solana: - moduleURI: "github.com/smartcontractkit/capabilities/chain_capabilities/solana" diff --git a/system-tests/lib/go.mod b/system-tests/lib/go.mod index aada963f943..b8497835c05 100644 --- a/system-tests/lib/go.mod +++ b/system-tests/lib/go.mod @@ -32,7 +32,7 @@ require ( github.com/sethvargo/go-retry v0.3.0 github.com/smartcontractkit/chain-selectors v1.0.97 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260310183131-8d0f0e383288 - github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd + github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 github.com/smartcontractkit/chainlink-common/keystore v1.0.2 github.com/smartcontractkit/chainlink-deployments-framework v0.86.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260312040800-ae9a90cffec3 diff --git a/system-tests/lib/go.sum b/system-tests/lib/go.sum index 8b469dc9290..fcd7b31515a 100644 --- a/system-tests/lib/go.sum +++ b/system-tests/lib/go.sum @@ -1583,8 +1583,8 @@ github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af98c8ae82/go.mod h1:r6gOO/602z5FQyRxsBHd93/oNsAgboo2+DMhPoisPuU= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619 h1:mM4TnyNkRnNXZ+3WkjL+B1/CvepoQ+Aw+Y1AuRIzJQY= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619/go.mod h1:RnuNcn7DZmjmzEkeEWX0uL5y1oslB3c9URPLOjFU+jE= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd h1:9hEKLyqLGl8juNUKRkNQDGRplchkSobV12BX0tE8RVQ= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 h1:BA5ZFT+8AZtzGbnNyZySl8k9vwaRV3+R0wwEG0+dhLY= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= github.com/smartcontractkit/chainlink-common/keystore v1.0.2 h1:AWisx4JT3QV8tcgh6J5NCrex+wAgTYpWyHsyNPSXzsQ= github.com/smartcontractkit/chainlink-common/keystore v1.0.2/go.mod h1:rSkIHdomyak3YnUtXLenl6poIq8q0V3UZPiiyYqPdGA= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9oqASnkS03RE1HQwYQQxrO4l46O5JSzxqLgg= diff --git a/system-tests/tests/go.mod b/system-tests/tests/go.mod index ca56a232185..0c8feb0f928 100644 --- a/system-tests/tests/go.mod +++ b/system-tests/tests/go.mod @@ -54,7 +54,7 @@ require ( github.com/rs/zerolog v1.34.0 github.com/shopspring/decimal v1.4.0 github.com/smartcontractkit/chain-selectors v1.0.97 - github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd + github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 github.com/smartcontractkit/chainlink-common/keystore v1.0.2 github.com/smartcontractkit/chainlink-data-streams v0.1.12-0.20260227110503-42b236799872 github.com/smartcontractkit/chainlink-deployments-framework v0.86.0 diff --git a/system-tests/tests/go.sum b/system-tests/tests/go.sum index 3802c0cdb4c..ac9cabeb5da 100644 --- a/system-tests/tests/go.sum +++ b/system-tests/tests/go.sum @@ -1790,8 +1790,8 @@ github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260303213437-47af98c8ae82/go.mod h1:r6gOO/602z5FQyRxsBHd93/oNsAgboo2+DMhPoisPuU= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619 h1:mM4TnyNkRnNXZ+3WkjL+B1/CvepoQ+Aw+Y1AuRIzJQY= github.com/smartcontractkit/chainlink-ccv v0.0.0-20260306124118-a6395a14f619/go.mod h1:RnuNcn7DZmjmzEkeEWX0uL5y1oslB3c9URPLOjFU+jE= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd h1:9hEKLyqLGl8juNUKRkNQDGRplchkSobV12BX0tE8RVQ= -github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310204254-f3e84643d9cd/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9 h1:BA5ZFT+8AZtzGbnNyZySl8k9vwaRV3+R0wwEG0+dhLY= +github.com/smartcontractkit/chainlink-common v0.10.1-0.20260312174130-8651b6078ed9/go.mod h1:0ghbAr7tRO0tT5ZqBXhOyzgUO37tNNe33Yn0hskauVM= github.com/smartcontractkit/chainlink-common/keystore v1.0.2 h1:AWisx4JT3QV8tcgh6J5NCrex+wAgTYpWyHsyNPSXzsQ= github.com/smartcontractkit/chainlink-common/keystore v1.0.2/go.mod h1:rSkIHdomyak3YnUtXLenl6poIq8q0V3UZPiiyYqPdGA= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20251211140724-319861e514c4 h1:NOUsjsMzNecbjiPWUQGlRSRAutEvCFrqqyETDJeh5q4= diff --git a/system-tests/tests/smoke/cre/v2_evm_capability_test.go b/system-tests/tests/smoke/cre/v2_evm_capability_test.go index d625629fd00..2d25ca10984 100644 --- a/system-tests/tests/smoke/cre/v2_evm_capability_test.go +++ b/system-tests/tests/smoke/cre/v2_evm_capability_test.go @@ -2,9 +2,11 @@ package cre import ( "context" + "database/sql" "fmt" "math/big" "math/rand" + "slices" "testing" "time" @@ -16,6 +18,7 @@ import ( commonevents "github.com/smartcontractkit/chainlink-protos/workflows/go/common" workflowevents "github.com/smartcontractkit/chainlink-protos/workflows/go/events" + "github.com/smartcontractkit/chainlink/system-tests/lib/cre" crecontracts "github.com/smartcontractkit/chainlink/system-tests/lib/cre/contracts" "github.com/smartcontractkit/chainlink/system-tests/lib/cre/environment/blockchains" "github.com/smartcontractkit/chainlink/system-tests/lib/cre/environment/blockchains/evm" @@ -265,6 +268,66 @@ func configureEVMLogTriggerWorkflow(t *testing.T, lggr zerolog.Logger, chain blo }, msgEmitter } +// connectTriggerDB connects to the Postgres database where BaseTrigger persists +// pending events for the given chainID. Which database that is depends on +// which DON owns the evm-{chainID} capability. +func connectTriggerDB(t *testing.T, nodeSets []*cre.NodeSet, chainID string) *sql.DB { + t.Helper() + + var port int + var label string + evmFlag := "evm-" + chainID + + // Check workflow NodeSet first (local takes precedence). + for _, ns := range nodeSets { + if slices.Contains(ns.DONTypes, cre.WorkflowDON) && slices.Contains(ns.Capabilities, evmFlag) { + port = ns.DbInput.Port + label = ns.Name + break + } + } + + // Fall back to any NodeSet that has the capability (e.g. capabilities DON). + if port == 0 { + for _, ns := range nodeSets { + if slices.Contains(ns.Capabilities, evmFlag) { + port = ns.DbInput.Port + label = ns.Name + break + } + } + } + require.NotZerof(t, port, "no NodeSet found with evm-%s capability", chainID) + + dsn := fmt.Sprintf( + "host=localhost port=%d user=chainlink password=thispasswordislongenough dbname=db_0 sslmode=disable", + port, + ) + db, err := sql.Open("postgres", dsn) + require.NoError(t, err) + require.NoError(t, db.PingContext(t.Context())) + t.Logf("connected to %s node DB (port %d) for trigger event tracking on chain %s", label, port, chainID) + t.Cleanup(func() { _ = db.Close() }) + return db +} + +type tableStats struct { + inserts int64 + deletes int64 +} + +// snapshotTriggerStats returns the current cumulative insert/delete counts for +// the trigger_pending_events table from pg_stat_user_tables. +func snapshotTriggerStats(ctx context.Context, db *sql.DB) (tableStats, error) { + var s tableStats + err := db.QueryRowContext(ctx, + `SELECT COALESCE(n_tup_ins,0), COALESCE(n_tup_del,0) + FROM pg_stat_user_tables + WHERE relname = 'trigger_pending_events'`, + ).Scan(&s.inserts, &s.deletes) + return s, err +} + func ExecuteEVMLogTriggerTest(t *testing.T, testEnv *ttypes.TestEnvironment) { const workflowFileLocation = "./evm/logtrigger/main.go" lggr := framework.L @@ -294,6 +357,12 @@ func ExecuteEVMLogTriggerTest(t *testing.T, testEnv *ttypes.TestEnvironment) { successfulLogTriggerChains := make([]string, 0, len(chainsToTest)) for chainID, bcOutput := range chainsToTest { + triggerDB := connectTriggerDB(t, testEnv.Config.NodeSets, chainID) + + baselineStats, err := snapshotTriggerStats(t.Context(), triggerDB) + require.NoError(t, err, "failed to snapshot trigger_pending_events stats for chain %s", chainID) + t.Logf("baseline trigger_pending_events stats for chain %s: inserts=%d deletes=%d", chainID, baselineStats.inserts, baselineStats.deletes) + lggr.Info().Msgf("Creating EVM LogTrigger workflow configuration for chain %s", chainID) workflowConfig, msgEmitter := configureEVMLogTriggerWorkflow(t, lggr, bcOutput) @@ -301,7 +370,7 @@ func ExecuteEVMLogTriggerTest(t *testing.T, testEnv *ttypes.TestEnvironment) { lggr.Info().Msgf("About to deploy Workflow %s on chain %s", workflowName, chainID) t_helpers.CompileAndDeployWorkflow(t, testEnv, lggr, workflowName, &workflowConfig, workflowFileLocation) - message := "Data for log trigger" + message := "Data for log trigger chain " + chainID // start background event emission every 10s while WatchWorkflowLogs is running, so that the workflow has events to pick up eventually var emittedEventCount int64 ticker := time.NewTicker(10 * time.Second) @@ -330,6 +399,8 @@ func ExecuteEVMLogTriggerTest(t *testing.T, testEnv *ttypes.TestEnvironment) { t_helpers.WatchWorkflowLogs(t, lggr, userLogsCh, baseMessageCh, t_helpers.WorkflowEngineInitErrorLog, expectedUserLog, 4*time.Minute) emitCancelFn() + verifyTriggerEventACKs(t, triggerDB, baselineStats) + lggr.Info().Msgf("🎉 LogTrigger Workflow %s executed successfully on chain %s", workflowName, chainID) successfulLogTriggerChains = append(successfulLogTriggerChains, chainID) } @@ -340,3 +411,21 @@ func ExecuteEVMLogTriggerTest(t *testing.T, testEnv *ttypes.TestEnvironment) { lggr.Info().Msgf("✅ LogTrigger test ran for chains: %v", successfulLogTriggerChains) } + +// verifyTriggerEventACKs ensures the Base Trigger persisted events and processed ACKs +// by checking cumulative insert/delete counters in pg_stat_user_tables. +// This works for both local triggers (where ACK is near-instant) and remote +// triggers (where there's a network round-trip). +func verifyTriggerEventACKs(t *testing.T, triggerDB *sql.DB, baselineStats tableStats) { + require.Eventually(t, func() bool { + cur, sErr := snapshotTriggerStats(t.Context(), triggerDB) + if sErr != nil { + t.Logf("stats query error: %v", sErr) + return false + } + newInserts := cur.inserts - baselineStats.inserts + newDeletes := cur.deletes - baselineStats.deletes + t.Logf("trigger_pending_events stats delta: inserts=%d deletes=%d", newInserts, newDeletes) + return newInserts > 0 && newDeletes > 0 + }, 2*time.Minute, time.Second, "trigger events were never inserted and/or ACKed in the database") +}