From bd4bc78f2a9ca50ef039b4a6907ec3c0b0109454 Mon Sep 17 00:00:00 2001 From: Terry Tata Date: Wed, 20 May 2026 14:03:25 -0700 Subject: [PATCH] gomod --- .../v2_0_0/adapters/chain_family.go | 23 ++-- chains/evm/deployment/v2_0_0/adapters/init.go | 18 ++- .../sequences/configure_chain_for_lanes.go | 122 +++++++++--------- .../configure_chain_for_lanes_test.go | 65 ++++------ .../v2_0_0/testadapter/test_adapter_test.go | 22 +--- .../deployment/v2_0_0/testsetup/testsetup.go | 18 +++ chains/evm/go.mod | 6 +- chains/evm/go.sum | 4 +- deployment/v2_0_0/adapters/chain_family.go | 42 +++--- .../v2_0_0/adapters/chain_family_test.go | 4 +- ...onfigure_chains_for_lanes_from_topology.go | 63 ++++----- ...ure_chains_for_lanes_from_topology_test.go | 30 ++--- devenv/go.mod | 4 +- devenv/go.sum | 4 +- integration-tests/go.mod | 4 +- integration-tests/go.sum | 4 +- 16 files changed, 209 insertions(+), 224 deletions(-) diff --git a/chains/evm/deployment/v2_0_0/adapters/chain_family.go b/chains/evm/deployment/v2_0_0/adapters/chain_family.go index 1e34de19cc..7afb9cf4ac 100644 --- a/chains/evm/deployment/v2_0_0/adapters/chain_family.go +++ b/chains/evm/deployment/v2_0_0/adapters/chain_family.go @@ -7,6 +7,7 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" + "k8s.io/utils/ptr" cldf_chain "github.com/smartcontractkit/chainlink-deployments-framework/chain" "github.com/smartcontractkit/chainlink-deployments-framework/datastore" @@ -184,18 +185,18 @@ func (a *ChainFamilyAdapter) GetChainFamilySelector() [4]byte { return evmFamilySelector } -func (a *ChainFamilyAdapter) GetDefaultFeeQuoterDestChainConfig() ccvadapters.FeeQuoterDestChainConfig { - return ccvadapters.FeeQuoterDestChainConfig{ - IsEnabled: true, - MaxDataBytes: 32_000, - MaxPerMsgGasLimit: 8_000_000, - DestGasPerPayloadByteBase: 20, +func (a *ChainFamilyAdapter) GetDefaultFeeQuoterDestChainConfig() ccvadapters.FeeQuoterDestChainConfigOverrides { + return ccvadapters.FeeQuoterDestChainConfigOverrides{ + IsEnabled: ptr.To(true), + MaxDataBytes: ptr.To(uint32(32_000)), + MaxPerMsgGasLimit: ptr.To(uint32(15_000_000)), + DestGasPerPayloadByteBase: ptr.To(uint8(20)), ChainFamilySelector: evmFamilySelector, - DefaultTokenFeeUSDCents: 25, - DefaultTokenDestGasOverhead: 90_000, - DefaultTxGasLimit: 200_000, - NetworkFeeUSDCents: 10, - LinkFeeMultiplierPercent: 90, + DefaultTokenFeeUSDCents: ptr.To(uint16(0)), + DefaultTokenDestGasOverhead: ptr.To(uint32(90_000)), + DefaultTxGasLimit: ptr.To(uint32(200_000)), + NetworkFeeUSDCents: ptr.To(uint16(10)), + LinkFeeMultiplierPercent: ptr.To(uint8(90)), // USDPerUnitGas is not set here to avoid doing a gas price update by default } } diff --git a/chains/evm/deployment/v2_0_0/adapters/init.go b/chains/evm/deployment/v2_0_0/adapters/init.go index d8499d7a34..45c77ff83c 100644 --- a/chains/evm/deployment/v2_0_0/adapters/init.go +++ b/chains/evm/deployment/v2_0_0/adapters/init.go @@ -93,16 +93,14 @@ func init() { lanes.GetLaneAdapterRegistry().RegisterLaneAdapter(chainsel.FamilyEVM, v, &ChainFamilyAdapter{}) ccvadapters.GetChainFamilyRegistry().RegisterChainFamily(chainsel.FamilyEVM, &ChainFamilyAdapter{}) - // Register all EVM ccv adapter implementations into the ccv singleton registry. - ccvdeploymentadapters.GetRegistry().Register(chainsel.FamilyEVM, ccvdeploymentadapters.ChainAdapters{ - Aggregator: &EVMCCVAggregatorConfigAdapter{}, - Executor: &EVMCCVExecutorConfigAdapter{}, - Verifier: &EVMCCVVerifierConfigAdapter{}, - Indexer: &EVMCCVIndexerConfigAdapter{}, - TokenVerifier: &EVMCCVTokenVerifierConfigAdapter{}, - CommitteeVerifierOnchain: &EVMCCVCommitteeVerifierOnchainAdapter{}, - CommitteeVerifierDeploy: &EVMCommitteeVerifierDeployAdapter{}, - }) + // Register all EVM ccv adapter implementations into the ccv singleton registries. + ccvdeploymentadapters.GetAggregatorRegistry().Register(chainsel.FamilyEVM, &EVMCCVAggregatorConfigAdapter{}) + ccvdeploymentadapters.GetExecutorRegistry().Register(chainsel.FamilyEVM, &EVMCCVExecutorConfigAdapter{}) + ccvdeploymentadapters.GetVerifierRegistry().Register(chainsel.FamilyEVM, &EVMCCVVerifierConfigAdapter{}) + ccvdeploymentadapters.GetIndexerRegistry().Register(chainsel.FamilyEVM, &EVMCCVIndexerConfigAdapter{}) + ccvdeploymentadapters.GetTokenVerifierRegistry().Register(chainsel.FamilyEVM, &EVMCCVTokenVerifierConfigAdapter{}) + ccvdeploymentadapters.GetCommitteeVerifierOnchainRegistry().Register(chainsel.FamilyEVM, &EVMCCVCommitteeVerifierOnchainAdapter{}) + ccvdeploymentadapters.GetCommitteeVerifierDeployRegistry().Register(chainsel.FamilyEVM, &EVMCommitteeVerifierDeployAdapter{}) ccvadapters.GetCommitteeVerifierContractRegistry().Register(chainsel.FamilyEVM, &EVMCommitteeVerifierContractAdapter{}) ccvadapters.GetExecutorConfigRegistry().Register(chainsel.FamilyEVM, &EVMExecutorConfigAdapter{}) ccvadapters.GetVerifierJobConfigRegistry().Register(chainsel.FamilyEVM, &EVMVerifierJobConfigAdapter{}) diff --git a/chains/evm/deployment/v2_0_0/sequences/configure_chain_for_lanes.go b/chains/evm/deployment/v2_0_0/sequences/configure_chain_for_lanes.go index 1faa1be46a..b06333568a 100644 --- a/chains/evm/deployment/v2_0_0/sequences/configure_chain_for_lanes.go +++ b/chains/evm/deployment/v2_0_0/sequences/configure_chain_for_lanes.go @@ -7,6 +7,7 @@ import ( "github.com/Masterminds/semver/v3" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" + "k8s.io/utils/ptr" mcms_types "github.com/smartcontractkit/mcms/types" @@ -20,13 +21,14 @@ import ( seqtypes "github.com/smartcontractkit/chainlink-ccip/deployment/utils/sequences" changesetadapters "github.com/smartcontractkit/chainlink-ccip/deployment/v2_0_0/adapters" + fqc "github.com/smartcontractkit/chainlink-ccip/chains/evm/gobindings/generated/v2_0_0/fee_quoter" + "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v2_0_0/operations/committee_verifier" "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v2_0_0/operations/fee_quoter" "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v2_0_0/operations/offramp" "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v2_0_0/operations/onramp" "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v2_0_0/operations/proxy" "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v2_0_0/versioned_verifier_resolver" - fqc "github.com/smartcontractkit/chainlink-ccip/chains/evm/gobindings/generated/v2_0_0/fee_quoter" ) // ConfigureChainForLanes is the canonical sequence for configuring an EVM chain to participate @@ -185,7 +187,7 @@ var ConfigureChainForLanes = cldf_ops.NewSequence( // FeeQuoter dest chain config: when OverrideExistingConfig is false, we skip // chains that already have an enabled config to avoid accidentally overwriting - // production parameters. When true, we always diff and update. + // production parameters. When true, we always update. if !remoteConfig.FeeQuoterDestChainConfig.OverrideExistingConfig { destChainCfg, err := feeQContract.GetDestChainConfig(&bind.CallOpts{Context: b.GetContext()}, remoteSelector) if err != nil { @@ -492,18 +494,55 @@ func maybeAddOnRampDestChainConfigArgOnLocalChain( // USDPerUnitGas is intentionally excluded because it is updated via a separate // FeeQuoter.UpdatePrices call (gas prices live in a different on-chain mapping). -func feeQuoterDestChainConfigEqualTo(cur fqc.FeeQuoterDestChainConfig, desired changesetadapters.FeeQuoterDestChainConfig) bool { - return cur.IsEnabled == desired.IsEnabled && - cur.MaxDataBytes == desired.MaxDataBytes && - cur.MaxPerMsgGasLimit == desired.MaxPerMsgGasLimit && - cur.DestGasOverhead == desired.DestGasOverhead && - cur.DestGasPerPayloadByteBase == desired.DestGasPerPayloadByteBase && +func feeQuoterDestChainConfigEqualTo(cur fqc.FeeQuoterDestChainConfig, desired changesetadapters.FeeQuoterDestChainConfigOverrides) bool { + return cur.IsEnabled == *desired.IsEnabled && + cur.MaxDataBytes == *desired.MaxDataBytes && + cur.MaxPerMsgGasLimit == *desired.MaxPerMsgGasLimit && + cur.DestGasOverhead == *desired.DestGasOverhead && + cur.DestGasPerPayloadByteBase == *desired.DestGasPerPayloadByteBase && cur.ChainFamilySelector == desired.ChainFamilySelector && - cur.DefaultTokenFeeUSDCents == desired.DefaultTokenFeeUSDCents && - cur.DefaultTokenDestGasOverhead == desired.DefaultTokenDestGasOverhead && - cur.DefaultTxGasLimit == desired.DefaultTxGasLimit && - cur.NetworkFeeUSDCents == desired.NetworkFeeUSDCents && - cur.LinkFeeMultiplierPercent == desired.LinkFeeMultiplierPercent + cur.DefaultTokenFeeUSDCents == *desired.DefaultTokenFeeUSDCents && + cur.DefaultTokenDestGasOverhead == *desired.DefaultTokenDestGasOverhead && + cur.DefaultTxGasLimit == *desired.DefaultTxGasLimit && + cur.NetworkFeeUSDCents == *desired.NetworkFeeUSDCents && + cur.LinkFeeMultiplierPercent == *desired.LinkFeeMultiplierPercent +} + +func fillFeeQuoterDestChainConfigOverridesFromOnChain( + desired changesetadapters.FeeQuoterDestChainConfigOverrides, + cur fqc.FeeQuoterDestChainConfig, +) changesetadapters.FeeQuoterDestChainConfigOverrides { + if desired.IsEnabled == nil { + desired.IsEnabled = ptr.To(cur.IsEnabled) + } + if desired.MaxDataBytes == nil { + desired.MaxDataBytes = ptr.To(cur.MaxDataBytes) + } + if desired.MaxPerMsgGasLimit == nil { + desired.MaxPerMsgGasLimit = ptr.To(cur.MaxPerMsgGasLimit) + } + if desired.DestGasOverhead == nil { + desired.DestGasOverhead = ptr.To(cur.DestGasOverhead) + } + if desired.DestGasPerPayloadByteBase == nil { + desired.DestGasPerPayloadByteBase = ptr.To(cur.DestGasPerPayloadByteBase) + } + if desired.DefaultTokenFeeUSDCents == nil { + desired.DefaultTokenFeeUSDCents = ptr.To(cur.DefaultTokenFeeUSDCents) + } + if desired.DefaultTokenDestGasOverhead == nil { + desired.DefaultTokenDestGasOverhead = ptr.To(cur.DefaultTokenDestGasOverhead) + } + if desired.DefaultTxGasLimit == nil { + desired.DefaultTxGasLimit = ptr.To(cur.DefaultTxGasLimit) + } + if desired.NetworkFeeUSDCents == nil { + desired.NetworkFeeUSDCents = ptr.To(cur.NetworkFeeUSDCents) + } + if desired.LinkFeeMultiplierPercent == nil { + desired.LinkFeeMultiplierPercent = ptr.To(cur.LinkFeeMultiplierPercent) + } + return desired } // maybeAddFeeQuoterDestChainConfigArgOnLocalChain compares the desired FeeQuoter dest chain @@ -531,40 +570,7 @@ func maybeAddFeeQuoterDestChainConfigArgOnLocalChain( cur = fetched } - desired := remoteConfig.FeeQuoterDestChainConfig - if !desired.IsEnabled { - desired.IsEnabled = cur.IsEnabled - } - if desired.MaxDataBytes == 0 { - desired.MaxDataBytes = cur.MaxDataBytes - } - if desired.MaxPerMsgGasLimit == 0 { - desired.MaxPerMsgGasLimit = cur.MaxPerMsgGasLimit - } - if desired.DestGasOverhead == 0 { - desired.DestGasOverhead = cur.DestGasOverhead - } - if desired.DestGasPerPayloadByteBase == 0 { - desired.DestGasPerPayloadByteBase = cur.DestGasPerPayloadByteBase - } - if desired.ChainFamilySelector == [4]byte{} { - desired.ChainFamilySelector = cur.ChainFamilySelector - } - if desired.DefaultTokenFeeUSDCents == 0 { - desired.DefaultTokenFeeUSDCents = cur.DefaultTokenFeeUSDCents - } - if desired.DefaultTokenDestGasOverhead == 0 { - desired.DefaultTokenDestGasOverhead = cur.DefaultTokenDestGasOverhead - } - if desired.DefaultTxGasLimit == 0 { - desired.DefaultTxGasLimit = cur.DefaultTxGasLimit - } - if desired.NetworkFeeUSDCents == 0 { - desired.NetworkFeeUSDCents = cur.NetworkFeeUSDCents - } - if desired.LinkFeeMultiplierPercent == 0 { - desired.LinkFeeMultiplierPercent = cur.LinkFeeMultiplierPercent - } + desired := fillFeeQuoterDestChainConfigOverridesFromOnChain(remoteConfig.FeeQuoterDestChainConfig, cur) if feeQuoterDestChainConfigEqualTo(cur, desired) { return feeQuoterArgs, nil } @@ -835,19 +841,19 @@ func configureCommitteeVerifierAsDest( return writes, nil } -func adapterDestChainConfigToFeeQuoterV2(cfg changesetadapters.FeeQuoterDestChainConfig) fee_quoter.DestChainConfig { +func adapterDestChainConfigToFeeQuoterV2(cfg changesetadapters.FeeQuoterDestChainConfigOverrides) fee_quoter.DestChainConfig { return fee_quoter.DestChainConfig{ - IsEnabled: cfg.IsEnabled, - MaxDataBytes: cfg.MaxDataBytes, - MaxPerMsgGasLimit: cfg.MaxPerMsgGasLimit, - DestGasOverhead: cfg.DestGasOverhead, - DestGasPerPayloadByteBase: cfg.DestGasPerPayloadByteBase, + IsEnabled: *cfg.IsEnabled, + MaxDataBytes: *cfg.MaxDataBytes, + MaxPerMsgGasLimit: *cfg.MaxPerMsgGasLimit, + DestGasOverhead: *cfg.DestGasOverhead, + DestGasPerPayloadByteBase: *cfg.DestGasPerPayloadByteBase, ChainFamilySelector: cfg.ChainFamilySelector, - DefaultTokenFeeUSDCents: cfg.DefaultTokenFeeUSDCents, - DefaultTokenDestGasOverhead: cfg.DefaultTokenDestGasOverhead, - DefaultTxGasLimit: cfg.DefaultTxGasLimit, - NetworkFeeUSDCents: cfg.NetworkFeeUSDCents, - LinkFeeMultiplierPercent: cfg.LinkFeeMultiplierPercent, + DefaultTokenFeeUSDCents: *cfg.DefaultTokenFeeUSDCents, + DefaultTokenDestGasOverhead: *cfg.DefaultTokenDestGasOverhead, + DefaultTxGasLimit: *cfg.DefaultTxGasLimit, + NetworkFeeUSDCents: *cfg.NetworkFeeUSDCents, + LinkFeeMultiplierPercent: *cfg.LinkFeeMultiplierPercent, } } diff --git a/chains/evm/deployment/v2_0_0/sequences/configure_chain_for_lanes_test.go b/chains/evm/deployment/v2_0_0/sequences/configure_chain_for_lanes_test.go index bd94868efd..a4e075df25 100644 --- a/chains/evm/deployment/v2_0_0/sequences/configure_chain_for_lanes_test.go +++ b/chains/evm/deployment/v2_0_0/sequences/configure_chain_for_lanes_test.go @@ -16,6 +16,8 @@ import ( "github.com/smartcontractkit/chainlink-deployments-framework/operations" chainsel "github.com/smartcontractkit/chain-selectors" + "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/utils/operations/contract" + "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v1_2_0/operations/router" "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v2_0_0/create2_factory" "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v2_0_0/operations/committee_verifier" "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v2_0_0/operations/executor" @@ -24,8 +26,6 @@ import ( "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v2_0_0/operations/onramp" "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v2_0_0/sequences" "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v2_0_0/testsetup" - "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/utils/operations/contract" - "github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v1_2_0/operations/router" changesetadapters "github.com/smartcontractkit/chainlink-ccip/deployment/v2_0_0/adapters" ) @@ -33,6 +33,8 @@ var evmFamilySelector = [4]byte{0x28, 0x12, 0xd5, 0x2c} func boolPtr(v bool) *bool { return &v } +func uint32Ptr(v uint32) *uint32 { return &v } + type deployedContracts struct { router string onRamp string @@ -125,25 +127,13 @@ func buildConfigureChainForLanesInput( }, RemoteChains: map[uint64]changesetadapters.RemoteChainConfig[[]byte, string]{ remoteSelector: { - AllowTrafficFrom: boolPtr(true), - OnRamps: [][]byte{common.HexToAddress(remote.onRamp).Bytes()}, - OffRamp: common.HexToAddress(remote.offRamp).Bytes(), - DefaultExecutor: local.executor, - DefaultInboundCCVs: []string{local.committeeVerifier}, - DefaultOutboundCCVs: []string{local.committeeVerifier}, - FeeQuoterDestChainConfig: changesetadapters.FeeQuoterDestChainConfig{ - IsEnabled: true, - MaxDataBytes: 30_000, - MaxPerMsgGasLimit: 3_000_000, - DestGasOverhead: 300_000, - DefaultTokenFeeUSDCents: 25, - DestGasPerPayloadByteBase: 16, - DefaultTokenDestGasOverhead: 90_000, - DefaultTxGasLimit: 200_000, - NetworkFeeUSDCents: 10, - ChainFamilySelector: evmFamilySelector, - LinkFeeMultiplierPercent: 90, - }, + AllowTrafficFrom: boolPtr(true), + OnRamps: [][]byte{common.HexToAddress(remote.onRamp).Bytes()}, + OffRamp: common.HexToAddress(remote.offRamp).Bytes(), + DefaultExecutor: local.executor, + DefaultInboundCCVs: []string{local.committeeVerifier}, + DefaultOutboundCCVs: []string{local.committeeVerifier}, + FeeQuoterDestChainConfig: testsetup.CreateBasicFeeQuoterDestChainConfigOverrides(), ExecutorDestChainConfig: changesetadapters.ExecutorDestChainConfig{ USDCentsFee: 50, Enabled: true, @@ -552,19 +542,17 @@ func TestConfigureChainForLanes_ConfiguresMultipleRemoteChainsInSingleCall(t *te DefaultExecutor: local.executor, DefaultInboundCCVs: []string{local.committeeVerifier}, DefaultOutboundCCVs: []string{local.committeeVerifier}, - FeeQuoterDestChainConfig: changesetadapters.FeeQuoterDestChainConfig{ - IsEnabled: true, - MaxDataBytes: 50_000, - MaxPerMsgGasLimit: 5_000_000, - DestGasOverhead: 400_000, - DefaultTokenFeeUSDCents: 30, - DestGasPerPayloadByteBase: 16, - DefaultTokenDestGasOverhead: 100_000, - DefaultTxGasLimit: 250_000, - NetworkFeeUSDCents: 20, - ChainFamilySelector: evmFamilySelector, - LinkFeeMultiplierPercent: 90, - }, + FeeQuoterDestChainConfig: func() changesetadapters.FeeQuoterDestChainConfigOverrides { + cfg := testsetup.CreateBasicFeeQuoterDestChainConfigOverrides() + cfg.MaxDataBytes = uint32Ptr(50_000) + cfg.MaxPerMsgGasLimit = uint32Ptr(5_000_000) + cfg.DestGasOverhead = uint32Ptr(400_000) + cfg.DefaultTokenFeeUSDCents = func() *uint16 { v := uint16(30); return &v }() + cfg.DefaultTokenDestGasOverhead = uint32Ptr(100_000) + cfg.DefaultTxGasLimit = uint32Ptr(250_000) + cfg.NetworkFeeUSDCents = func() *uint16 { v := uint16(20); return &v }() + return cfg + }(), ExecutorDestChainConfig: changesetadapters.ExecutorDestChainConfig{ USDCentsFee: 100, Enabled: true, @@ -765,9 +753,10 @@ func TestConfigureChainForLanes_PartialUpdatePreservesExistingFields(t *testing. DefaultInboundCCVs: []string{local.committeeVerifier}, DefaultOutboundCCVs: []string{local.committeeVerifier}, BaseExecutionGasCost: 120_000, - FeeQuoterDestChainConfig: changesetadapters.FeeQuoterDestChainConfig{ + FeeQuoterDestChainConfig: changesetadapters.FeeQuoterDestChainConfigOverrides{ OverrideExistingConfig: true, - DestGasOverhead: 500_000, + DestGasOverhead: uint32Ptr(500_000), + ChainFamilySelector: evmFamilySelector, }, DefaultExecutor: local.executor, ExecutorDestChainConfig: changesetadapters.ExecutorDestChainConfig{ @@ -836,7 +825,7 @@ func TestConfigureChainForLanes_OverrideExistingFeeQuoterConfig(t *testing.T) { noOverrideInput := buildConfigureChainForLanesInput(local, chainSelector, remote, remoteSelector) rc := noOverrideInput.RemoteChains[remoteSelector] rc.FeeQuoterDestChainConfig.OverrideExistingConfig = false - rc.FeeQuoterDestChainConfig.MaxDataBytes = 99_000 + rc.FeeQuoterDestChainConfig.MaxDataBytes = uint32Ptr(99_000) noOverrideInput.RemoteChains[remoteSelector] = rc _, err = operations.ExecuteSequence( @@ -856,7 +845,7 @@ func TestConfigureChainForLanes_OverrideExistingFeeQuoterConfig(t *testing.T) { overrideInput := buildConfigureChainForLanesInput(local, chainSelector, remote, remoteSelector) rc = overrideInput.RemoteChains[remoteSelector] rc.FeeQuoterDestChainConfig.OverrideExistingConfig = true - rc.FeeQuoterDestChainConfig.MaxDataBytes = 99_000 + rc.FeeQuoterDestChainConfig.MaxDataBytes = uint32Ptr(99_000) overrideInput.RemoteChains[remoteSelector] = rc _, err = operations.ExecuteSequence( diff --git a/chains/evm/deployment/v2_0_0/testadapter/test_adapter_test.go b/chains/evm/deployment/v2_0_0/testadapter/test_adapter_test.go index 5b37ab99f7..2c3d1417b4 100644 --- a/chains/evm/deployment/v2_0_0/testadapter/test_adapter_test.go +++ b/chains/evm/deployment/v2_0_0/testadapter/test_adapter_test.go @@ -104,9 +104,6 @@ type laneContracts struct { addresses []datastore.AddressRef } -// evmFamilySelector is bytes4(keccak256("CCIP ChainFamilySelector EVM")) = 0x2812d52c. -var evmFamilySelector = [4]byte{0x28, 0x12, 0xd5, 0x2c} - func boolPtr(v bool) *bool { return &v } func deployLaneContracts(t *testing.T, env *deployment.Environment, chain cldf_evm.Chain, chainSelector uint64) laneContracts { @@ -206,20 +203,11 @@ func buildConfigureChainForLanesInput( DefaultExecutor: local.executor, DefaultInboundCCVs: []string{local.committeeVerifier}, DefaultOutboundCCVs: []string{local.committeeVerifier}, - FeeQuoterDestChainConfig: changesetadapters.FeeQuoterDestChainConfig{ - IsEnabled: true, - MaxDataBytes: 30_000, - MaxPerMsgGasLimit: 3_000_000, - DestGasOverhead: 300_000, - DefaultTokenFeeUSDCents: 25, - DestGasPerPayloadByteBase: 16, - DefaultTokenDestGasOverhead: 90_000, - DefaultTxGasLimit: 200_000, - NetworkFeeUSDCents: 10, - ChainFamilySelector: evmFamilySelector, - LinkFeeMultiplierPercent: 90, - USDPerUnitGas: big.NewInt(20_000_000_000_000), - }, + FeeQuoterDestChainConfig: func() changesetadapters.FeeQuoterDestChainConfigOverrides { + cfg := testsetup.CreateBasicFeeQuoterDestChainConfigOverrides() + cfg.USDPerUnitGas = big.NewInt(20_000_000_000_000) + return cfg + }(), ExecutorDestChainConfig: changesetadapters.ExecutorDestChainConfig{ USDCentsFee: 50, Enabled: true, diff --git a/chains/evm/deployment/v2_0_0/testsetup/testsetup.go b/chains/evm/deployment/v2_0_0/testsetup/testsetup.go index c79cd64b40..d0c7a44c22 100644 --- a/chains/evm/deployment/v2_0_0/testsetup/testsetup.go +++ b/chains/evm/deployment/v2_0_0/testsetup/testsetup.go @@ -5,6 +5,7 @@ import ( "math/big" "github.com/ethereum/go-ethereum/common" + "k8s.io/utils/ptr" "github.com/smartcontractkit/chainlink-deployments-framework/datastore" "github.com/smartcontractkit/chainlink-deployments-framework/operations" @@ -48,6 +49,23 @@ func CreateBasicFeeQuoterDestChainConfig() lanes.FeeQuoterDestChainConfig { } } +// CreateBasicFeeQuoterDestChainConfigOverrides creates adapter-level FeeQuoter dest chain overrides for v2.0.0 lane tests. +func CreateBasicFeeQuoterDestChainConfigOverrides() changesetadapters.FeeQuoterDestChainConfigOverrides { + return changesetadapters.FeeQuoterDestChainConfigOverrides{ + IsEnabled: ptr.To(true), + MaxDataBytes: ptr.To(uint32(30_000)), + MaxPerMsgGasLimit: ptr.To(uint32(3_000_000)), + DestGasOverhead: ptr.To(uint32(300_000)), + DefaultTokenFeeUSDCents: ptr.To(uint16(25)), + DestGasPerPayloadByteBase: ptr.To(uint8(16)), + DefaultTokenDestGasOverhead: ptr.To(uint32(90_000)), + DefaultTxGasLimit: ptr.To(uint32(200_000)), + NetworkFeeUSDCents: ptr.To(uint16(10)), + ChainFamilySelector: evmFamilySelector, + LinkFeeMultiplierPercent: ptr.To(uint8(90)), + } +} + // CreateBasicExecutorDestChainConfig creates a basic executor dest chain config with reasonable defaults for testing func CreateBasicExecutorDestChainConfig() lanes.ExecutorDestChainConfig { return lanes.ExecutorDestChainConfig{ diff --git a/chains/evm/go.mod b/chains/evm/go.mod index 089c597431..a2ad3911f0 100644 --- a/chains/evm/go.mod +++ b/chains/evm/go.mod @@ -14,9 +14,9 @@ require ( github.com/smartcontractkit/ccip-contract-examples/chains/evm v0.0.0-20250826190403-aed7f5f33cde github.com/smartcontractkit/ccip-owner-contracts v0.1.0 github.com/smartcontractkit/chain-selectors v1.0.98 - github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260516222345-f2f143454dbd + github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260520171506-73298226c668 github.com/smartcontractkit/chainlink-ccv v0.0.1 - github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260518113836-b4e2fcbb6799 + github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260520182028-cfd627ddb60c github.com/smartcontractkit/chainlink-common v0.11.2-0.20260417081611-8bdbd9f45629 github.com/smartcontractkit/chainlink-deployments-framework v0.100.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260410162948-2dca02f24e98 @@ -31,6 +31,7 @@ require ( golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa golang.org/x/sync v0.20.0 gopkg.in/yaml.v3 v3.0.1 + k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 ) require ( @@ -348,7 +349,6 @@ require ( k8s.io/client-go v0.32.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect - k8s.io/utils v0.0.0-20241104163129-6fe5fd82f078 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect sigs.k8s.io/yaml v1.4.0 // indirect diff --git a/chains/evm/go.sum b/chains/evm/go.sum index 519ae34438..6c36d31660 100644 --- a/chains/evm/go.sum +++ b/chains/evm/go.sum @@ -782,8 +782,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.1 h1:BMF2DsrPPOQQKJNEi86PjiXnofm1m18PN3Dnv39P8FE= github.com/smartcontractkit/chainlink-ccv v0.0.1/go.mod h1:sJeU9at/+chXZfh7io5HzW6C3fgDxjpEB6U1dsS+BnE= -github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260518113836-b4e2fcbb6799 h1:zxkcX0vP0NMeptsGVmgMEI0ZBdYedsoaBfkP331whwc= -github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260518113836-b4e2fcbb6799/go.mod h1:bNMFRxwWdgVFdSsFZRmsUUPoBUncU3RM765K99svIKM= +github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260520182028-cfd627ddb60c h1:+46ZkzY4u4AhCrHNYhAmdiedq8UlyxNqQvtyzaa2HWA= +github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260520182028-cfd627ddb60c/go.mod h1:bNMFRxwWdgVFdSsFZRmsUUPoBUncU3RM765K99svIKM= github.com/smartcontractkit/chainlink-common v0.11.2-0.20260417081611-8bdbd9f45629 h1:YZCgnZteDIaV+Jrb6DDk4NQVJJ/ZwwYUaX9De/XUoCA= github.com/smartcontractkit/chainlink-common v0.11.2-0.20260417081611-8bdbd9f45629/go.mod h1:RnNTmxoheJYec/Gl/9t3wPLtFIHrlYjmWDdwZZJjchw= github.com/smartcontractkit/chainlink-common/keystore v1.0.2 h1:AWisx4JT3QV8tcgh6J5NCrex+wAgTYpWyHsyNPSXzsQ= diff --git a/deployment/v2_0_0/adapters/chain_family.go b/deployment/v2_0_0/adapters/chain_family.go index e830be38b9..5493678b42 100644 --- a/deployment/v2_0_0/adapters/chain_family.go +++ b/deployment/v2_0_0/adapters/chain_family.go @@ -64,23 +64,6 @@ type RemoteChainDefaults struct { TokenNetworkFeeUSDCents uint16 } -// FeeQuoterDestChainConfig configures the FeeQuoter for a remote chain. -type FeeQuoterDestChainConfig struct { - OverrideExistingConfig bool - IsEnabled bool - MaxDataBytes uint32 - MaxPerMsgGasLimit uint32 - DestGasOverhead uint32 - DestGasPerPayloadByteBase uint8 - ChainFamilySelector [4]byte - DefaultTokenFeeUSDCents uint16 - DefaultTokenDestGasOverhead uint32 - DefaultTxGasLimit uint32 - NetworkFeeUSDCents uint16 - LinkFeeMultiplierPercent uint8 - USDPerUnitGas *big.Int -} - // RemoteChainConfig defines the configuration for a remote chain. type RemoteChainConfig[RemoteContract any, LocalContract any] struct { AllowTrafficFrom *bool @@ -91,7 +74,7 @@ type RemoteChainConfig[RemoteContract any, LocalContract any] struct { DefaultOutboundCCVs []LocalContract LaneMandatedOutboundCCVs []LocalContract DefaultExecutor LocalContract - FeeQuoterDestChainConfig FeeQuoterDestChainConfig + FeeQuoterDestChainConfig FeeQuoterDestChainConfigOverrides ExecutorDestChainConfig ExecutorDestChainConfig AddressBytesLength uint8 BaseExecutionGasCost uint32 @@ -131,7 +114,7 @@ type ChainFamily interface { ResolveExecutor(ds datastore.DataStore, chainSelector uint64, qualifier string) (string, error) GetAddressBytesLength() uint8 GetChainFamilySelector() [4]byte - GetDefaultFeeQuoterDestChainConfig() FeeQuoterDestChainConfig + GetDefaultFeeQuoterDestChainConfig() FeeQuoterDestChainConfigOverrides GetDefaultRemoteChainConfig() RemoteChainDefaults GetDefaultCommitteeVerifierRemoteChainConfig() CommitteeVerifierRemoteChainDefaults GetDefaultFinalityConfig() finality.Config @@ -173,3 +156,24 @@ func (r *ChainFamilyRegistry) GetChainFamily(chainFamily string) (ChainFamily, b adapter, ok := r.m[chainFamily] return adapter, ok } + +// FeeQuoterDestChainConfigOverrides is the unified type used both for chain-family adapter +// defaults (returned by GetDefaultFeeQuoterDestChainConfig) and for lane-pair-specific +// user-provided overrides. Nil pointer fields are ignored during merge; non-nil fields +// (including those explicitly set to zero) replace the corresponding value. This ensures +// user-supplied zero values are honored rather than silently dropped. +type FeeQuoterDestChainConfigOverrides struct { + OverrideExistingConfig bool + IsEnabled *bool + MaxDataBytes *uint32 + MaxPerMsgGasLimit *uint32 + DestGasOverhead *uint32 + DestGasPerPayloadByteBase *uint8 + ChainFamilySelector [4]byte + DefaultTokenFeeUSDCents *uint16 + DefaultTokenDestGasOverhead *uint32 + DefaultTxGasLimit *uint32 + NetworkFeeUSDCents *uint16 + LinkFeeMultiplierPercent *uint8 + USDPerUnitGas *big.Int +} diff --git a/deployment/v2_0_0/adapters/chain_family_test.go b/deployment/v2_0_0/adapters/chain_family_test.go index 9ca0048f3d..ffb93765a9 100644 --- a/deployment/v2_0_0/adapters/chain_family_test.go +++ b/deployment/v2_0_0/adapters/chain_family_test.go @@ -66,8 +66,8 @@ func (m *mockChainFamily) GetChainFamilySelector() [4]byte { return [4]byte{} } -func (m *mockChainFamily) GetDefaultFeeQuoterDestChainConfig() adapters.FeeQuoterDestChainConfig { - return adapters.FeeQuoterDestChainConfig{} +func (m *mockChainFamily) GetDefaultFeeQuoterDestChainConfig() adapters.FeeQuoterDestChainConfigOverrides { + return adapters.FeeQuoterDestChainConfigOverrides{} } func (m *mockChainFamily) GetDefaultRemoteChainConfig() adapters.RemoteChainDefaults { diff --git a/deployment/v2_0_0/changesets/configure_chains_for_lanes_from_topology.go b/deployment/v2_0_0/changesets/configure_chains_for_lanes_from_topology.go index 3ae9d64aa6..f3c84f120b 100644 --- a/deployment/v2_0_0/changesets/configure_chains_for_lanes_from_topology.go +++ b/deployment/v2_0_0/changesets/configure_chains_for_lanes_from_topology.go @@ -7,6 +7,11 @@ import ( "strconv" chainsel "github.com/smartcontractkit/chain-selectors" + "github.com/smartcontractkit/chainlink-deployments-framework/datastore" + "github.com/smartcontractkit/chainlink-deployments-framework/deployment" + cldf_ops "github.com/smartcontractkit/chainlink-deployments-framework/operations" + mcms_types "github.com/smartcontractkit/mcms/types" + "github.com/smartcontractkit/chainlink-ccip/deployment/finality" changesetscore "github.com/smartcontractkit/chainlink-ccip/deployment/utils/changesets" datastore_utils "github.com/smartcontractkit/chainlink-ccip/deployment/utils/datastore" @@ -14,10 +19,6 @@ import ( "github.com/smartcontractkit/chainlink-ccip/deployment/utils/sequences" "github.com/smartcontractkit/chainlink-ccip/deployment/v2_0_0/adapters" "github.com/smartcontractkit/chainlink-ccip/deployment/v2_0_0/offchain" - "github.com/smartcontractkit/chainlink-deployments-framework/datastore" - "github.com/smartcontractkit/chainlink-deployments-framework/deployment" - cldf_ops "github.com/smartcontractkit/chainlink-deployments-framework/operations" - mcms_types "github.com/smartcontractkit/mcms/types" ) const defaultQualifier = "default" @@ -41,27 +42,6 @@ type CommitteeVerifierInputConfig struct { AllowedFinalityConfig *finality.Config `json:"allowedFinalityConfig" yaml:"allowedFinalityConfig"` } -// FeeQuoterDestChainConfigOverrides provides lane-pair-specific overrides on top of the -// chain-family defaults returned by the remote adapter's GetDefaultFeeQuoterDestChainConfig. -// Nil fields are left at the adapter default; non-nil fields replace the default. -// -// DestGasOverhead is intentionally omitted — it is a LEGACY v2 field whose responsibility -// moved to OnRamp.BaseExecutionGasCost. ChainFamilySelector is also omitted because it is -// always auto-populated from the remote adapter. -type FeeQuoterDestChainConfigOverrides struct { - OverrideExistingConfig bool - IsEnabled *bool - MaxDataBytes *uint32 - MaxPerMsgGasLimit *uint32 - DestGasPerPayloadByteBase *uint8 - DefaultTokenFeeUSDCents *uint16 - DefaultTokenDestGasOverhead *uint32 - DefaultTxGasLimit *uint32 - NetworkFeeUSDCents *uint16 - LinkFeeMultiplierPercent *uint8 - USDPerUnitGas *big.Int -} - // PartialRemoteChainConfig is the user-facing input for a single remote chain. All fields // are optional, but their empty values are resolved from different sources: // - adapter-backed remote-chain settings fall back to the remote chain family adapter's @@ -84,7 +64,7 @@ type PartialRemoteChainConfig struct { LaneMandatedInboundCCVs []datastore.AddressRef DefaultOutboundCCVs []datastore.AddressRef LaneMandatedOutboundCCVs []datastore.AddressRef - FeeQuoterDestChainConfig FeeQuoterDestChainConfigOverrides + FeeQuoterDestChainConfig adapters.FeeQuoterDestChainConfigOverrides ExecutorDestChainConfig *adapters.ExecutorDestChainConfig // nil = use adapter default BaseExecutionGasCost *uint32 // nil = use adapter default TokenReceiverAllowed *bool @@ -627,41 +607,42 @@ func mergeCommitteeVerifierRemoteChainConfig( } func mergeFeeQuoterDestChainConfig( - defaults adapters.FeeQuoterDestChainConfig, - overrides FeeQuoterDestChainConfigOverrides, -) adapters.FeeQuoterDestChainConfig { - defaults.OverrideExistingConfig = overrides.OverrideExistingConfig + defaults adapters.FeeQuoterDestChainConfigOverrides, + overrides adapters.FeeQuoterDestChainConfigOverrides, +) adapters.FeeQuoterDestChainConfigOverrides { + out := defaults + out.OverrideExistingConfig = overrides.OverrideExistingConfig if overrides.IsEnabled != nil { - defaults.IsEnabled = *overrides.IsEnabled + out.IsEnabled = overrides.IsEnabled } if overrides.MaxDataBytes != nil { - defaults.MaxDataBytes = *overrides.MaxDataBytes + out.MaxDataBytes = overrides.MaxDataBytes } if overrides.MaxPerMsgGasLimit != nil { - defaults.MaxPerMsgGasLimit = *overrides.MaxPerMsgGasLimit + out.MaxPerMsgGasLimit = overrides.MaxPerMsgGasLimit } if overrides.DestGasPerPayloadByteBase != nil { - defaults.DestGasPerPayloadByteBase = *overrides.DestGasPerPayloadByteBase + out.DestGasPerPayloadByteBase = overrides.DestGasPerPayloadByteBase } if overrides.DefaultTokenFeeUSDCents != nil { - defaults.DefaultTokenFeeUSDCents = *overrides.DefaultTokenFeeUSDCents + out.DefaultTokenFeeUSDCents = overrides.DefaultTokenFeeUSDCents } if overrides.DefaultTokenDestGasOverhead != nil { - defaults.DefaultTokenDestGasOverhead = *overrides.DefaultTokenDestGasOverhead + out.DefaultTokenDestGasOverhead = overrides.DefaultTokenDestGasOverhead } if overrides.DefaultTxGasLimit != nil { - defaults.DefaultTxGasLimit = *overrides.DefaultTxGasLimit + out.DefaultTxGasLimit = overrides.DefaultTxGasLimit } if overrides.NetworkFeeUSDCents != nil { - defaults.NetworkFeeUSDCents = *overrides.NetworkFeeUSDCents + out.NetworkFeeUSDCents = overrides.NetworkFeeUSDCents } if overrides.LinkFeeMultiplierPercent != nil { - defaults.LinkFeeMultiplierPercent = *overrides.LinkFeeMultiplierPercent + out.LinkFeeMultiplierPercent = overrides.LinkFeeMultiplierPercent } if overrides.USDPerUnitGas != nil { - defaults.USDPerUnitGas = new(big.Int).Set(overrides.USDPerUnitGas) + out.USDPerUnitGas = new(big.Int).Set(overrides.USDPerUnitGas) } - return defaults + return out } // filterNOPsToCommitteeMembers returns only the NOPs whose aliases appear in at least one diff --git a/deployment/v2_0_0/changesets/configure_chains_for_lanes_from_topology_test.go b/deployment/v2_0_0/changesets/configure_chains_for_lanes_from_topology_test.go index 3058277d0d..93dde0cdb1 100644 --- a/deployment/v2_0_0/changesets/configure_chains_for_lanes_from_topology_test.go +++ b/deployment/v2_0_0/changesets/configure_chains_for_lanes_from_topology_test.go @@ -96,17 +96,17 @@ func (m *mockChainFamilyAdapter) GetChainFamilySelector() [4]byte { return [4]byte{0x28, 0x12, 0xd5, 0x2c} } -func (m *mockChainFamilyAdapter) GetDefaultFeeQuoterDestChainConfig() adapters.FeeQuoterDestChainConfig { - return adapters.FeeQuoterDestChainConfig{ - IsEnabled: true, - MaxDataBytes: 32_000, - MaxPerMsgGasLimit: 8_000_000, - DestGasPerPayloadByteBase: 16, - DefaultTokenFeeUSDCents: 25, - DefaultTokenDestGasOverhead: 90_000, - DefaultTxGasLimit: 200_000, - NetworkFeeUSDCents: 10, - LinkFeeMultiplierPercent: 90, +func (m *mockChainFamilyAdapter) GetDefaultFeeQuoterDestChainConfig() adapters.FeeQuoterDestChainConfigOverrides { + return adapters.FeeQuoterDestChainConfigOverrides{ + IsEnabled: ptrTo(true), + MaxDataBytes: ptrTo(uint32(32_000)), + MaxPerMsgGasLimit: ptrTo(uint32(8_000_000)), + DestGasPerPayloadByteBase: ptrTo(uint8(16)), + DefaultTokenFeeUSDCents: ptrTo(uint16(25)), + DefaultTokenDestGasOverhead: ptrTo(uint32(90_000)), + DefaultTxGasLimit: ptrTo(uint32(200_000)), + NetworkFeeUSDCents: ptrTo(uint16(10)), + LinkFeeMultiplierPercent: ptrTo(uint8(90)), } } @@ -596,7 +596,7 @@ func TestConfigureChainsForLanesFromTopology_PerSourceDestinationConfig(t *testi }, RemoteChains: map[uint64]changesets.PartialRemoteChainConfig{ sharedDest: { - FeeQuoterDestChainConfig: changesets.FeeQuoterDestChainConfigOverrides{MaxDataBytes: ptrTo[uint32](1000)}, + FeeQuoterDestChainConfig: adapters.FeeQuoterDestChainConfigOverrides{MaxDataBytes: ptrTo[uint32](1000)}, ExecutorDestChainConfig: &adapters.ExecutorDestChainConfig{USDCentsFee: 100, Enabled: true}, }, }, @@ -608,7 +608,7 @@ func TestConfigureChainsForLanesFromTopology_PerSourceDestinationConfig(t *testi }, RemoteChains: map[uint64]changesets.PartialRemoteChainConfig{ sharedDest: { - FeeQuoterDestChainConfig: changesets.FeeQuoterDestChainConfigOverrides{MaxDataBytes: ptrTo[uint32](2000)}, + FeeQuoterDestChainConfig: adapters.FeeQuoterDestChainConfigOverrides{MaxDataBytes: ptrTo[uint32](2000)}, ExecutorDestChainConfig: &adapters.ExecutorDestChainConfig{USDCentsFee: 200, Enabled: true}, }, }, @@ -625,11 +625,11 @@ func TestConfigureChainsForLanesFromTopology_PerSourceDestinationConfig(t *testi } inputA := inputsByChain[chainA] - assert.Equal(t, uint32(1000), inputA.RemoteChains[sharedDest].FeeQuoterDestChainConfig.MaxDataBytes) + assert.Equal(t, uint32(1000), *inputA.RemoteChains[sharedDest].FeeQuoterDestChainConfig.MaxDataBytes) assert.Equal(t, uint16(100), inputA.RemoteChains[sharedDest].ExecutorDestChainConfig.USDCentsFee) inputB := inputsByChain[chainB] - assert.Equal(t, uint32(2000), inputB.RemoteChains[sharedDest].FeeQuoterDestChainConfig.MaxDataBytes) + assert.Equal(t, uint32(2000), *inputB.RemoteChains[sharedDest].FeeQuoterDestChainConfig.MaxDataBytes) assert.Equal(t, uint16(200), inputB.RemoteChains[sharedDest].ExecutorDestChainConfig.USDCentsFee) } diff --git a/devenv/go.mod b/devenv/go.mod index d72850a6ae..127008c407 100644 --- a/devenv/go.mod +++ b/devenv/go.mod @@ -39,7 +39,7 @@ require ( github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260121163256-85accaf3d28d github.com/smartcontractkit/chainlink-ccip/chains/solana/deployment v0.0.0-00010101000000-000000000000 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260312233953-f588f8dc6d7c - github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260516222345-f2f143454dbd + github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260520171506-73298226c668 github.com/smartcontractkit/chainlink-common v0.11.2-0.20260417081611-8bdbd9f45629 github.com/smartcontractkit/chainlink-deployments-framework v0.101.1 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260410162948-2dca02f24e98 // indirect @@ -366,7 +366,7 @@ require ( github.com/smartcontractkit/ccip-owner-contracts v0.1.0 // indirect github.com/smartcontractkit/chainlink-aptos v0.0.0-20260306142855-8d629e752265 // indirect github.com/smartcontractkit/chainlink-ccv v0.0.1 // indirect - github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260518113836-b4e2fcbb6799 // indirect + github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260520182028-cfd627ddb60c // indirect github.com/smartcontractkit/chainlink-common/keystore v1.0.2 // indirect github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 // indirect github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260401162955-be2bc6b5264b // indirect diff --git a/devenv/go.sum b/devenv/go.sum index 469b6ee426..20f1bc279a 100644 --- a/devenv/go.sum +++ b/devenv/go.sum @@ -1247,8 +1247,8 @@ github.com/smartcontractkit/chainlink-aptos v0.0.0-20260306142855-8d629e752265 h github.com/smartcontractkit/chainlink-aptos v0.0.0-20260306142855-8d629e752265/go.mod h1:CQGkKp3YDsUuxixxmmngmRKfh6yIcftGEZsQrsSIIM8= github.com/smartcontractkit/chainlink-ccv v0.0.1 h1:BMF2DsrPPOQQKJNEi86PjiXnofm1m18PN3Dnv39P8FE= github.com/smartcontractkit/chainlink-ccv v0.0.1/go.mod h1:sJeU9at/+chXZfh7io5HzW6C3fgDxjpEB6U1dsS+BnE= -github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260518113836-b4e2fcbb6799 h1:zxkcX0vP0NMeptsGVmgMEI0ZBdYedsoaBfkP331whwc= -github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260518113836-b4e2fcbb6799/go.mod h1:bNMFRxwWdgVFdSsFZRmsUUPoBUncU3RM765K99svIKM= +github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260520182028-cfd627ddb60c h1:+46ZkzY4u4AhCrHNYhAmdiedq8UlyxNqQvtyzaa2HWA= +github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260520182028-cfd627ddb60c/go.mod h1:bNMFRxwWdgVFdSsFZRmsUUPoBUncU3RM765K99svIKM= github.com/smartcontractkit/chainlink-common v0.11.2-0.20260417081611-8bdbd9f45629 h1:YZCgnZteDIaV+Jrb6DDk4NQVJJ/ZwwYUaX9De/XUoCA= github.com/smartcontractkit/chainlink-common v0.11.2-0.20260417081611-8bdbd9f45629/go.mod h1:RnNTmxoheJYec/Gl/9t3wPLtFIHrlYjmWDdwZZJjchw= github.com/smartcontractkit/chainlink-common/keystore v1.0.2 h1:AWisx4JT3QV8tcgh6J5NCrex+wAgTYpWyHsyNPSXzsQ= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 5d19ba760a..d93353a08b 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -29,7 +29,7 @@ require ( github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260121163256-85accaf3d28d github.com/smartcontractkit/chainlink-ccip/chains/solana/deployment v0.0.0-00010101000000-000000000000 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260312233953-f588f8dc6d7c - github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260516222345-f2f143454dbd + github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260520171506-73298226c668 github.com/smartcontractkit/chainlink-deployments-framework v0.100.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260410162948-2dca02f24e98 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20260119171452-39c98c3b33cd @@ -264,7 +264,7 @@ require ( github.com/smartcontractkit/ccip-owner-contracts v0.1.0 // indirect github.com/smartcontractkit/chainlink-aptos v0.0.0-20260306142855-8d629e752265 // indirect github.com/smartcontractkit/chainlink-ccv v0.0.1 // indirect - github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260518113836-b4e2fcbb6799 // indirect + github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260520182028-cfd627ddb60c // indirect github.com/smartcontractkit/chainlink-common v0.11.2-0.20260417081611-8bdbd9f45629 // indirect github.com/smartcontractkit/chainlink-common/keystore v1.0.2 // indirect github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index b9d3c91d29..0b4488b9f6 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -960,8 +960,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260312233953-f588f8dc6d7c/go.mod h1:67YbnoglYD61Pz/jTVCgav9wFq7S35OU8UyQSvPllRw= github.com/smartcontractkit/chainlink-ccv v0.0.1 h1:BMF2DsrPPOQQKJNEi86PjiXnofm1m18PN3Dnv39P8FE= github.com/smartcontractkit/chainlink-ccv v0.0.1/go.mod h1:sJeU9at/+chXZfh7io5HzW6C3fgDxjpEB6U1dsS+BnE= -github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260518113836-b4e2fcbb6799 h1:zxkcX0vP0NMeptsGVmgMEI0ZBdYedsoaBfkP331whwc= -github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260518113836-b4e2fcbb6799/go.mod h1:bNMFRxwWdgVFdSsFZRmsUUPoBUncU3RM765K99svIKM= +github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260520182028-cfd627ddb60c h1:+46ZkzY4u4AhCrHNYhAmdiedq8UlyxNqQvtyzaa2HWA= +github.com/smartcontractkit/chainlink-ccv/deployment v0.0.2-0.20260520182028-cfd627ddb60c/go.mod h1:bNMFRxwWdgVFdSsFZRmsUUPoBUncU3RM765K99svIKM= github.com/smartcontractkit/chainlink-common v0.11.2-0.20260417081611-8bdbd9f45629 h1:YZCgnZteDIaV+Jrb6DDk4NQVJJ/ZwwYUaX9De/XUoCA= github.com/smartcontractkit/chainlink-common v0.11.2-0.20260417081611-8bdbd9f45629/go.mod h1:RnNTmxoheJYec/Gl/9t3wPLtFIHrlYjmWDdwZZJjchw= github.com/smartcontractkit/chainlink-common/keystore v1.0.2 h1:AWisx4JT3QV8tcgh6J5NCrex+wAgTYpWyHsyNPSXzsQ=