-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnetworks.go
155 lines (139 loc) · 3.12 KB
/
networks.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
package utils
import (
"fmt"
"math/big"
)
type Network string
type NetworkID uint64
func (n NetworkID) String() string {
return n.ToBig().String()
}
func (n NetworkID) IsValid() bool {
return n != 0
}
func (n NetworkID) ToNetwork() Network {
switch n {
case EthereumNetworkID:
return Ethereum
case BscNetworkID:
return Bsc
case PolygonNetworkID:
return Polygon
case AvalancheNetworkID:
return Avalanche
case FantomNetworkID:
return Fantom
case ArbitrumNetworkID:
return Arbitrum
case OptimismNetworkID:
return Optimism
default:
return Ethereum
}
}
func (n NetworkID) Uint64() uint64 {
return uint64(n)
}
const (
AnvilNetwork Network = "anvil"
Ethereum Network = "ethereum"
Bsc Network = "bsc"
Polygon Network = "polygon"
Avalanche Network = "avalanche"
Fantom Network = "fantom"
Arbitrum Network = "arbitrum"
Optimism Network = "optimism"
// Mainnets
EthereumNetworkID NetworkID = 1
BscNetworkID NetworkID = 56
PolygonNetworkID NetworkID = 137
AvalancheNetworkID NetworkID = 43114
FantomNetworkID NetworkID = 250
ArbitrumNetworkID NetworkID = 42161
OptimismNetworkID NetworkID = 10
// Special Mainnets
AnvilMainnetNetworkID NetworkID = 1
// Testnets
RopstenNetworkID NetworkID = 3
RinkebyNetworkID NetworkID = 4
GoerliNetworkID NetworkID = 5
KovanNetworkID NetworkID = 42
BscTestnetNetworkID NetworkID = 97
MumbaiNetworkID NetworkID = 80001
FujiNetworkID NetworkID = 43113
FantomTestNetworkID NetworkID = 4002
ArbitrumRinkebyID NetworkID = 421611
OptimismKovanID NetworkID = 69
// Localnets
AnvilNetworkID NetworkID = 1337
)
func (n Network) String() string {
return string(n)
}
func (n NetworkID) ToBig() *big.Int {
return new(big.Int).SetUint64(uint64(n))
}
func GetNetworkID(network Network) NetworkID {
switch network {
case Ethereum:
return EthereumNetworkID
case Bsc:
return BscNetworkID
case Polygon:
return PolygonNetworkID
case Avalanche:
return AvalancheNetworkID
case Fantom:
return FantomNetworkID
case Arbitrum:
return ArbitrumNetworkID
case Optimism:
return OptimismNetworkID
case AnvilNetwork:
return AnvilMainnetNetworkID
default:
return 0
}
}
func GetNetworkFromID(id NetworkID) (Network, error) {
switch id {
case EthereumNetworkID:
return Ethereum, nil
case BscNetworkID:
return Bsc, nil
case PolygonNetworkID:
return Polygon, nil
case AvalancheNetworkID:
return Avalanche, nil
case FantomNetworkID:
return Fantom, nil
case ArbitrumNetworkID:
return Arbitrum, nil
case OptimismNetworkID:
return Optimism, nil
default:
return "", fmt.Errorf("unknown network ID '%d' provided", id)
}
}
func GetNetworkFromString(network string) (Network, error) {
switch network {
case "ethereum":
return Ethereum, nil
case "bsc":
return Bsc, nil
case "polygon":
return Polygon, nil
case "avalanche":
return Avalanche, nil
case "fantom":
return Fantom, nil
case "arbitrum":
return Arbitrum, nil
case "optimism":
return Optimism, nil
case "anvil":
return AnvilNetwork, nil
default:
return "", fmt.Errorf("unknown network '%s' provided", network)
}
}