github.com/MetalBlockchain/metalgo@v1.11.9/genesis/aliases.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package genesis 5 6 import ( 7 "path" 8 9 "github.com/MetalBlockchain/metalgo/ids" 10 "github.com/MetalBlockchain/metalgo/utils/constants" 11 "github.com/MetalBlockchain/metalgo/vms/nftfx" 12 "github.com/MetalBlockchain/metalgo/vms/platformvm/genesis" 13 "github.com/MetalBlockchain/metalgo/vms/platformvm/txs" 14 "github.com/MetalBlockchain/metalgo/vms/propertyfx" 15 "github.com/MetalBlockchain/metalgo/vms/secp256k1fx" 16 ) 17 18 var ( 19 PChainAliases = []string{"P", "platform"} 20 XChainAliases = []string{"X", "avm"} 21 CChainAliases = []string{"C", "evm"} 22 VMAliases = map[ids.ID][]string{ 23 constants.PlatformVMID: {"platform"}, 24 constants.AVMID: {"avm"}, 25 constants.EVMID: {"evm"}, 26 secp256k1fx.ID: {"secp256k1fx"}, 27 nftfx.ID: {"nftfx"}, 28 propertyfx.ID: {"propertyfx"}, 29 } 30 ) 31 32 // Aliases returns the default aliases based on the network ID 33 func Aliases(genesisBytes []byte) (map[string][]string, map[ids.ID][]string, error) { 34 apiAliases := map[string][]string{ 35 path.Join(constants.ChainAliasPrefix, constants.PlatformChainID.String()): { 36 "P", 37 "platform", 38 path.Join(constants.ChainAliasPrefix, "P"), 39 path.Join(constants.ChainAliasPrefix, "platform"), 40 }, 41 } 42 chainAliases := map[ids.ID][]string{ 43 constants.PlatformChainID: PChainAliases, 44 } 45 46 genesis, err := genesis.Parse(genesisBytes) // TODO let's not re-create genesis to do aliasing 47 if err != nil { 48 return nil, nil, err 49 } 50 for _, chain := range genesis.Chains { 51 uChain := chain.Unsigned.(*txs.CreateChainTx) 52 chainID := chain.ID() 53 endpoint := path.Join(constants.ChainAliasPrefix, chainID.String()) 54 switch uChain.VMID { 55 case constants.AVMID: 56 apiAliases[endpoint] = []string{ 57 "X", 58 "avm", 59 path.Join(constants.ChainAliasPrefix, "X"), 60 path.Join(constants.ChainAliasPrefix, "avm"), 61 } 62 chainAliases[chainID] = XChainAliases 63 case constants.EVMID: 64 apiAliases[endpoint] = []string{ 65 "C", 66 "evm", 67 path.Join(constants.ChainAliasPrefix, "C"), 68 path.Join(constants.ChainAliasPrefix, "evm"), 69 } 70 chainAliases[chainID] = CChainAliases 71 } 72 } 73 return apiAliases, chainAliases, nil 74 }