@@ -26,14 +26,16 @@ func (a *EVMCCVTokenVerifierConfigAdapter) ResolveTokenVerifierAddresses(
2626 toAddress := func (ref datastore.AddressRef ) (string , error ) { return ref .Address , nil }
2727
2828 onRampAddr , err := dsutils .FindAndFormatRef (ds , datastore.AddressRef {
29- Type : datastore .ContractType (onrampop .ContractType ),
29+ Type : datastore .ContractType (onrampop .ContractType ),
30+ Version : onrampop .Version ,
3031 }, chainSelector , toAddress )
3132 if err != nil {
3233 return nil , fmt .Errorf ("failed to get on ramp address for chain %d: %w" , chainSelector , err )
3334 }
3435
3536 rmnRemoteAddr , err := dsutils .FindAndFormatRef (ds , datastore.AddressRef {
36- Type : datastore .ContractType (rmnremote .ContractType ),
37+ Type : datastore .ContractType (rmnremote .ContractType ),
38+ Version : rmnremote .Version ,
3739 }, chainSelector , toAddress )
3840 if err != nil {
3941 return nil , fmt .Errorf ("failed to get rmn remote address for chain %d: %w" , chainSelector , err )
@@ -44,35 +46,48 @@ func (a *EVMCCVTokenVerifierConfigAdapter) ResolveTokenVerifierAddresses(
4446 RMNRemoteAddress : rmnRemoteAddr ,
4547 }
4648
47- cctpVerifierAddr , cctpVerifierErr := dsutils .FindAndFormatRef (ds , datastore.AddressRef {
48- Type : datastore .ContractType (cctpverifier .ContractType ),
49- Qualifier : cctpQualifier ,
50- }, chainSelector , toAddress )
49+ cctpVerifierRefs := ds .Addresses ().Filter (
50+ datastore .AddressRefByChainSelector (chainSelector ),
51+ datastore .AddressRefByType (datastore .ContractType (cctpverifier .ContractType )),
52+ datastore .AddressRefByQualifier (cctpQualifier ),
53+ datastore .AddressRefByVersion (cctpverifier .Version ),
54+ )
55+ if len (cctpVerifierRefs ) > 1 {
56+ return nil , fmt .Errorf ("chain %d: expected at most 1 CCTPVerifier with qualifier %q, found %d" , chainSelector , cctpQualifier , len (cctpVerifierRefs ))
57+ }
5158
52- cctpResolverAddr , cctpResolverErr := dsutils .FindAndFormatRef (ds , datastore.AddressRef {
53- Type : datastore .ContractType (versioned_verifier_resolver .CCTPVerifierResolverType ),
54- Qualifier : cctpQualifier ,
55- }, chainSelector , toAddress )
59+ cctpResolverRefs := ds .Addresses ().Filter (
60+ datastore .AddressRefByChainSelector (chainSelector ),
61+ datastore .AddressRefByType (datastore .ContractType (versioned_verifier_resolver .CCTPVerifierResolverType )),
62+ datastore .AddressRefByQualifier (cctpQualifier ),
63+ datastore .AddressRefByVersion (versioned_verifier_resolver .Version ),
64+ )
65+ if len (cctpResolverRefs ) > 1 {
66+ return nil , fmt .Errorf ("chain %d: expected at most 1 CCTPVerifierResolver with qualifier %q, found %d" , chainSelector , cctpQualifier , len (cctpResolverRefs ))
67+ }
5668
57- if (cctpVerifierErr == nil ) != (cctpResolverErr == nil ) {
69+ if (len ( cctpVerifierRefs ) == 1 ) != (len ( cctpResolverRefs ) == 1 ) {
5870 return nil , fmt .Errorf (
59- "chain %d: cctp verifier and resolver must both exist or both be absent (verifier error : %v, resolver error : %v)" ,
60- chainSelector , cctpVerifierErr , cctpResolverErr ,
71+ "chain %d: CCTP verifier and resolver must both exist or both be absent (verifier found : %v, resolver found : %v)" ,
72+ chainSelector , len ( cctpVerifierRefs ) == 1 , len ( cctpResolverRefs ) == 1 ,
6173 )
6274 }
63-
64- if cctpVerifierErr == nil {
65- result .CCTPVerifierAddress = cctpVerifierAddr
66- result .CCTPVerifierResolverAddress = cctpResolverAddr
75+ if len (cctpVerifierRefs ) == 1 {
76+ result .CCTPVerifierAddress = cctpVerifierRefs [0 ].Address
77+ result .CCTPVerifierResolverAddress = cctpResolverRefs [0 ].Address
6778 }
6879
69- lombardResolverAddr , lombardResolverErr := dsutils .FindAndFormatRef (ds , datastore.AddressRef {
70- Type : datastore .ContractType (versioned_verifier_resolver .LombardVerifierResolverType ),
71- Qualifier : lombardQualifier ,
72- }, chainSelector , toAddress )
73-
74- if lombardResolverErr == nil {
75- result .LombardVerifierResolverAddress = lombardResolverAddr
80+ lombardResolverRefs := ds .Addresses ().Filter (
81+ datastore .AddressRefByChainSelector (chainSelector ),
82+ datastore .AddressRefByType (datastore .ContractType (versioned_verifier_resolver .LombardVerifierResolverType )),
83+ datastore .AddressRefByQualifier (lombardQualifier ),
84+ datastore .AddressRefByVersion (versioned_verifier_resolver .Version ),
85+ )
86+ if len (lombardResolverRefs ) > 1 {
87+ return nil , fmt .Errorf ("chain %d: expected at most 1 LombardVerifierResolver with qualifier %q, found %d" , chainSelector , lombardQualifier , len (lombardResolverRefs ))
88+ }
89+ if len (lombardResolverRefs ) == 1 {
90+ result .LombardVerifierResolverAddress = lombardResolverRefs [0 ].Address
7691 }
7792
7893 return result , nil
0 commit comments