github.com/status-im/status-go@v1.1.0/services/wallet/common/const.go (about) 1 package common 2 3 import ( 4 "strconv" 5 "time" 6 7 ethCommon "github.com/ethereum/go-ethereum/common" 8 ) 9 10 type MultiTransactionIDType int64 11 12 const ( 13 NoMultiTransactionID = MultiTransactionIDType(0) 14 HexAddressLength = 42 15 ) 16 17 type ChainID uint64 18 19 const ( 20 UnknownChainID uint64 = 0 21 EthereumMainnet uint64 = 1 22 EthereumGoerli uint64 = 5 23 EthereumSepolia uint64 = 11155111 24 OptimismMainnet uint64 = 10 25 OptimismGoerli uint64 = 420 26 OptimismSepolia uint64 = 11155420 27 ArbitrumMainnet uint64 = 42161 28 ArbitrumGoerli uint64 = 421613 29 ArbitrumSepolia uint64 = 421614 30 BinanceChainID uint64 = 56 // obsolete? 31 BinanceTestChainID uint64 = 97 // obsolete? 32 ) 33 34 var ( 35 ZeroAddress = ethCommon.HexToAddress("0x0000000000000000000000000000000000000000") 36 37 SupportedNetworks = map[uint64]bool{ 38 EthereumMainnet: true, 39 OptimismMainnet: true, 40 ArbitrumMainnet: true, 41 } 42 43 SupportedTestNetworks = map[uint64]bool{ 44 EthereumSepolia: true, 45 OptimismSepolia: true, 46 ArbitrumSepolia: true, 47 } 48 ) 49 50 type ContractType byte 51 52 const ( 53 ContractTypeUnknown ContractType = iota 54 ContractTypeERC20 55 ContractTypeERC721 56 ContractTypeERC1155 57 ) 58 59 func (c ChainID) String() string { 60 return strconv.FormatUint(uint64(c), 10) 61 } 62 63 func (c ChainID) ToUint() uint64 { 64 return uint64(c) 65 } 66 67 func (c ChainID) IsMainnet() bool { 68 switch uint64(c) { 69 case EthereumMainnet, OptimismMainnet, ArbitrumMainnet: 70 return true 71 case EthereumGoerli, EthereumSepolia, OptimismGoerli, OptimismSepolia, ArbitrumGoerli, ArbitrumSepolia: 72 return false 73 case UnknownChainID: 74 return false 75 } 76 return false 77 } 78 79 func AllChainIDs() []ChainID { 80 return []ChainID{ 81 ChainID(EthereumMainnet), 82 ChainID(EthereumGoerli), 83 ChainID(EthereumSepolia), 84 ChainID(OptimismMainnet), 85 ChainID(OptimismGoerli), 86 ChainID(OptimismSepolia), 87 ChainID(ArbitrumMainnet), 88 ChainID(ArbitrumGoerli), 89 ChainID(ArbitrumSepolia), 90 } 91 } 92 93 var AverageBlockDurationForChain = map[ChainID]time.Duration{ 94 ChainID(UnknownChainID): time.Duration(12000) * time.Millisecond, 95 ChainID(EthereumMainnet): time.Duration(12000) * time.Millisecond, 96 ChainID(EthereumGoerli): time.Duration(12000) * time.Millisecond, 97 ChainID(OptimismMainnet): time.Duration(400) * time.Millisecond, 98 ChainID(OptimismGoerli): time.Duration(2000) * time.Millisecond, 99 ChainID(ArbitrumMainnet): time.Duration(300) * time.Millisecond, 100 ChainID(ArbitrumGoerli): time.Duration(1500) * time.Millisecond, 101 }