Skip to content

Commit 96d272c

Browse files
chris-de-leon-cllAnieeG
authored andcommitted
feat: infer registry address (#1833)
* feat: infer registry address * chore: remove registryRef from test cases and update inference logic * chore: refactor * fix: format specifiers
1 parent 9af1abf commit 96d272c

File tree

3 files changed

+20
-32
lines changed

3 files changed

+20
-32
lines changed

chains/evm/deployment/v1_6_0/sequences/token_and_pools.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,6 @@ func (a *EVMAdapter) ConfigureTokenForTransfersSequence() *cldf_ops.Sequence[tok
5252
if !common.IsHexAddress(input.TokenPoolAddress) {
5353
return sequences.OnChainOutput{}, fmt.Errorf("token pool address %q is not a valid hex address", input.TokenPoolAddress)
5454
}
55-
if !common.IsHexAddress(input.RegistryAddress) {
56-
return sequences.OnChainOutput{}, fmt.Errorf("registry address %q is not a valid hex address", input.RegistryAddress)
57-
}
5855

5956
tpAddr := common.HexToAddress(input.TokenPoolAddress)
6057
if tpAddr == (common.Address{}) {

deployment/tokens/configure_tokens_for_transfers.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,16 @@ func processTokenConfigForChain(e deployment.Environment, cfg map[uint64]TokenTr
8686
if err != nil {
8787
return nil, nil, nil, fmt.Errorf("failed to resolve token pool ref on chain with selector %d: %w", selector, err)
8888
}
89-
registry, err := datastore_utils.FindAndFormatRef(e.DataStore, token.RegistryRef, selector, datastore_utils.FullRef)
90-
if err != nil {
91-
return nil, nil, nil, fmt.Errorf("failed to resolve registry ref on chain with selector %d: %w", selector, err)
89+
90+
var registryAddr string
91+
if datastore_utils.IsAddressRefEmpty(token.RegistryRef) {
92+
e.Logger.Warnf("Registry ref is empty for chain selector %d. We will rely on the underlying adapter to resolve this field.", selector)
93+
} else {
94+
if registry, err := datastore_utils.FindAndFormatRef(e.DataStore, token.RegistryRef, selector, datastore_utils.FullRef); err != nil {
95+
return nil, nil, nil, fmt.Errorf("failed to resolve registry ref on chain with selector %d: %w", selector, err)
96+
} else {
97+
registryAddr = registry.Address
98+
}
9299
}
93100

94101
family, err := chain_selectors.GetSelectorFamily(selector)
@@ -129,7 +136,7 @@ func processTokenConfigForChain(e deployment.Environment, cfg map[uint64]TokenTr
129136
TokenPoolAddress: tokenPool.Address,
130137
RemoteChains: remoteChains,
131138
ExternalAdmin: token.ExternalAdmin,
132-
RegistryAddress: registry.Address,
139+
RegistryAddress: registryAddr,
133140
TokenRef: token.TokenRef,
134141
PoolType: tokenPool.Type.String(),
135142
ExistingDataStore: e.DataStore,

integration-tests/deployment/tokens_and_token_pools_test.go

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ func TestTokensAndTokenPools(t *testing.T) {
480480
TokenExpansionInputPerChain: map[uint64]tokensapi.TokenExpansionInputPerChain{
481481
evmA.Chain.Selector: {
482482
SkipOwnershipTransfer: true, // https://smartcontract-it.atlassian.net/browse/NONEVM-2902
483-
TokenPoolVersion: v1_6_0,
483+
TokenPoolVersion: v1_6_0,
484484
TokenTransferConfig: &tokensapi.TokenTransferConfig{
485485
ChainSelector: evmA.Chain.Selector,
486486
TokenPoolRef: datastore.AddressRef{
@@ -489,10 +489,7 @@ func TestTokensAndTokenPools(t *testing.T) {
489489
Type: datastore.ContractType(evmTokenPoolType),
490490
Version: v1_5_1,
491491
},
492-
RegistryRef: datastore.AddressRef{
493-
ChainSelector: evmA.Chain.Selector,
494-
Address: evmA.TAR.Address().Hex(),
495-
},
492+
RegistryRef: datastore.AddressRef{}, // inferred
496493
RemoteChains: map[uint64]tokensapi.RemoteChainConfig[*datastore.AddressRef, datastore.AddressRef]{
497494
evmB.Chain.Selector: {
498495
OutboundRateLimiterConfig: defaultRL,
@@ -502,7 +499,7 @@ func TestTokensAndTokenPools(t *testing.T) {
502499
},
503500
evmB.Chain.Selector: {
504501
SkipOwnershipTransfer: true, // https://smartcontract-it.atlassian.net/browse/NONEVM-2902
505-
TokenPoolVersion: v1_6_0,
502+
TokenPoolVersion: v1_6_0,
506503
TokenTransferConfig: &tokensapi.TokenTransferConfig{
507504
ChainSelector: evmB.Chain.Selector,
508505
TokenPoolRef: datastore.AddressRef{
@@ -511,10 +508,7 @@ func TestTokensAndTokenPools(t *testing.T) {
511508
Type: datastore.ContractType(evmTokenPoolType),
512509
Version: v1_5_1,
513510
},
514-
RegistryRef: datastore.AddressRef{
515-
ChainSelector: evmB.Chain.Selector,
516-
Address: evmB.TAR.Address().Hex(),
517-
},
511+
RegistryRef: datastore.AddressRef{}, // inferred
518512
RemoteChains: map[uint64]tokensapi.RemoteChainConfig[*datastore.AddressRef, datastore.AddressRef]{
519513
evmA.Chain.Selector: {
520514
OutboundRateLimiterConfig: defaultRL,
@@ -804,11 +798,7 @@ func TestTokensAndTokenPools(t *testing.T) {
804798
ChainSelector: solbnm.Chain.Selector,
805799
Address: tokenAddr.Address,
806800
},
807-
RegistryRef: datastore.AddressRef{
808-
ChainSelector: solbnm.Chain.Selector,
809-
Address: routerProgramId.String(),
810-
Version: v1_6_0,
811-
},
801+
RegistryRef: datastore.AddressRef{}, // inferred
812802
RemoteChains: map[uint64]tokensapi.RemoteChainConfig[*datastore.AddressRef, datastore.AddressRef]{
813803
evmA.Chain.Selector: {
814804
OutboundRateLimiterConfig: defaultRL,
@@ -821,7 +811,7 @@ func TestTokensAndTokenPools(t *testing.T) {
821811
},
822812
evmA.Chain.Selector: {
823813
SkipOwnershipTransfer: true, // https://smartcontract-it.atlassian.net/browse/NONEVM-2902
824-
TokenPoolVersion: v1_6_0,
814+
TokenPoolVersion: v1_6_0,
825815
TokenTransferConfig: &tokensapi.TokenTransferConfig{
826816
ChainSelector: evmA.Chain.Selector,
827817
TokenPoolRef: datastore.AddressRef{
@@ -830,10 +820,7 @@ func TestTokensAndTokenPools(t *testing.T) {
830820
Type: datastore.ContractType(evmTokenPoolType),
831821
Version: v1_5_1,
832822
},
833-
RegistryRef: datastore.AddressRef{
834-
ChainSelector: evmA.Chain.Selector,
835-
Address: evmA.TAR.Address().Hex(),
836-
},
823+
RegistryRef: datastore.AddressRef{}, // inferred
837824
RemoteChains: map[uint64]tokensapi.RemoteChainConfig[*datastore.AddressRef, datastore.AddressRef]{
838825
solbnm.Chain.Selector: {
839826
OutboundRateLimiterConfig: defaultRL,
@@ -843,7 +830,7 @@ func TestTokensAndTokenPools(t *testing.T) {
843830
},
844831
evmB.Chain.Selector: {
845832
SkipOwnershipTransfer: true, // https://smartcontract-it.atlassian.net/browse/NONEVM-2902
846-
TokenPoolVersion: v1_6_0,
833+
TokenPoolVersion: v1_6_0,
847834
TokenTransferConfig: &tokensapi.TokenTransferConfig{
848835
ChainSelector: evmB.Chain.Selector,
849836
TokenPoolRef: datastore.AddressRef{
@@ -852,10 +839,7 @@ func TestTokensAndTokenPools(t *testing.T) {
852839
Type: datastore.ContractType(evmTokenPoolType),
853840
Version: v1_5_1,
854841
},
855-
RegistryRef: datastore.AddressRef{
856-
ChainSelector: evmB.Chain.Selector,
857-
Address: evmB.TAR.Address().Hex(),
858-
},
842+
RegistryRef: datastore.AddressRef{}, // inferred
859843
RemoteChains: map[uint64]tokensapi.RemoteChainConfig[*datastore.AddressRef, datastore.AddressRef]{
860844
solbnm.Chain.Selector: {
861845
OutboundRateLimiterConfig: defaultRL,

0 commit comments

Comments
 (0)