Skip to content

Commit ca5497b

Browse files
committed
Merge branch 'develop' into merge-main-into-develop
# Conflicts: # ccv/chains/evm/deployment/go.mod # integration-tests/go.mod # integration-tests/go.sum
2 parents b1c65be + 2975185 commit ca5497b

40 files changed

+8374
-179
lines changed

ccv/chains/evm/deployment/go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ require (
1515
github.com/Masterminds/semver/v3 v3.4.0
1616
github.com/ethereum/go-ethereum v1.17.1
1717
github.com/smartcontractkit/chain-selectors v1.0.97
18-
github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260312161144-d895b42081a0
19-
github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm v0.0.0-20260312161144-d895b42081a0
20-
github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20260312161144-d895b42081a0
21-
github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260312161144-d895b42081a0
18+
github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260312182032-b2b38700f19b
19+
github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm v0.0.0-20260312182032-b2b38700f19b
20+
github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20260312182032-b2b38700f19b
21+
github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260312182032-b2b38700f19b
2222
github.com/smartcontractkit/chainlink-common v0.10.1-0.20260310151336-c98a9c147ac0
2323
github.com/smartcontractkit/chainlink-deployments-framework v0.80.2
2424
github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20260119171452-39c98c3b33cd

ccv/chains/evm/deployment/go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -729,10 +729,10 @@ github.com/smartcontractkit/chain-selectors v1.0.97 h1:ECOin+SkJv2MUrfqTUu28J0ku
729729
github.com/smartcontractkit/chain-selectors v1.0.97/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w=
730730
github.com/smartcontractkit/chainlink-aptos v0.0.0-20251024142440-51f2ad2652a2 h1:vGdeMwHO3ow88HvxfhA4DDPYNY0X9jmdux7L83UF/W8=
731731
github.com/smartcontractkit/chainlink-aptos v0.0.0-20251024142440-51f2ad2652a2/go.mod h1:iteU0WORHkArACVh/HoY/1bipV4TcNcJdTmom9uIT0E=
732-
github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260312161144-d895b42081a0 h1:XDguAjlf+vsWmDwXDPskVOW8fulo12nUtBVdhjf2pfA=
733-
github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260312161144-d895b42081a0/go.mod h1:hl57wj/oxsh+ieJkvTkYxyB6+Gv22QiVjjcmh7fa0AI=
734-
github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm v0.0.0-20260312161144-d895b42081a0 h1:pGhc95fxyMVj/ips+hbvFr9IFn8++ccKc7wbKVmq7gY=
735-
github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm v0.0.0-20260312161144-d895b42081a0/go.mod h1:Zp8erzWAVrADEhbR0EjhWFbEdr98Sdz4yb0LKKMccA8=
732+
github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260312182032-b2b38700f19b h1:bbOmh4svjpzzvXv1pXljN8zUop8L/aTO4HM4t/wgdVs=
733+
github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260312182032-b2b38700f19b/go.mod h1:hl57wj/oxsh+ieJkvTkYxyB6+Gv22QiVjjcmh7fa0AI=
734+
github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm v0.0.0-20260312182032-b2b38700f19b h1:xMMmdrNH/UM/pdSbvLbjG22NY0zut7sGJcU36yLzS2g=
735+
github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm v0.0.0-20260312182032-b2b38700f19b/go.mod h1:Zp8erzWAVrADEhbR0EjhWFbEdr98Sdz4yb0LKKMccA8=
736736
github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260121163256-85accaf3d28d h1:xdFpzbApEMz4Rojg2Y2OjFlrh0wu7eB10V2tSZGW5y8=
737737
github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260121163256-85accaf3d28d/go.mod h1:bgmqE7x9xwmIVr8PqLbC0M5iPm4AV2DBl596lO6S5Sw=
738738
github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250912190424-fd2e35d7deb5 h1:Z4t2ZY+ZyGWxtcXvPr11y4o3CGqhg3frJB5jXkCSvWA=
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package adapters
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment/latest/operations/committee_verifier"
7+
"github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment/v1_7_0/operations/versioned_verifier_resolver"
8+
ccvadapters "github.com/smartcontractkit/chainlink-ccip/deployment/v1_7_0/adapters"
9+
"github.com/smartcontractkit/chainlink-deployments-framework/datastore"
10+
)
11+
12+
type EVMCommitteeVerifierContractAdapter struct{}
13+
14+
var _ ccvadapters.CommitteeVerifierContractAdapter = (*EVMCommitteeVerifierContractAdapter)(nil)
15+
16+
func (a *EVMCommitteeVerifierContractAdapter) ResolveCommitteeVerifierContracts(
17+
ds datastore.DataStore,
18+
chainSelector uint64,
19+
qualifier string,
20+
) ([]datastore.AddressRef, error) {
21+
verifier, err := ds.Addresses().Get(datastore.NewAddressRefKey(
22+
chainSelector,
23+
datastore.ContractType(committee_verifier.ContractType),
24+
committee_verifier.Version,
25+
qualifier,
26+
))
27+
if err != nil {
28+
return nil, fmt.Errorf("committee verifier not found for chain %d qualifier %q: %w", chainSelector, qualifier, err)
29+
}
30+
31+
resolver, err := ds.Addresses().Get(datastore.NewAddressRefKey(
32+
chainSelector,
33+
datastore.ContractType(versioned_verifier_resolver.CommitteeVerifierResolverType),
34+
versioned_verifier_resolver.Version,
35+
qualifier,
36+
))
37+
if err != nil {
38+
return nil, fmt.Errorf("committee verifier resolver not found for chain %d qualifier %q: %w", chainSelector, qualifier, err)
39+
}
40+
41+
return []datastore.AddressRef{verifier, resolver}, nil
42+
}

