github.com/halybang/go-ethereum@v1.0.5-0.20180325041310-3b262bc1367c/core/vm/precompiled_contracts_addr.go (about) 1 // Copyright 2018 Wanchain Foundation Ltd 2 3 package vm 4 5 import ( 6 "github.com/wanchain/go-wanchain/common" 7 "github.com/wanchain/go-wanchain/core/types" 8 "math/big" 9 ) 10 11 // Precompiled contracts address or 12 // Reserved contracts address. 13 // Should prevent overwriting to them. 14 var ( 15 ecrecoverPrecompileAddr = common.BytesToAddress([]byte{1}) 16 sha256hashPrecompileAddr = common.BytesToAddress([]byte{2}) 17 ripemd160hashPrecompileAddr = common.BytesToAddress([]byte{3}) 18 dataCopyPrecompileAddr = common.BytesToAddress([]byte{4}) 19 bigModExpPrecompileAddr = common.BytesToAddress([]byte{5}) 20 bn256AddPrecompileAddr = common.BytesToAddress([]byte{6}) 21 bn256ScalarMulPrecompileAddr = common.BytesToAddress([]byte{7}) 22 bn256PairingPrecompileAddr = common.BytesToAddress([]byte{8}) 23 24 wanCoinPrecompileAddr = common.BytesToAddress([]byte{100}) 25 wanStampPrecompileAddr = common.BytesToAddress([]byte{200}) 26 27 otaBalanceStorageAddr = common.BytesToAddress(big.NewInt(300).Bytes()) 28 otaImageStorageAddr = common.BytesToAddress(big.NewInt(301).Bytes()) 29 30 // 0.01wan --> "0x0000000000000000000000010000000000000000" 31 otaBalancePercentdot001WStorageAddr = common.HexToAddress(WanStampdot001) 32 otaBalancePercentdot002WStorageAddr = common.HexToAddress(WanStampdot002) 33 otaBalancePercentdot005WStorageAddr = common.HexToAddress(WanStampdot005) 34 35 otaBalancePercentdot003WStorageAddr = common.HexToAddress(WanStampdot003) 36 otaBalancePercentdot006WStorageAddr = common.HexToAddress(WanStampdot006) 37 otaBalancePercentdot009WStorageAddr = common.HexToAddress(WanStampdot009) 38 39 otaBalancePercentdot03WStorageAddr = common.HexToAddress(WanStampdot03) 40 otaBalancePercentdot06WStorageAddr = common.HexToAddress(WanStampdot06) 41 otaBalancePercentdot09WStorageAddr = common.HexToAddress(WanStampdot09) 42 otaBalancePercentdot2WStorageAddr = common.HexToAddress(WanStampdot2) 43 otaBalancePercentdot5WStorageAddr = common.HexToAddress(WanStampdot5) 44 45 otaBalance10WStorageAddr = common.HexToAddress(Wancoin10) 46 otaBalance20WStorageAddr = common.HexToAddress(Wancoin20) 47 otaBalance50WStorageAddr = common.HexToAddress(Wancoin50) 48 otaBalance100WStorageAddr = common.HexToAddress(Wancoin100) 49 50 otaBalance200WStorageAddr = common.HexToAddress(Wancoin200) 51 otaBalance500WStorageAddr = common.HexToAddress(Wancoin500) 52 otaBalance1000WStorageAddr = common.HexToAddress(Wancoin1000) 53 otaBalance5000WStorageAddr = common.HexToAddress(Wancoin5000) 54 otaBalance50000WStorageAddr = common.HexToAddress(Wancoin50000) 55 ) 56 57 // PrecompiledContract is the basic interface for native Go contracts. The implementation 58 // requires a deterministic gas count based on the input size of the Run method of the 59 // contract. 60 type PrecompiledContract interface { 61 RequiredGas(input []byte) uint64 // RequiredPrice calculates the contract gas use 62 Run(input []byte, contract *Contract, evm *EVM) ([]byte, error) // Run runs the precompiled contract 63 ValidTx(stateDB StateDB, signer types.Signer, tx *types.Transaction) error 64 } 65 66 // PrecompiledContractsHomestead contains the default set of pre-compiled Ethereum 67 // contracts used in the Frontier and Homestead releases. 68 var PrecompiledContractsHomestead = map[common.Address]PrecompiledContract{ 69 ecrecoverPrecompileAddr: &ecrecover{}, 70 sha256hashPrecompileAddr: &sha256hash{}, 71 ripemd160hashPrecompileAddr: &ripemd160hash{}, 72 dataCopyPrecompileAddr: &dataCopy{}, 73 74 wanCoinPrecompileAddr: &wanCoinSC{}, 75 wanStampPrecompileAddr: &wanchainStampSC{}, 76 } 77 78 // PrecompiledContractsByzantium contains the default set of pre-compiled Ethereum 79 // contracts used in the Byzantium release. 80 var PrecompiledContractsByzantium = map[common.Address]PrecompiledContract{ 81 ecrecoverPrecompileAddr: &ecrecover{}, 82 sha256hashPrecompileAddr: &sha256hash{}, 83 ripemd160hashPrecompileAddr: &ripemd160hash{}, 84 dataCopyPrecompileAddr: &dataCopy{}, 85 bigModExpPrecompileAddr: &bigModExp{}, 86 bn256AddPrecompileAddr: &bn256Add{}, 87 bn256ScalarMulPrecompileAddr: &bn256ScalarMul{}, 88 bn256PairingPrecompileAddr: &bn256Pairing{}, 89 90 wanCoinPrecompileAddr: &wanCoinSC{}, 91 wanStampPrecompileAddr: &wanchainStampSC{}, 92 }