-
Notifications
You must be signed in to change notification settings - Fork 665
/
aliases.go
63 lines (58 loc) · 2.31 KB
/
aliases.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package genesis
import (
"github.com/ava-labs/avalanchego/ids"
"github.com/ava-labs/avalanchego/utils/constants"
"github.com/ava-labs/avalanchego/vms/avm"
"github.com/ava-labs/avalanchego/vms/evm"
"github.com/ava-labs/avalanchego/vms/nftfx"
"github.com/ava-labs/avalanchego/vms/platformvm"
"github.com/ava-labs/avalanchego/vms/propertyfx"
"github.com/ava-labs/avalanchego/vms/secp256k1fx"
"github.com/ava-labs/avalanchego/vms/timestampvm"
)
// Aliases returns the default aliases based on the network ID
func Aliases(genesisBytes []byte) (map[string][]string, map[ids.ID][]string, map[ids.ID][]string, error) {
generalAliases := map[string][]string{
"vm/" + platformvm.ID.String(): {"vm/platform"},
"vm/" + avm.ID.String(): {"vm/avm"},
"vm/" + evm.ID.String(): {"vm/evm"},
"vm/" + timestampvm.ID.String(): {"vm/timestamp"},
"bc/" + constants.PlatformChainID.String(): {"P", "platform", "bc/P", "bc/platform"},
}
chainAliases := map[ids.ID][]string{
constants.PlatformChainID: {"P", "platform"},
}
vmAliases := map[ids.ID][]string{
platformvm.ID: {"platform"},
avm.ID: {"avm"},
evm.ID: {"evm"},
timestampvm.ID: {"timestamp"},
secp256k1fx.ID: {"secp256k1fx"},
nftfx.ID: {"nftfx"},
propertyfx.ID: {"propertyfx"},
}
genesis := &platformvm.Genesis{} // TODO let's not re-create genesis to do aliasing
if _, err := platformvm.GenesisCodec.Unmarshal(genesisBytes, genesis); err != nil {
return nil, nil, nil, err
}
if err := genesis.Initialize(); err != nil {
return nil, nil, nil, err
}
for _, chain := range genesis.Chains {
uChain := chain.UnsignedTx.(*platformvm.UnsignedCreateChainTx)
switch uChain.VMID {
case avm.ID:
generalAliases["bc/"+chain.ID().String()] = []string{"X", "avm", "bc/X", "bc/avm"}
chainAliases[chain.ID()] = []string{"X", "avm"}
case evm.ID:
generalAliases["bc/"+chain.ID().String()] = []string{"C", "evm", "bc/C", "bc/evm"}
chainAliases[chain.ID()] = []string{"C", "evm"}
case timestampvm.ID:
generalAliases["bc/"+chain.ID().String()] = []string{"bc/timestamp"}
chainAliases[chain.ID()] = []string{"timestamp"}
}
}
return generalAliases, chainAliases, vmAliases, nil
}