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  }