Skip to content

Commit

Permalink
"robust" chainID handling
Browse files Browse the repository at this point in the history
  • Loading branch information
archseer committed Nov 15, 2024
1 parent 8729b74 commit 759c3c1
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 8 deletions.
1 change: 1 addition & 0 deletions deployment/common/view/nops.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ func GenerateNopsView(nodeIds []string, oc deployment.OffchainClient) (map[strin
IsEnabled: nodeDetails.Node.IsEnabled,
}
for sel, ocrConfig := range node.SelToOCRConfig {
// TODO: support non-EVM here
chainid, err := chainsel.ChainIdFromSelector(sel)
if err != nil {
return nv, err
Expand Down
11 changes: 9 additions & 2 deletions deployment/environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,7 @@ func NodeInfo(nodeIDs []string, oc NodeChainConfigsLister) (Nodes, error) {
break
}
var sel uint64
var ok bool
switch chainConfig.Chain.Type {
case nodev1.ChainType_CHAIN_TYPE_EVM:
evmChainID, err := strconv.Atoi(chainConfig.Chain.Id)
Expand All @@ -324,9 +325,15 @@ func NodeInfo(nodeIDs []string, oc NodeChainConfigsLister) (Nodes, error) {
if err != nil {
return nil, err
}
sel = chain_selectors.AptosChainIdToChainSelector()[uint64(aptosChainID)]
sel, ok = chain_selectors.AptosChainIdToChainSelector()[uint64(aptosChainID)]
if !ok {
return nil, fmt.Errorf("chain not found for chain %v", chainConfig.Chain.Id)
}
case nodev1.ChainType_CHAIN_TYPE_SOLANA:
sel = chain_selectors.SolanaChainIdToChainSelector()[chainConfig.Chain.Id]
sel, ok = chain_selectors.SolanaChainIdToChainSelector()[chainConfig.Chain.Id]
if !ok {
return nil, fmt.Errorf("chain not found for chain %v", chainConfig.Chain.Id)
}
default:
// we skip unknown types
continue
Expand Down
26 changes: 20 additions & 6 deletions deployment/environment/memory/job_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,28 +184,42 @@ func (j JobClient) ListNodeChainConfigs(ctx context.Context, in *nodev1.ListNode
if err != nil {
return nil, err
}
chainID, err := chainsel.ChainIdFromSelector(selector)
if err != nil {
return nil, err
}

if family == chainsel.FamilyEVM {
// already handled above
continue
}

var chainID string

var ocrtype chaintype.ChainType
switch family {
case chainsel.FamilyEVM:
ocrtype = chaintype.EVM
cid, err := chainsel.ChainIdFromSelector(selector)
if err != nil {
return nil, err
}
chainID = strconv.Itoa(int(cid))
case chainsel.FamilySolana:
ocrtype = chaintype.Solana
cid, err := chainsel.SolanaChainIdFromSelector(selector)
if err != nil {
return nil, err
}
chainID = cid
case chainsel.FamilyStarknet:
ocrtype = chaintype.StarkNet
// TODO: support cid
case chainsel.FamilyCosmos:
ocrtype = chaintype.Cosmos
// TODO: support cid
case chainsel.FamilyAptos:
ocrtype = chaintype.Aptos
cid, err := chainsel.AptosChainIdFromSelector(selector)
if err != nil {
return nil, err
}
chainID = strconv.Itoa(int(cid))
default:
panic(fmt.Sprintf("Unsupported chain family %v", family))
}
Expand Down Expand Up @@ -238,7 +252,7 @@ func (j JobClient) ListNodeChainConfigs(ctx context.Context, in *nodev1.ListNode

chainConfigs = append(chainConfigs, &nodev1.ChainConfig{
Chain: &nodev1.Chain{
Id: strconv.Itoa(int(chainID)),
Id: chainID,
Type: ctype,
},
AccountAddress: "", // TODO: support AccountAddress
Expand Down
4 changes: 4 additions & 0 deletions deployment/environment/memory/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@ func NewNode(
) *Node {
evmchains := make(map[uint64]EVMChain)
for _, chain := range chains {
// we're only mapping evm chains here
if family, err := chainsel.GetSelectorFamily(chain.Selector); err != nil || family != chainsel.FamilyEVM {
continue
}
evmChainID, err := chainsel.ChainIdFromSelector(chain.Selector)
if err != nil {
t.Fatal(err)
Expand Down

0 comments on commit 759c3c1

Please sign in to comment.