ccv/chains/evm/deployment/v1_7_0/adapters/deploy_chain_contracts_adapter.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ func convertMockReceivers(params []ccvadapters.MockReceiverDeployParams) []seque
304304
RequiredVerifiers: mr.RequiredVerifiers,
305305
OptionalVerifiers: mr.OptionalVerifiers,
306306
OptionalThreshold: mr.OptionalThreshold,
307+
MinimumBlockDepth: mr.MinimumBlockDepth,
307308
Qualifier: mr.Qualifier,
308309
})
309310
}

ccv/chains/evm/deployment/v1_7_0/adapters/indexer_config_adapter.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55

66
"github.com/Masterminds/semver/v3"
77

8-
"github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment/latest/operations/committee_verifier"
98
"github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment/v1_7_0/operations/cctp_verifier"
109
"github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment/v1_7_0/operations/lombard_verifier"
1110
"github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment/v1_7_0/operations/versioned_verifier_resolver"
@@ -48,7 +47,7 @@ func (a *EVMIndexerConfigAdapter) ResolveVerifierAddresses(
4847
func resolveContractMeta(kind ccvadapters.VerifierKind) (deployment.ContractType, *semver.Version, error) {
4948
switch kind {
5049
case ccvadapters.CommitteeVerifierKind:
51-
return versioned_verifier_resolver.CommitteeVerifierResolverType, committee_verifier.Version, nil
50+
return versioned_verifier_resolver.CommitteeVerifierResolverType, versioned_verifier_resolver.Version, nil
5251
case ccvadapters.CCTPVerifierKind:
5352
return cctp_verifier.ResolverType, cctp_verifier.Version, nil
5453
case ccvadapters.LombardVerifierKind:

ccv/chains/evm/deployment/v1_7_0/adapters/init.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,12 @@ func init() {
2525
laneMigratorReg.RegisterRampUpdater(chainsel.FamilyEVM, semver.MustParse("2.0.0"), &LaneMigrator{})
2626
laneMigratorReg.RegisterRouterUpdater(chainsel.FamilyEVM, semver.MustParse("1.2.0"), &adapters1_2.RouterUpdater{})
2727

28+
ccvadapters.GetCommitteeVerifierContractRegistry().Register(chainsel.FamilyEVM, &EVMCommitteeVerifierContractAdapter{})
2829
ccvadapters.GetExecutorConfigRegistry().Register(chainsel.FamilyEVM, &EVMExecutorConfigAdapter{})
30+
ccvadapters.GetVerifierJobConfigRegistry().Register(chainsel.FamilyEVM, &EVMVerifierJobConfigAdapter{})
2931
ccvadapters.GetDeployChainContractsRegistry().Register(chainsel.FamilyEVM, &EVMDeployChainContractsAdapter{})
3032
ccvadapters.GetDeployChainContractsRegistry().RegisterConfigImporter(chainsel.FamilyEVM, semver.MustParse("1.6.0"), &adapters1_6.ConfigImportAdapter{})
3133
ccvadapters.GetIndexerConfigRegistry().Register(chainsel.FamilyEVM, &EVMIndexerConfigAdapter{})
3234
ccvadapters.GetAggregatorConfigRegistry().Register(chainsel.FamilyEVM, &EVMAggregatorConfigAdapter{})
35+
ccvadapters.GetTokenVerifierConfigRegistry().Register(chainsel.FamilyEVM, &EVMTokenVerifierConfigAdapter{})
3336
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package adapters
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment/latest/operations/onramp"
7+
"github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment/v1_7_0/operations/cctp_verifier"
8+
"github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment/v1_7_0/operations/lombard_verifier"
9+
"github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v1_6_0/operations/rmn_remote"
10+
dsutil "github.com/smartcontractkit/chainlink-ccip/deployment/utils/datastore"
11+
ccvadapters "github.com/smartcontractkit/chainlink-ccip/deployment/v1_7_0/adapters"
12+
"github.com/smartcontractkit/chainlink-deployments-framework/datastore"
13+
)
14+
15+
type EVMTokenVerifierConfigAdapter struct{}
16+
17+
var _ ccvadapters.TokenVerifierConfigAdapter = (*EVMTokenVerifierConfigAdapter)(nil)
18+
19+
func (a *EVMTokenVerifierConfigAdapter) ResolveTokenVerifierAddresses(
20+
ds datastore.DataStore,
21+
chainSelector uint64,
22+
cctpQualifier string,
23+
lombardQualifier string,
24+
) (*ccvadapters.TokenVerifierChainAddresses, error) {
25+
toAddress := func(ref datastore.AddressRef) (string, error) { return ref.Address, nil }
26+
27+
onRampAddr, err := dsutil.FindAndFormatRef(ds, datastore.AddressRef{
28+
Type: datastore.ContractType(onramp.ContractType),
29+
}, chainSelector, toAddress)
30+
if err != nil {
31+
return nil, fmt.Errorf("failed to get on ramp address for chain %d: %w", chainSelector, err)
32+
}
33+
34+
rmnRemoteAddr, err := dsutil.FindAndFormatRef(ds, datastore.AddressRef{
35+
Type: datastore.ContractType(rmn_remote.ContractType),
36+
}, chainSelector, toAddress)
37+
if err != nil {
38+
return nil, fmt.Errorf("failed to get rmn remote address for chain %d: %w", chainSelector, err)
39+
}
40+
41+
result := &ccvadapters.TokenVerifierChainAddresses{
42+
OnRampAddress: onRampAddr,
43+
RMNRemoteAddress: rmnRemoteAddr,
44+
}
45+
46+
cctpVerifierAddr, cctpVerifierErr := dsutil.FindAndFormatRef(ds, datastore.AddressRef{
47+
Type: datastore.ContractType(cctp_verifier.ContractType),
48+
Qualifier: cctpQualifier,
49+
}, chainSelector, toAddress)
50+
51+
cctpResolverAddr, cctpResolverErr := dsutil.FindAndFormatRef(ds, datastore.AddressRef{
52+
Type: datastore.ContractType(cctp_verifier.ResolverType),
53+
Qualifier: cctpQualifier,
54+
}, chainSelector, toAddress)
55+
56+
if (cctpVerifierErr == nil) != (cctpResolverErr == nil) {
57+
return nil, fmt.Errorf(
58+
"chain %d: cctp verifier and resolver must both exist or both be absent (verifier error: %v, resolver error: %v)",
59+
chainSelector, cctpVerifierErr, cctpResolverErr,
60+
)
61+
}
62+
63+
if cctpVerifierErr == nil {
64+
result.CCTPVerifierAddress = cctpVerifierAddr
65+
result.CCTPVerifierResolverAddress = cctpResolverAddr
66+
}
67+
68+
lombardResolverAddr, lombardResolverErr := dsutil.FindAndFormatRef(ds, datastore.AddressRef{
69+
Type: datastore.ContractType(lombard_verifier.ResolverType),
70+
Qualifier: lombardQualifier,
71+
}, chainSelector, toAddress)
72+
73+
if lombardResolverErr == nil {
74+
result.LombardVerifierResolverAddress = lombardResolverAddr
75+
}
76+
77+
return result, nil
78+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package adapters
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment/latest/operations/onramp"
7+
"github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment/v1_7_0/operations/versioned_verifier_resolver"
8+
execcontract "github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment/v1_7_0/operations/executor"
9+
"github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment/v1_6_0/operations/rmn_remote"
10+
dsutil "github.com/smartcontractkit/chainlink-ccip/deployment/utils/datastore"
11+
ccvadapters "github.com/smartcontractkit/chainlink-ccip/deployment/v1_7_0/adapters"
12+
"github.com/smartcontractkit/chainlink-deployments-framework/datastore"
13+
)
14+
15+
type EVMVerifierJobConfigAdapter struct{}
16+
17+
var _ ccvadapters.VerifierConfigAdapter = (*EVMVerifierJobConfigAdapter)(nil)
18+
19+
func (a *EVMVerifierJobConfigAdapter) ResolveVerifierContractAddresses(
20+
ds datastore.DataStore,
21+
chainSelector uint64,
22+
committeeQualifier string,
23+
executorQualifier string,
24+
) (*ccvadapters.VerifierContractAddresses, error) {
25+
toAddress := func(ref datastore.AddressRef) (string, error) { return ref.Address, nil }
26+
27+
committeeVerifierAddr, err := dsutil.FindAndFormatFirstRef(ds, chainSelector, toAddress,
28+
datastore.AddressRef{
29+
Type: datastore.ContractType(versioned_verifier_resolver.CommitteeVerifierResolverType),
30+
Qualifier: committeeQualifier,
31+
},
32+
datastore.AddressRef{
33+
Type: datastore.ContractType(versioned_verifier_resolver.CommitteeVerifierContractType),
34+
Qualifier: committeeQualifier,
35+
},
36+
)
37+
if err != nil {
38+
return nil, fmt.Errorf("failed to get committee verifier address for chain %d: %w", chainSelector, err)
39+
}
40+
41+
onRampAddr, err := dsutil.FindAndFormatRef(ds, datastore.AddressRef{
42+
Type: datastore.ContractType(onramp.ContractType),
43+
Version: onramp.Version,
44+
}, chainSelector, toAddress)
45+
if err != nil {
46+
return nil, fmt.Errorf("failed to get on ramp address for chain %d: %w", chainSelector, err)
47+
}
48+
49+
executorAddr, err := dsutil.FindAndFormatRef(ds, datastore.AddressRef{
50+
Type: datastore.ContractType(execcontract.ProxyType),
51+
Qualifier: executorQualifier,
52+
Version: execcontract.Version,
53+
}, chainSelector, toAddress)
54+
if err != nil {
55+
return nil, fmt.Errorf("failed to get executor proxy address for chain %d: %w", chainSelector, err)
56+
}
57+
58+
rmnRemoteAddr, err := dsutil.FindAndFormatRef(ds, datastore.AddressRef{
59+
Type: datastore.ContractType(rmn_remote.ContractType),
60+
Version: rmn_remote.Version,
61+
}, chainSelector, toAddress)
62+
if err != nil {
63+
return nil, fmt.Errorf("failed to get rmn remote address for chain %d: %w", chainSelector, err)
64+
}
65+
66+
return &ccvadapters.VerifierContractAddresses{
67+
CommitteeVerifierAddress: committeeVerifierAddr,
68+
OnRampAddress: onRampAddr,
69+
ExecutorProxyAddress: executorAddr,
70+
RMNRemoteAddress: rmnRemoteAddr,
71+
}, nil
72+
}

ccv/chains/evm/deployment/v1_7_0/operations/versioned_verifier_resolver/versioned_verifier_resolver.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
)
1313

1414
var ContractType cldf_deployment.ContractType = "VersionedVerifierResolver"
15+
var CommitteeVerifierContractType cldf_deployment.ContractType = "CommitteeVerifier"
1516
var CommitteeVerifierResolverType cldf_deployment.ContractType = "CommitteeVerifierResolver"
1617

1718
var Version = semver.MustParse("1.7.0")

deployment/.mockery.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,10 @@ packages:
66
filename: mock_jd_client.go
77
interfaces:
88
JDClient:
9+
github.com/smartcontractkit/chainlink-deployments-framework/offchain:
10+
config:
11+
dir: ./v1_7_0/mocks
12+
pkgname: mocks
13+
filename: mock_offchain_client.go
14+
interfaces:
15+
Client:

0 commit comments

Comments
 (0)