Documentation ¶
Index ¶
- Constants
- Variables
- func ArchiveVersion(gitCommit string) string
- func DAODrainList() []common.Address
- func VersionWithCommit(gitCommit string) string
- type ChainConfig
- func (c *ChainConfig) ByzantiumEIPFBlocks() []*big.Int
- func (c *ChainConfig) CheckCompatible(newcfg *ChainConfig, height uint64) *ConfigCompatError
- func (c *ChainConfig) ConstantinopleEIPFBlocks() []*big.Int
- func (c *ChainConfig) EIP158HFFBlocks() []*big.Int
- func (c *ChainConfig) GasTable(num *big.Int) GasTable
- func (c *ChainConfig) HasECIP1017() bool
- func (c *ChainConfig) IsBombDisposal(num *big.Int) bool
- func (c *ChainConfig) IsByzantium(num *big.Int) bool
- func (c *ChainConfig) IsConstantinople(num *big.Int) bool
- func (c *ChainConfig) IsDAOFork(num *big.Int) bool
- func (c *ChainConfig) IsECIP1010(num *big.Int) bool
- func (c *ChainConfig) IsEIP100F(num *big.Int) bool
- func (c *ChainConfig) IsEIP1014F(num *big.Int) bool
- func (c *ChainConfig) IsEIP1052F(num *big.Int) bool
- func (c *ChainConfig) IsEIP1234F(num *big.Int) bool
- func (c *ChainConfig) IsEIP1283F(num *big.Int) bool
- func (c *ChainConfig) IsEIP140F(num *big.Int) bool
- func (c *ChainConfig) IsEIP145F(num *big.Int) bool
- func (c *ChainConfig) IsEIP150(num *big.Int) bool
- func (c *ChainConfig) IsEIP155(num *big.Int) bool
- func (c *ChainConfig) IsEIP158HF(num *big.Int) bool
- func (c *ChainConfig) IsEIP160F(num *big.Int) bool
- func (c *ChainConfig) IsEIP161F(num *big.Int) bool
- func (c *ChainConfig) IsEIP170F(num *big.Int) bool
- func (c *ChainConfig) IsEIP198F(num *big.Int) bool
- func (c *ChainConfig) IsEIP211F(num *big.Int) bool
- func (c *ChainConfig) IsEIP212F(num *big.Int) bool
- func (c *ChainConfig) IsEIP213F(num *big.Int) bool
- func (c *ChainConfig) IsEIP214F(num *big.Int) bool
- func (c *ChainConfig) IsEIP2F(num *big.Int) bool
- func (c *ChainConfig) IsEIP649F(num *big.Int) bool
- func (c *ChainConfig) IsEIP658F(num *big.Int) bool
- func (c *ChainConfig) IsEIP7F(num *big.Int) bool
- func (c *ChainConfig) IsEWASM(num *big.Int) bool
- func (c *ChainConfig) IsEthersocial(num *big.Int) bool
- func (c *ChainConfig) IsHomestead(num *big.Int) bool
- func (c *ChainConfig) IsPetersburg(num *big.Int) bool
- func (c *ChainConfig) IsSocial(num *big.Int) bool
- func (c *ChainConfig) Rules(num *big.Int) Rules
- func (c *ChainConfig) String() string
- type CliqueConfig
- type ConfigCompatError
- type EthashConfig
- type GasTable
- type Rules
- type TrustedCheckpoint
Constants ¶
const ( Wei = 1 GWei = 1e9 Ether = 1e18 )
These are the multipliers for ether denominations. Example: To get the wei value of an amount in 'gwei', use
new(big.Int).Mul(value, big.NewInt(params.GWei))
const ( // BloomBitsBlocks is the number of blocks a single bloom bit section vector // contains on the server side. BloomBitsBlocks uint64 = 4096 // BloomBitsBlocksClient is the number of blocks a single bloom bit section vector // contains on the light client side BloomBitsBlocksClient uint64 = 32768 // BloomConfirms is the number of confirmation blocks before a bloom section is // considered probably final and its rotated bits are calculated. BloomConfirms = 256 // CHTFrequencyClient is the block frequency for creating CHTs on the client side. CHTFrequencyClient = 32768 // CHTFrequencyServer is the block frequency for creating CHTs on the server side. // Eventually this can be merged back with the client version, but that requires a // full database upgrade, so that should be left for a suitable moment. CHTFrequencyServer = 4096 // BloomTrieFrequency is the block frequency for creating BloomTrie on both // server/client sides. BloomTrieFrequency = 32768 // HelperTrieConfirmations is the number of confirmations before a client is expected // to have the given HelperTrie available. HelperTrieConfirmations = 2048 // HelperTrieProcessConfirmations is the number of confirmations before a HelperTrie // is generated HelperTrieProcessConfirmations = 256 )
const ( GasLimitBoundDivisor uint64 = 1024 // The bound divisor of the gas limit, used in update calculations. MinGasLimit uint64 = 5000 // Minimum the gas limit may ever be. GenesisGasLimit uint64 = 4712388 // Gas limit of the Genesis block. MaximumExtraDataSize uint64 = 32 // Maximum size extra data may be after Genesis. ExpByteGas uint64 = 10 // Times ceil(log256(exponent)) for the EXP instruction. SloadGas uint64 = 50 // Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added. CallValueTransferGas uint64 = 9000 // Paid for CALL when the value transfer is non-zero. CallNewAccountGas uint64 = 25000 // Paid for CALL when the destination address didn't exist prior. TxGas uint64 = 21000 // Per transaction not creating a contract. NOTE: Not payable on data of calls between transactions. TxGasContractCreation uint64 = 53000 // Per transaction that creates a contract. NOTE: Not payable on data of calls between transactions. TxDataZeroGas uint64 = 4 // Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions. QuadCoeffDiv uint64 = 512 // Divisor for the quadratic particle of the memory cost equation. LogDataGas uint64 = 8 // Per byte in a LOG* operation's data. CallStipend uint64 = 2300 // Free gas given at beginning of call. Sha3Gas uint64 = 30 // Once per SHA3 operation. Sha3WordGas uint64 = 6 // Once per word of the SHA3 operation's data. SstoreSetGas uint64 = 20000 // Once per SLOAD operation. SstoreResetGas uint64 = 5000 // Once per SSTORE operation if the zeroness changes from zero. SstoreClearGas uint64 = 5000 // Once per SSTORE operation if the zeroness doesn't change. SstoreRefundGas uint64 = 15000 // Once per SSTORE operation if the zeroness changes to zero. NetSstoreNoopGas uint64 = 200 // Once per SSTORE operation if the value doesn't change. NetSstoreInitGas uint64 = 20000 // Once per SSTORE operation from clean zero. NetSstoreCleanGas uint64 = 5000 // Once per SSTORE operation from clean non-zero. NetSstoreDirtyGas uint64 = 200 // Once per SSTORE operation from dirty. NetSstoreClearRefund uint64 = 15000 // Once per SSTORE operation for clearing an originally existing storage slot NetSstoreResetRefund uint64 = 4800 // Once per SSTORE operation for resetting to the original non-zero value NetSstoreResetClearRefund uint64 = 19800 // Once per SSTORE operation for resetting to the original zero value JumpdestGas uint64 = 1 // Once per JUMPDEST operation. EpochDuration uint64 = 30000 // Duration between proof-of-work epochs. CallGas uint64 = 40 // Once per CALL operation & message call transaction. CreateDataGas uint64 = 200 // CallCreateDepth uint64 = 1024 // Maximum depth of call/create stack. ExpGas uint64 = 10 // Once per EXP instruction LogGas uint64 = 375 // Per LOG* operation. CopyGas uint64 = 3 // StackLimit uint64 = 1024 // Maximum size of VM stack allowed. TierStepGas uint64 = 0 // Once per operation, for a selection of them. LogTopicGas uint64 = 375 // Multiplied by the * of the LOG*, per LOG transaction. e.g. LOG0 incurs 0 * c_txLogTopicGas, LOG4 incurs 4 * c_txLogTopicGas. CreateGas uint64 = 32000 // Once per CREATE operation & contract-creation transaction. Create2Gas uint64 = 32000 // Once per CREATE2 operation SuicideRefundGas uint64 = 24000 // Refunded following a suicide operation. MemoryGas uint64 = 3 // Times the address of the (highest referenced byte in memory + 1). NOTE: referencing happens on read, write and in instructions such as RETURN and CALL. TxDataNonZeroGas uint64 = 68 // Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions. MaxCodeSize = 24576 // Maximum bytecode to permit for a contract EcrecoverGas uint64 = 3000 // Elliptic curve sender recovery gas price Sha256BaseGas uint64 = 60 // Base price for a SHA256 operation Sha256PerWordGas uint64 = 12 // Per-word price for a SHA256 operation Ripemd160BaseGas uint64 = 600 // Base price for a RIPEMD160 operation Ripemd160PerWordGas uint64 = 120 // Per-word price for a RIPEMD160 operation IdentityBaseGas uint64 = 15 // Base price for a data copy operation IdentityPerWordGas uint64 = 3 // Per-work price for a data copy operation ModExpQuadCoeffDiv uint64 = 20 // Divisor for the quadratic particle of the big int modular exponentiation Bn256AddGas uint64 = 500 // Gas needed for an elliptic curve addition Bn256ScalarMulGas uint64 = 40000 // Gas needed for an elliptic curve scalar multiplication Bn256PairingBaseGas uint64 = 100000 // Base price for an elliptic curve pairing check Bn256PairingPerPointGas uint64 = 80000 // Per-point price for an elliptic curve pairing check )
const ( VersionMajor = 1 // Major version component of the current release VersionMinor = 8 // Minor version component of the current release VersionPatch = 23 // Patch version component of the current release VersionMeta = "stable" // Version metadata to append to the version string )
Variables ¶
var ( MainnetGenesisHash = common.HexToHash("0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3") TestnetGenesisHash = common.HexToHash("0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d") EllaismGenesisHash = common.HexToHash("0x4d7df65052bb21264d6ad2d6fe2d5578a36be12f71bf8d0559b0c15c4dc539b5") SocialGenesisHash = common.HexToHash("0xba8314d5c2ebddaf58eb882b364b27cbfa4d3402dacd32b60986754ac25cfe8d") MixGenesisHash = common.HexToHash("0x4fa57903dad05875ddf78030c16b5da886f7d81714cf66946a4c02566dbb2af5") RinkebyGenesisHash = common.HexToHash("0x6341fd3daf94b748c72ced5a5b26028f2474f5f00d824504e4fa37a75767e177") KottiGenesisHash = common.HexToHash("0x14c2283285a88fe5fce9bf5c573ab03d6616695d717b12a127188bcacfc743c4") )
Genesis hashes to enforce below configs on.
var ( // MainnetChainConfig is the chain parameters to run a node on the main network. MainnetChainConfig = &ChainConfig{ ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(1150000), DAOForkBlock: big.NewInt(1920000), DAOForkSupport: true, EIP150Block: big.NewInt(2463000), EIP150Hash: common.HexToHash("0x2086799aeebeae135c246c65021c82b4e15a2c451340993aacfd2751886514f0"), EIP155Block: big.NewInt(2675000), EIP158Block: big.NewInt(2675000), ByzantiumBlock: big.NewInt(4370000), DisposalBlock: nil, SocialBlock: nil, EthersocialBlock: nil, ConstantinopleBlock: big.NewInt(7280000), PetersburgBlock: big.NewInt(7280000), Ethash: new(EthashConfig), } // EllaismChainConfig is the chain parameters to run a node on the Ellaism main network. EllaismChainConfig = &ChainConfig{ ChainID: big.NewInt(64), HomesteadBlock: big.NewInt(0), DAOForkBlock: nil, DAOForkSupport: true, EIP150Block: big.NewInt(0), EIP150Hash: common.HexToHash("0x4d7df65052bb21264d6ad2d6fe2d5578a36be12f71bf8d0559b0c15c4dc539b5"), EIP155Block: big.NewInt(0), EIP158Block: nil, ByzantiumBlock: nil, DisposalBlock: big.NewInt(0), SocialBlock: nil, EthersocialBlock: nil, ConstantinopleBlock: nil, ECIP1017EraRounds: big.NewInt(10000000), EIP160FBlock: big.NewInt(0), Ethash: new(EthashConfig), } // ClassicChainConfig is the chain parameters to run a node on the Ellaism main network. ClassicChainConfig = &ChainConfig{ ChainID: big.NewInt(61), HomesteadBlock: big.NewInt(1150000), DAOForkBlock: big.NewInt(1920000), DAOForkSupport: false, EIP150Block: big.NewInt(2500000), EIP150Hash: common.HexToHash("0xca12c63534f565899681965528d536c52cb05b7c48e269c2a6cb77ad864d878a"), EIP155Block: big.NewInt(3000000), EIP158Block: nil, ByzantiumBlock: nil, DisposalBlock: big.NewInt(5900000), SocialBlock: nil, EthersocialBlock: nil, ConstantinopleBlock: nil, ECIP1017EraRounds: big.NewInt(5000000), EIP160FBlock: big.NewInt(3000000), ECIP1010PauseBlock: big.NewInt(3000000), ECIP1010Length: big.NewInt(2000000), Ethash: new(EthashConfig), } // SocialChainConfig is the chain parameters to run a node on the Ethereum Social main network. SocialChainConfig = &ChainConfig{ ChainID: big.NewInt(28), HomesteadBlock: big.NewInt(0), DAOForkBlock: nil, DAOForkSupport: true, EIP150Block: big.NewInt(0), EIP150Hash: common.HexToHash("0xba8314d5c2ebddaf58eb882b364b27cbfa4d3402dacd32b60986754ac25cfe8d"), EIP155Block: big.NewInt(0), EIP158Block: nil, ByzantiumBlock: nil, DisposalBlock: big.NewInt(0), SocialBlock: big.NewInt(0), EthersocialBlock: nil, ConstantinopleBlock: nil, ECIP1017EraRounds: big.NewInt(5000000), EIP160FBlock: big.NewInt(0), Ethash: new(EthashConfig), } // MainnetTrustedCheckpoint contains the light client trusted checkpoint for the main network. MainnetTrustedCheckpoint = &TrustedCheckpoint{ Name: "mainnet", SectionIndex: 216, SectionHead: common.HexToHash("0xae3e551c8d60d06fd411a8e6008e90625d3bb0cbbf664b65d5ed90b318553541"), CHTRoot: common.HexToHash("0xeea7d2ab3545a37deecc66fc43c9556ae337c3ea1c6893e401428207bdb8e434"), BloomRoot: common.HexToHash("0xb0d4176d160d67b99a9f963281e52bce0583a566b74b4497fe3ed24ae04004ff"), } // MixChainConfig is the chain parameters to run a node on the MIX main network. MixChainConfig = &ChainConfig{ ChainID: big.NewInt(76), HomesteadBlock: big.NewInt(0), DAOForkBlock: nil, DAOForkSupport: false, EIP150Block: big.NewInt(0), EIP150Hash: common.HexToHash("0x4fa57903dad05875ddf78030c16b5da886f7d81714cf66946a4c02566dbb2af5"), EIP155Block: big.NewInt(0), EIP158Block: big.NewInt(0), ByzantiumBlock: nil, DisposalBlock: nil, SocialBlock: nil, EthersocialBlock: nil, ConstantinopleBlock: nil, EIP160FBlock: big.NewInt(0), } EthersocialChainConfig = &ChainConfig{ ChainID: big.NewInt(31102), HomesteadBlock: big.NewInt(0), DAOForkBlock: big.NewInt(0), DAOForkSupport: false, EIP150Block: big.NewInt(0), EIP150Hash: common.HexToHash("0x310dd3c4ae84dd89f1b46cfdd5e26c8f904dfddddc73f323b468127272e20e9f"), EIP155Block: big.NewInt(845000), EIP158Block: big.NewInt(845000), ByzantiumBlock: big.NewInt(600000), DisposalBlock: nil, SocialBlock: nil, EthersocialBlock: big.NewInt(0), ConstantinopleBlock: nil, Ethash: new(EthashConfig), } // TestnetChainConfig contains the chain parameters to run a node on the Ropsten test network. TestnetChainConfig = &ChainConfig{ ChainID: big.NewInt(3), HomesteadBlock: big.NewInt(0), DAOForkBlock: nil, DAOForkSupport: true, EIP150Block: big.NewInt(0), EIP150Hash: common.HexToHash("0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d"), EIP155Block: big.NewInt(10), EIP158Block: big.NewInt(10), ByzantiumBlock: big.NewInt(1700000), DisposalBlock: nil, SocialBlock: nil, EthersocialBlock: nil, ConstantinopleBlock: big.NewInt(4230000), PetersburgBlock: big.NewInt(4939394), Ethash: new(EthashConfig), } // TestnetTrustedCheckpoint contains the light client trusted checkpoint for the Ropsten test network. TestnetTrustedCheckpoint = &TrustedCheckpoint{ Name: "testnet", SectionIndex: 148, SectionHead: common.HexToHash("0x4d3181bedb6aa96a6f3efa866c71f7802400d0fb4a6906946c453630d850efc0"), CHTRoot: common.HexToHash("0x25df2f9d63a5f84b2852988f0f0f7af5a7877da061c11b85c812780b5a27a5ec"), BloomRoot: common.HexToHash("0x0584834e5222471a06c669d210e302ca602780eaaddd04634fd65471c2a91419"), } // RinkebyChainConfig contains the chain parameters to run a node on the Rinkeby test network. RinkebyChainConfig = &ChainConfig{ ChainID: big.NewInt(4), HomesteadBlock: big.NewInt(1), DAOForkBlock: nil, DAOForkSupport: true, EIP150Block: big.NewInt(2), EIP150Hash: common.HexToHash("0x9b095b36c15eaf13044373aef8ee0bd3a382a5abb92e402afa44b8249c3a90e9"), EIP155Block: big.NewInt(3), EIP158Block: big.NewInt(3), ByzantiumBlock: big.NewInt(1035301), DisposalBlock: nil, SocialBlock: nil, EthersocialBlock: nil, ConstantinopleBlock: big.NewInt(3660663), PetersburgBlock: big.NewInt(9999999), Clique: &CliqueConfig{ Period: 15, Epoch: 30000, }, } // RinkebyTrustedCheckpoint contains the light client trusted checkpoint for the Rinkeby test network. RinkebyTrustedCheckpoint = &TrustedCheckpoint{ Name: "rinkeby", SectionIndex: 113, SectionHead: common.HexToHash("0xb812f3095af3af1cb2de7d7c2086ee807736a7315992c461b0986699185daf77"), CHTRoot: common.HexToHash("0x5416d0924925eb835987ad3d1f059ecc66778c51959c8246a7a35b22ec5f3109"), BloomRoot: common.HexToHash("0xcf74ca2c14e843b366561dab4fc64237bf6bb335119cbc97d723f3b501863470"), } // KottiChainConfig is the chain parameters to run a node on the Ellaism main network. KottiChainConfig = &ChainConfig{ ChainID: big.NewInt(6), HomesteadBlock: big.NewInt(0), DAOForkBlock: nil, DAOForkSupport: false, EIP150Block: big.NewInt(0), EIP150Hash: common.HexToHash("0x14c2283285a88fe5fce9bf5c573ab03d6616695d717b12a127188bcacfc743c4"), EIP155Block: big.NewInt(0), EIP158Block: nil, ByzantiumBlock: nil, DisposalBlock: big.NewInt(0), SocialBlock: nil, EthersocialBlock: nil, ConstantinopleBlock: nil, ECIP1017EraRounds: big.NewInt(5000000), EIP160FBlock: big.NewInt(0), ECIP1010PauseBlock: big.NewInt(0), ECIP1010Length: big.NewInt(2000000), Clique: &CliqueConfig{ Period: 15, Epoch: 30000, }, } // GoerliChainConfig contains the chain parameters to run a node on the Görli test network. GoerliChainConfig = &ChainConfig{ ChainID: big.NewInt(5), HomesteadBlock: big.NewInt(0), DAOForkBlock: nil, DAOForkSupport: true, EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), EIP158Block: big.NewInt(0), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: big.NewInt(0), PetersburgBlock: big.NewInt(0), Clique: &CliqueConfig{ Period: 15, Epoch: 30000, }, } // GoerliTrustedCheckpoint contains the light client trusted checkpoint for the Görli test network. GoerliTrustedCheckpoint = &TrustedCheckpoint{ Name: "goerli", SectionIndex: 0, SectionHead: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), CHTRoot: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), BloomRoot: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), } // AllEthashProtocolChanges contains every protocol change (EIPs) introduced // and accepted by the Ethereum core developers into the Ethash consensus. // // This configuration is intentionally not using keyed fields to force anyone // adding flags to the config to also have to set these fields. AllEthashProtocolChanges = &ChainConfig{ big.NewInt(1337), big.NewInt(0), nil, nil, nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), nil, nil, nil, big.NewInt(0), nil, nil, nil, nil, nil, nil, nil, nil, nil, big.NewInt(0), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, new(EthashConfig), nil, } // AllCliqueProtocolChanges contains every protocol change (EIPs) introduced // and accepted by the Ethereum core developers into the Clique consensus. // // This configuration is intentionally not using keyed fields to force anyone // adding flags to the config to also have to set these fields. AllCliqueProtocolChanges = &ChainConfig{ big.NewInt(1337), big.NewInt(0), nil, nil, nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), nil, nil, nil, big.NewInt(0), nil, nil, nil, nil, nil, nil, nil, nil, nil, big.NewInt(0), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, &CliqueConfig{ Period: 0, Epoch: 30000, }, } // TestChainConfig is used for tests. TestChainConfig = &ChainConfig{ big.NewInt(1), big.NewInt(0), nil, nil, nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), nil, nil, nil, big.NewInt(0), nil, nil, nil, nil, nil, nil, nil, nil, nil, big.NewInt(0), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, new(EthashConfig), nil, } // TestRules are all rules from TestChainConfig initialized at 0. TestRules = TestChainConfig.Rules(new(big.Int)) )
var ( // GasTableHomestead contain the gas prices for // the homestead phase. GasTableHomestead = GasTable{ ExtcodeSize: 20, ExtcodeCopy: 20, Balance: 20, SLoad: 50, Calls: 40, Suicide: 0, ExpByte: 10, } // GasTableEIP150 contain the gas re-prices for // the EIP150 phase. GasTableEIP150 = GasTable{ ExtcodeSize: 700, ExtcodeCopy: 700, Balance: 400, SLoad: 200, Calls: 700, Suicide: 5000, ExpByte: 10, CreateBySuicide: 25000, } // GasTableEIP160 contain the gas re-prices for // the EIP160 phase. GasTableEIP160 = GasTable{ ExtcodeSize: 700, ExtcodeCopy: 700, Balance: 400, SLoad: 200, Calls: 700, Suicide: 5000, ExpByte: 50, CreateBySuicide: 25000, } // GasTableEIP1052 contain the gas re-prices for // the constantinople phase. GasTableEIP1052 = GasTable{ ExtcodeSize: 700, ExtcodeCopy: 700, ExtcodeHash: 400, Balance: 400, SLoad: 200, Calls: 700, Suicide: 5000, ExpByte: 50, CreateBySuicide: 25000, } )
Variables containing gas prices for different ethereum phases.
var ( DifficultyBoundDivisor = big.NewInt(2048) // The bound divisor of the difficulty, used in the update calculations. GenesisDifficulty = big.NewInt(131072) // Difficulty of the Genesis block. MinimumDifficulty = big.NewInt(131072) // The minimum that the difficulty may ever be. DurationLimit = big.NewInt(13) // The decision boundary on the blocktime duration used to determine whether difficulty should go up or not. )
var ClassicBootnodes = []string{
"enode://158ac5a4817265d0d8b977660b3dbe9abee5694ed212f7091cbf784ddf47623ed015e1cb54594d10c1c46118747ddabe86ebf569cf24ae91f2daa0f1adaae390@159.203.56.33:30303",
"enode://efd48ad0879eeb7f9cb5e50f33f7bc21e805a72e90361f145baaa22dd75d111e7cd9c93f1b7060dcb30aa1b3e620269336dbf32339fea4c18925a4c15fe642df@18.205.66.229:30303",
"enode://5fbfb426fbb46f8b8c1bd3dd140f5b511da558cd37d60844b525909ab82e13a25ee722293c829e52cb65c2305b1637fa9a2ea4d6634a224d5f400bfe244ac0de@162.243.55.45:30303",
"enode://6dd3ac8147fa82e46837ec8c3223d69ac24bcdbab04b036a3705c14f3a02e968f7f1adfcdb002aacec2db46e625c04bf8b5a1f85bb2d40a479b3cc9d45a444af@104.237.131.102:30303",
"enode://b9e893ea9cb4537f4fed154233005ae61b441cd0ecd980136138c304fefac194c25a16b73dac05fc66a4198d0c15dd0f33af99b411882c68a019dfa6bb703b9d@18.130.93.66:30303",
"enode://3fe9705a02487baea45c1ffebfa4d84819f5f1e68a0dbc18031553242a6a08e39499b61e361a52c2a92f9553efd63763f6fdd34692be0d4ba6823bb2fc346009@178.62.238.75:30303",
"enode://d50facc65e46bda6ff594b6e95491efa16e067de41ae96571d9f3cb853d538c44864496fa5e4df10115f02bbbaf47853f932e110a44c89227da7c30e96840596@188.166.163.187:30303",
"enode://a0d5c589dc02d008fe4237da9877a5f1daedee0227ab612677eabe323520f003eb5e311af335de9f7964c2092bbc2b3b7ab1cce5a074d8346959f0868b4e366e@46.101.78.44:30303",
"enode://c071d96b0c0f13006feae3977fb1b3c2f62caedf643df9a3655bc1b60f777f05e69a4e58bf3547bb299210092764c56df1e08380e91265baa845dca8bc0a71da@68.183.99.5:30303",
"enode://83b33409349ffa25e150555f7b4f8deebc68f3d34d782129dc3c8ba07b880c209310a4191e1725f2f6bef59bce9452d821111eaa786deab08a7e6551fca41f4f@206.189.68.191:30303",
"enode://0daae2a30f2c73b0b257746587136efb8e3479496f7ea1e943eeb9a663b72dd04582f699f7010ee02c57fc45d1f09568c20a9050ff937f9139e2973ddd98b87b@159.89.169.103:30303",
"enode://50808461dd73b3d70537e4c1e5fafd1132b3a90f998399af9205f8889987d62096d4e853813562dd43e7270a71c9d9d4e4dd73a534fdb22fbac98c389c1a7362@178.128.55.119:30303",
"enode://5cd218959f8263bc3721d7789070806b0adff1a0ed3f95ec886fb469f9362c7507e3b32b256550b9a7964a23a938e8d42d45a0c34b332bfebc54b29081e83b93@35.187.57.94:30303",
"enode://66498ac935f3f54d873de4719bf2d6d61e0c74dd173b547531325bcef331480f9bedece91099810971c8567eeb1ae9f6954b013c47c6dc51355bbbbae65a8c16@54.148.165.1:30303",
"enode://73e74ce7426a17aa2d8b5bb64d796ec7dc4dcee2af9bbdd4434394d1e4e52e650b9e39202435fca29ce65c242fd6e59b93ed2cf37f04b645fb23e306273816ad@54.148.165.1:30304",
"enode://8809dadb6e6145bbbce832f8e3cb54f23c84db1c4957dac04be26157a16eceb91bb2567e3a2eb794bf8e7df937fd2de46d4214416d3c199f05d3b6fa76a5ef6d@51.141.115.3:30303",
}
ClassicBootnodes are the enode URLs of the P2P bootstrap nodes running on the Ethereum Classic network.
var DAOForkBlockExtra = common.FromHex("0x64616f2d686172642d666f726b")
DAOForkBlockExtra is the block header extra-data field to set for the DAO fork point and a number of consecutive blocks to allow fast/light syncers to correctly pick the side they want ("dao-hard-fork").
var DAOForkExtraRange = big.NewInt(10)
DAOForkExtraRange is the number of consecutive blocks from the DAO fork point to override the extra-data in to prevent no-fork attacks.
var DAORefundContract = common.HexToAddress("0xbf4ed7b27f1d666546e30d74d50d173d20bca754")
DAORefundContract is the address of the refund contract to send DAO balances to.
var DiscoveryV5Bootnodes = []string{
"enode://06051a5573c81934c9554ef2898eb13b33a34b94cf36b202b69fde139ca17a85051979867720d4bdae4323d4943ddf9aeeb6643633aa656e0be843659795007a@35.177.226.168:30303",
"enode://0cc5f5ffb5d9098c8b8c62325f3797f56509bff942704687b6530992ac706e2cb946b90a34f1f19548cd3c7baccbcaea354531e5983c7d1bc0dee16ce4b6440b@40.118.3.223:30304",
"enode://1c7a64d76c0334b0418c004af2f67c50e36a3be60b5e4790bdac0439d21603469a85fad36f2473c9a80eb043ae60936df905fa28f1ff614c3e5dc34f15dcd2dc@40.118.3.223:30306",
"enode://85c85d7143ae8bb96924f2b54f1b3e70d8c4d367af305325d30a61385a432f247d2c75c45c6b4a60335060d072d7f5b35dd1d4c45f76941f62a4f83b6e75daaf@40.118.3.223:30307",
}
DiscoveryV5Bootnodes are the enode URLs of the P2P bootstrap nodes for the experimental RLPx v5 topic-discovery network.
var EllaismBootnodes = []string{
"enode://0d88e242aa0b01ee306ca43e956174677c96ec8eba4197f4d8be6fd7d4f2e57731e95d533b88229b66eb1a44399d870e99b7a4fe6547c8c80cdf00407a986e14@94.130.237.158:30303",
"enode://4be9e419d3efb0214faf3ef1794a0c33ebbd7633ece734a0a956faa166fefc496b2692a2a485adc66af805e461ba3e12f8d3941ec207e56bb9f3d3626787a705@94.130.237.158:60606",
"enode://834246cc2a7584df29ccdcf3b5366f118a0e291264980376769e809665a02c4caf0d68c43eecf8390dbeaf861823b05583807af0a62542a1f3f717046b958a76@45.77.106.33:30303",
"enode://d8059dcb137cb52b8960ca82613eeba1d121105572decd8f1d3ea22b09070645eeab548d2a3cd2914f206e1331c7870bd2bd5a231ebac6b3d4886ec3b8e627e5@173.212.216.105:30303",
"enode://9215ad77bd081e35013cb42a8ceadff9d8e94a78fcc680dff1752a54e7484badff0904e331c4b40a68be593782e55acfd800f076d22f9d2832e8483733ade149@213.14.82.125:30303",
"enode://5dd35866da95aea15211fb1f98684f6e8c4e355e6aa3cc17585680ed53fa164477b8c52cb6ca4b24ec4d80f3d48ff9212b53feb131d825c7945a3abaaf02d24d@178.79.189.58:60606",
"enode://6c585c18024eb902ca093278af73b04863ac904caabc39ac2920c23532307c572ad92afd828a990c980d272b1f26307f2409cc97aec3ff9fe866732cae49a8c2@144.217.163.224:31337",
"enode://edd90c4cc64528802ad52fd127d80b641ff80fd43fa5292fb111c8bd2914482dffee288fd1b0d26440c6b2c669b10a53cbcd37c895ba0d6194110e100a965b2d@188.166.179.159:30303",
"enode://9d960373335c1cc38ca696dea8f2893e2a071c8f21524f21e8aae22be032acc3b67797b1d21e866f9d832943ae7d9555b8466c6ab34f473d21e547114952df37@213.32.53.183:30303",
}
EllaismBootnodes are the enode URLs of the P2P bootstrap nodes running on the Ellaism network.
"enode://6dcb79d9a9f978521a7edf53a50484f0595e14aa08575f0e71099a009ce2dbf40ef9b2dada99e3c78782f1300c1f6726c3d5acefa02730e1c8fe3c1a5301d8d8@52.231.75.3:50501",
"enode://e1d30788711266f699bf95f0392120ec620086d4eeabfd7e92e65a996ecd116cb9331ee3623aab88f498fb28bc302ac827cd3dc71f2db3c134e726eb23944af6@23.100.101.195:50501",
"enode://f2c298eee215cefa930b5280e665a38b2706be3120c302b9fcb48dc7d3ceba3a3e7bac354dccbbcbc3bfd177882b0d5498f36833dfcd5674225adb19dd04ec3a@52.231.74.146:50505",
"enode://7769cf0bdb7edd8dd95e590b46f950b9bd9625d681ec6123b31d3be58f1f1e0531d9811ccd9c1ad5d52a73999c6da2131943ca02666e238b1f265a1cc64dcae7@52.231.35.75:50505",
"enode://52e5e84d44bbda7e24a92826e60dfeb20a5d840c3c0be646b21940d7648f49a91bff2b7c47d37894b962eb183d8c7f71f693efb8534ee170ccd902addd487970@52.226.16.248:50505",
}EthersocialBootnodes are the enode URLs of the P2P bootstrap nodes running on the Ethersocial network.
var GoerliBootnodes = []string{
"enode://011f758e6552d105183b1761c5e2dea0111bc20fd5f6422bc7f91e0fabbec9a6595caf6239b37feb773dddd3f87240d99d859431891e4a642cf2a0a9e6cbb98a@51.141.78.53:30303",
"enode://176b9417f511d05b6b2cf3e34b756cf0a7096b3094572a8f6ef4cdcb9d1f9d00683bf0f83347eebdf3b81c3521c2332086d9592802230bf528eaf606a1d9677b@13.93.54.137:30303",
"enode://46add44b9f13965f7b9875ac6b85f016f341012d84f975377573800a863526f4da19ae2c620ec73d11591fa9510e992ecc03ad0751f53cc02f7c7ed6d55c7291@94.237.54.114:30313",
"enode://c1f8b7c2ac4453271fa07d8e9ecf9a2e8285aa0bd0c07df0131f47153306b0736fd3db8924e7a9bf0bed6b1d8d4f87362a71b033dc7c64547728d953e43e59b2@52.64.155.147:30303",
"enode://f4a9c6ee28586009fb5a96c8af13a58ed6d8315a9eee4772212c1d4d9cebe5a8b8a78ea4434f318726317d04a3f531a1ef0420cf9752605a562cfe858c46e263@213.186.16.82:30303",
"enode://573b6607cd59f241e30e4c4943fd50e99e2b6f42f9bd5ca111659d309c06741247f4f1e93843ad3e8c8c18b6e2d94c161b7ef67479b3938780a97134b618b5ce@52.56.136.200:30303",
}
GoerliBootnodes are the enode URLs of the P2P bootstrap nodes running on the Görli test network.
var KottiBootnodes = []string{
"enode://06333009fc9ef3c9e174768e495722a7f98fe7afd4660542e983005f85e556028410fd03278944f44cfe5437b1750b5e6bd1738f700fe7da3626d52010d2954c@51.141.15.254:30303",
"enode://ae8658da8d255d1992c3ec6e62e11d6e1c5899aa1566504bc1ff96a0c9c8bd44838372be643342553817f5cc7d78f1c83a8093dee13d77b3b0a583c050c81940@18.232.185.151:30303",
}
KottiBootnodes are the enode URLs of the P2P bootstrap nodes running on the Kotti test network.
var MainnetBootnodes = []string{
"enode://a979fb575495b8d6db44f750317d0f4622bf4c2aa3365d6af7c284339968eef29b69ad0dce72a4d8db5ebb4968de0e3bec910127f134779fbcb0cb6d3331163c@52.16.188.185:30303",
"enode://3f1d12044546b76342d59d4a05532c14b85aa669704bfe1f864fe079415aa2c02d743e03218e57a33fb94523adb54032871a6c51b2cc5514cb7c7e35b3ed0a99@13.93.211.84:30303",
"enode://78de8a0916848093c73790ead81d1928bec737d565119932b98c6b100d944b7a95e94f847f689fc723399d2e31129d182f7ef3863f2b4c820abbf3ab2722344d@191.235.84.50:30303",
"enode://158f8aab45f6d19c6cbf4a089c2670541a8da11978a2f90dbf6a502a4a3bab80d288afdbeb7ec0ef6d92de563767f3b1ea9e8e334ca711e9f8e2df5a0385e8e6@13.75.154.138:30303",
"enode://1118980bf48b0a3640bdba04e0fe78b1add18e1cd99bf22d53daac1fd9972ad650df52176e7c7d89d1114cfef2bc23a2959aa54998a46afcf7d91809f0855082@52.74.57.123:30303",
"enode://979b7fa28feeb35a4741660a16076f1943202cb72b6af70d327f053e248bab9ba81760f39d0701ef1d8f89cc1fbd2cacba0710a12cd5314d5e0c9021aa3637f9@5.1.83.226:30303",
}
MainnetBootnodes are the enode URLs of the P2P bootstrap nodes running on the main Ethereum network.
var MixBootnodes = []string{
"enode://aeb6070deb50efeb41c5e4283a6a3b08ff701fef90e3522161c145f30df2852af3dfc51ba74591f7c9d96b11ca4c3c2b354bf58dd243f2d877f6eecc2373fd1d@139.162.15.124:30313",
"enode://e0c926dcdc5c1cf58b2ecba371c577c28c28c91f9b210093178a812389b65e5b53f0e478753b94fceb0b36645b779a915ca57c0c48507fe4d7f786508653656c@74.207.240.177:30313",
"enode://a2a2adb8c12b9b189306050013a44f28db30f92fb3670db9675a049b98b96eb18901d6ff7b961b6e96cfa3923ac29e8f647ef452f0a23ddfef3903ac1cf826af@173.255.195.214:30313",
"enode://5460fd1ad217941befd0f8d060e6729a0535a0738770aba56827d1313c09aeb68e3098d458aace59faba2c6780b8c9c30cb140b80cd8e30ca3a074ce6d3344d3@50.116.38.52:30313",
"enode://31dcc30d6864687b404bbfb77b93008073187386c452abd17d9d509bf1dcec560d5c808c680d2fca9e72e78d164945683ed671514311b4bfd1bddb580e067131@45.79.128.151:30313",
"enode://fd80e04c75559cfdd9ed8c08ef2c39c5bc95021f7cbaf31acb601914bc7dac7c34b470b90a05e519bc8a8435a46e1ce51053ae07fac31a83567285c34a79c6bf@139.162.224.203:30313",
"enode://4742134a153c108855eb16563424887ed3aa5b6b74e4b713c8e93a10c376d954ff3041442716bdf9ee28fab2ea09f04d07e3366f834ea472c19820b7337eb27a@172.104.130.233:30313",
"enode://799d0a8836e17ef7fcc58b3d5ced5bb1fe474b31a09851f938d381f4556fa8954ca308f6a178d22ed56769a8b878ac8f9cc62c889f9cafab45a3bd4f6024bb29@172.104.68.7:30313",
}
MixBootnodes are the enode URLs of the P2P bootstrap nodes running on the MIX network.
var RinkebyBootnodes = []string{
"enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@52.169.42.101:30303",
"enode://343149e4feefa15d882d9fe4ac7d88f885bd05ebb735e547f12e12080a9fa07c8014ca6fd7f373123488102fe5e34111f8509cf0b7de3f5b44339c9f25e87cb8@52.3.158.184:30303",
"enode://b6b28890b006743680c52e64e0d16db57f28124885595fa03a562be1d2bf0f3a1da297d56b13da25fb992888fd556d4c1a27b1f39d531bde7de1921c90061cc6@159.89.28.211:30303",
}
RinkebyBootnodes are the enode URLs of the P2P bootstrap nodes running on the Rinkeby test network.
var SocialBootnodes = []string{
"enode://54d0824a268747046b6cabc7ee3afda48edba319f0d175e9e505aa9d425a1872b8b6f9ebf8f3b0a10dc7611a4c44ddec0fc691e5a5cde23e06fc4e4b3ff9dbef@13.125.185.147:30303",
"enode://7e150d47637177f675e20d663fc2500987f2149332caf23da522d92363be8a7880ef9150a6183e9031288a441e0457239474967a111eafce17e19a4288076ea9@18.219.40.235:30303",
"enode://6244c9d9cd288015d7ff165e90f3bb5649e34467e095a47c6d3c56e8fb8c849b3b4db683ff3c7ae8a654bbdc07ef12ee2fd7d72831ac213723281c1b0cc90599@13.250.220.98:30303",
"enode://e39f162b9f4b6ed6f098550f7867c2fb068fc66f362b3db0f45124c43ea18508f5ceef4e0e4de53d301e14a6f1683226aeb931d7401b4e83b5a583153ffdd7fd@52.57.98.157:30303",
"enode://54b4a117d66dc3aa93358dec1b31d4f38e72e4381b3e28a65ac6f1aaac3b304ebbe41d32cc864fa69a9a6815c34cf9b8965690dc174a5f72af14547b601b7924@222.239.255.71:30303",
"enode://851f14c5cc86cbc0a81acfcbe5dd99ad5c823435357219df736932c5f89ad4318f6973a553857a32d97a71793f5a35c062d46320be282aa0a80b06b9c6b624e4@13.125.232.71:30303",
}
SocialBootnodes are the enode URLs of the P2P bootstrap nodes running on the Ethereum Social network.
var TestnetBootnodes = []string{
"enode://30b7ab30a01c124a6cceca36863ece12c4f5fa68e3ba9b0b51407ccc002eeed3b3102d20a88f1c1d3c3154e2449317b8ef95090e77b312d5cc39354f86d5d606@52.176.7.10:30303",
"enode://865a63255b3bb68023b6bffd5095118fcc13e79dcf014fe4e47e065c350c7cc72af2e53eff895f11ba1bbb6a2b33271c1116ee870f266618eadfc2e78aa7349c@52.176.100.77:30303",
"enode://6332792c4a00e3e4ee0926ed89e0d27ef985424d97b6a45bf0f23e51f0dcb5e66b875777506458aea7af6f9e4ffb69f43f3778ee73c81ed9d34c51c4b16b0b0f@52.232.243.152:30303",
"enode://94c15d1b9e2fe7ce56e458b9a3b672ef11894ddedd0c6f247e0f1d3487f52b66208fb4aeb8179fce6e3a749ea93ed147c37976d67af557508d199d9594c35f09@192.81.208.223:30303",
}
TestnetBootnodes are the enode URLs of the P2P bootstrap nodes running on the Ropsten test network.
var Version = func() string { return fmt.Sprintf("%d.%d.%d", VersionMajor, VersionMinor, VersionPatch) }()
Version holds the textual version string.
var VersionWithMeta = func() string { v := Version if VersionMeta != "" { v += "-" + VersionMeta } return v }()
VersionWithMeta holds the textual version string including the metadata.
Functions ¶
func ArchiveVersion ¶ added in v1.8.13
ArchiveVersion holds the textual version string used for Geth archives. e.g. "1.8.11-dea1ce05" for stable releases, or
"1.8.13-unstable-21c059b6" for unstable releases
func DAODrainList ¶
DAODrainList is the list of accounts whose full balances will be moved into a refund contract at the beginning of the dao-fork block.
func VersionWithCommit ¶
Types ¶
type ChainConfig ¶
type ChainConfig struct { ChainID *big.Int `json:"chainId"` // chainId identifies the current chain and is used for replay protection // HF: Homestead HomesteadBlock *big.Int `json:"homesteadBlock,omitempty"` // Homestead switch block (nil = no fork, 0 = already homestead) // "Homestead Hard-fork Changes" // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2.md EIP2FBlock *big.Int `json:"eip2FBlock,omitempty"` // DELEGATECALL // https://eips.ethereum.org/EIPS/eip-7 EIP7FBlock *big.Int `json:"eip7FBlock,omitempy"` // HF: DAO DAOForkBlock *big.Int `json:"daoForkBlock,omitempty"` // TheDAO hard-fork switch block (nil = no fork) DAOForkSupport bool `json:"daoForkSupport,omitempty"` // Whether the nodes supports or opposes the DAO hard-fork // HF: Tangerine Whistle // EIP150 implements the Gas price changes (https://github.com/ethereum/EIPs/issues/150) EIP150Block *big.Int `json:"eip150Block,omitempty"` // EIP150 HF block (nil = no fork) EIP150Hash common.Hash `json:"eip150Hash,omitempty"` // EIP150 HF hash (needed for header only clients as only gas pricing changed) // HF: Spurious Dragon EIP155Block *big.Int `json:"eip155Block,omitempty"` // EIP155 HF block EIP158Block *big.Int `json:"eip158Block,omitempty"` // EIP158 HF block, includes implementations of 158/161, 160, and 170 // // EXP cost increase // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-160.md // NOTE: this json tag: // (a.) varies from it's 'siblings', which have 'F's in them // (b.) without the 'F' will vary from ETH implementations if they choose to accept the proposed changes // with corresponding refactoring (https://github.com/ethereum/go-ethereum/pull/18401) EIP160FBlock *big.Int `json:"eip160Block,omitempty"` // State trie clearing (== EIP158 proper) // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-161.md EIP161FBlock *big.Int `json:"eip161FBlock,omitempty"` // Contract code size limit // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-170.md EIP170FBlock *big.Int `json:"eip170FBlock,omitempty"` // HF: Byzantium ByzantiumBlock *big.Int `json:"byzantiumBlock,omitempty"` // Byzantium switch block (nil = no fork, 0 = already on byzantium) // // Difficulty adjustment to target mean block time including uncles // https://github.com/ethereum/EIPs/issues/100 EIP100FBlock *big.Int `json:"eip100FBlock,omitempty"` // Opcode REVERT // https://eips.ethereum.org/EIPS/eip-140 EIP140FBlock *big.Int `json:"eip140FBlock,omitempty"` // Precompiled contract for bigint_modexp // https://github.com/ethereum/EIPs/issues/198 EIP198FBlock *big.Int `json:"eip198FBlock,omitempty"` // Opcodes RETURNDATACOPY, RETURNDATASIZE // https://github.com/ethereum/EIPs/issues/211 EIP211FBlock *big.Int `json:"eip211FBlock,omitempty"` // Precompiled contract for pairing check // https://github.com/ethereum/EIPs/issues/212 EIP212FBlock *big.Int `json:"eip212FBlock,omitempty"` // Precompiled contracts for addition and scalar multiplication on the elliptic curve alt_bn128 // https://github.com/ethereum/EIPs/issues/213 EIP213FBlock *big.Int `json:"eip213FBlock,omitempty"` // Opcode STATICCALL // https://github.com/ethereum/EIPs/issues/214 EIP214FBlock *big.Int `json:"eip214FBlock,omitempty"` // Metropolis diff bomb delay and reducing block reward // https://github.com/ethereum/EIPs/issues/649 // note that this is closely related to EIP100. // In fact, EIP100 is bundled in EIP649FBlock *big.Int `json:"eip649FBlock,omitempty"` // Transaction receipt status // https://github.com/ethereum/EIPs/issues/658 EIP658FBlock *big.Int `json:"eip658FBlock,omitempty"` // HF: Constantinople ConstantinopleBlock *big.Int `json:"constantinopleBlock,omitempty"` // Constantinople switch block (nil = no fork, 0 = already activated) // // Opcodes SHR, SHL, SAR // https://eips.ethereum.org/EIPS/eip-145 EIP145FBlock *big.Int `json:"eip145FBlock,omitempty"` // Opcode CREATE2 // https://eips.ethereum.org/EIPS/eip-1014 EIP1014FBlock *big.Int `json:"eip1014FBlock,omitempty"` // Opcode EXTCODEHASH // https://eips.ethereum.org/EIPS/eip-1052 EIP1052FBlock *big.Int `json:"eip1052FBlock,omitempty"` // Constantinople difficulty bomb delay and block reward adjustment // https://eips.ethereum.org/EIPS/eip-1234 EIP1234FBlock *big.Int `json:"eip1234FBlock,omitempty"` // Net gas metering // https://eips.ethereum.org/EIPS/eip-1283 EIP1283FBlock *big.Int `json:"eip1283FBlock,omitempty"` PetersburgBlock *big.Int `json:"petersburgBlock,omitempty"` // Petersburg switch block (nil = same as Constantinople) EWASMBlock *big.Int `json:"ewasmBlock,omitempty"` // EWASM switch block (nil = no fork, 0 = already activated) ECIP1010PauseBlock *big.Int `json:"ecip1010PauseBlock,omitempty"` // ECIP1010 pause HF block ECIP1010Length *big.Int `json:"ecip1010Length,omitempty"` // ECIP1010 length ECIP1017EraRounds *big.Int `json:"ecip1017EraRounds,omitempty"` // ECIP1017 era rounds DisposalBlock *big.Int `json:"disposalBlock,omitempty"` // Bomb disposal HF block SocialBlock *big.Int `json:"socialBlock,omitempty"` // Ethereum Social Reward block // Various consensus engines Ethash *EthashConfig `json:"ethash,omitempty"` Clique *CliqueConfig `json:"clique,omitempty"` }
ChainConfig is the core config which determines the blockchain settings.
ChainConfig is stored in the database on a per block basis. This means that any network, identified by its genesis block, can have its own set of configuration options.
func (*ChainConfig) ByzantiumEIPFBlocks ¶ added in v1.8.23
func (c *ChainConfig) ByzantiumEIPFBlocks() []*big.Int
ByzantiumEIPFBlocks returns the canonical EIP blocks configured for the Byzantium Fork.
func (*ChainConfig) CheckCompatible ¶
func (c *ChainConfig) CheckCompatible(newcfg *ChainConfig, height uint64) *ConfigCompatError
CheckCompatible checks whether scheduled fork transitions have been imported with a mismatching chain configuration.
func (*ChainConfig) ConstantinopleEIPFBlocks ¶ added in v1.8.23
func (c *ChainConfig) ConstantinopleEIPFBlocks() []*big.Int
ConstantinopleEIPFBlocks returns the canonical blocks configured for the Constantinople Fork.
func (*ChainConfig) EIP158HFFBlocks ¶ added in v1.8.23
func (c *ChainConfig) EIP158HFFBlocks() []*big.Int
EIP158HFFBlocks returns the canonical EIP blocks configured for the implemented EIP158HF fork, a subset of features introduced at the Spurious Dragon fork.
func (*ChainConfig) GasTable ¶
func (c *ChainConfig) GasTable(num *big.Int) GasTable
GasTable returns the gas table corresponding to the current phase.
The returned GasTable's fields shouldn't, under any circumstances, be changed.
func (*ChainConfig) HasECIP1017 ¶
func (c *ChainConfig) HasECIP1017() bool
HasECIP1017 returns whether the chain is configured with ECIP1017.
func (*ChainConfig) IsBombDisposal ¶
func (c *ChainConfig) IsBombDisposal(num *big.Int) bool
func (*ChainConfig) IsByzantium ¶
func (c *ChainConfig) IsByzantium(num *big.Int) bool
IsByzantium returns whether num is either equal to the Byzantium fork block or greater, or whether the configured params satisfy all requirements fulfilling the Byzantium fork.
func (*ChainConfig) IsConstantinople ¶
func (c *ChainConfig) IsConstantinople(num *big.Int) bool
IsConstantinople returns whether num is either equal to the Constantinople fork block or greater, or whether configured params satisfy all requirements fulfilling the Constantinople fork.
func (*ChainConfig) IsDAOFork ¶
func (c *ChainConfig) IsDAOFork(num *big.Int) bool
IsDAOFork returns whether num is either equal to the DAO fork block or greater.
func (*ChainConfig) IsECIP1010 ¶ added in v1.8.4
func (c *ChainConfig) IsECIP1010(num *big.Int) bool
func (*ChainConfig) IsEIP100F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP100F(num *big.Int) bool
IsEIP100F returns whether num is equal to or greater than the Byzantium or EIP100 block.
func (*ChainConfig) IsEIP1014F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP1014F(num *big.Int) bool
IsEIP1014F returns whether num is equal to or greater than the Constantinople or EIP1014 block.
func (*ChainConfig) IsEIP1052F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP1052F(num *big.Int) bool
IsEIP1052F returns whether num is equal to or greater than the Constantinople or EIP1052 block.
func (*ChainConfig) IsEIP1234F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP1234F(num *big.Int) bool
IsEIP1234F returns whether num is equal to or greater than the Constantinople or EIP1234 block.
func (*ChainConfig) IsEIP1283F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP1283F(num *big.Int) bool
IsEIP1283F returns whether num is equal to or greater than the Constantinople or EIP1283 block.
func (*ChainConfig) IsEIP140F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP140F(num *big.Int) bool
IsEIP140F returns whether num is equal to or greater than the Byzantium or EIP140 block.
func (*ChainConfig) IsEIP145F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP145F(num *big.Int) bool
IsEIP145F returns whether num is equal to or greater than the Constantinople or EIP145 block.
func (*ChainConfig) IsEIP150 ¶
func (c *ChainConfig) IsEIP150(num *big.Int) bool
IsEIP150 returns whether num is either equal to the EIP150 fork block or greater.
func (*ChainConfig) IsEIP155 ¶
func (c *ChainConfig) IsEIP155(num *big.Int) bool
IsEIP155 returns whether num is either equal to the EIP155 fork block or greater.
func (*ChainConfig) IsEIP158HF ¶ added in v1.8.23
func (c *ChainConfig) IsEIP158HF(num *big.Int) bool
IsEIP158HF returns whether num is either equal to the "EIP158 Hardfork" (an implemented-in-code subset of the Spurious Dragon hard-fork) block or greater.
func (*ChainConfig) IsEIP160F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP160F(num *big.Int) bool
IsEIP160F returns whether num is either equal to or greater than the "EIP158HF" Block or EIP160 block.
func (*ChainConfig) IsEIP161F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP161F(num *big.Int) bool
IsEIP161F returns whether num is either equal to or greater than the "EIP158HF" Block or EIP161 block.
func (*ChainConfig) IsEIP170F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP170F(num *big.Int) bool
IsEIP170F returns whether num is either equal to or greater than the "EIP158HF" Block or EIP170 block.
func (*ChainConfig) IsEIP198F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP198F(num *big.Int) bool
IsEIP198F returns whether num is equal to or greater than the Byzantium or EIP198 block.
func (*ChainConfig) IsEIP211F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP211F(num *big.Int) bool
IsEIP211F returns whether num is equal to or greater than the Byzantium or EIP211 block.
func (*ChainConfig) IsEIP212F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP212F(num *big.Int) bool
IsEIP212F returns whether num is equal to or greater than the Byzantium or EIP212 block.
func (*ChainConfig) IsEIP213F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP213F(num *big.Int) bool
IsEIP213F returns whether num is equal to or greater than the Byzantium or EIP213 block.
func (*ChainConfig) IsEIP214F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP214F(num *big.Int) bool
IsEIP214F returns whether num is equal to or greater than the Byzantium or EIP214 block.
func (*ChainConfig) IsEIP2F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP2F(num *big.Int) bool
IsEIP2F returns whether num is equal to or greater than the Homestead or EIP2 block.
func (*ChainConfig) IsEIP649F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP649F(num *big.Int) bool
IsEIP649F returns whether num is equal to or greater than the Byzantium or EIP649 block.
func (*ChainConfig) IsEIP658F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP658F(num *big.Int) bool
IsEIP658F returns whether num is equal to or greater than the Byzantium or EIP658 block.
func (*ChainConfig) IsEIP7F ¶ added in v1.8.23
func (c *ChainConfig) IsEIP7F(num *big.Int) bool
IsEIP7F returns whether num is equal to or greater than the Homestead or EIP7 block.
func (*ChainConfig) IsEWASM ¶ added in v1.8.20
func (c *ChainConfig) IsEWASM(num *big.Int) bool
IsEWASM returns whether num represents a block number after the EWASM fork
func (*ChainConfig) IsEthersocial ¶ added in v1.8.20
func (c *ChainConfig) IsEthersocial(num *big.Int) bool
func (*ChainConfig) IsHomestead ¶
func (c *ChainConfig) IsHomestead(num *big.Int) bool
IsHomestead returns whether num is either equal to the homestead block or greater.
func (*ChainConfig) IsPetersburg ¶ added in v1.8.23
func (c *ChainConfig) IsPetersburg(num *big.Int) bool
IsPetersburg returns whether num is either - equal to or greater than the PetersburgBlock fork block, - OR is nil, and Constantinople is active
func (*ChainConfig) Rules ¶
func (c *ChainConfig) Rules(num *big.Int) Rules
Rules ensures c's ChainID is not nil.
func (*ChainConfig) String ¶
func (c *ChainConfig) String() string
String implements the fmt.Stringer interface.
type CliqueConfig ¶
type CliqueConfig struct { Period uint64 `json:"period"` // Number of seconds between blocks to enforce Epoch uint64 `json:"epoch"` // Epoch length to reset votes and checkpoint }
CliqueConfig is the consensus engine configs for proof-of-authority based sealing.
func (*CliqueConfig) String ¶
func (c *CliqueConfig) String() string
String implements the stringer interface, returning the consensus engine details.
type ConfigCompatError ¶
type ConfigCompatError struct { What string // block numbers of the stored and new configurations StoredConfig, NewConfig *big.Int // the block number to which the local chain must be rewound to correct the error RewindTo uint64 }
ConfigCompatError is raised if the locally-stored blockchain is initialised with a ChainConfig that would alter the past.
func (*ConfigCompatError) Error ¶
func (err *ConfigCompatError) Error() string
type EthashConfig ¶
type EthashConfig struct{}
EthashConfig is the consensus engine configs for proof-of-work based sealing.
func (*EthashConfig) String ¶
func (c *EthashConfig) String() string
String implements the stringer interface, returning the consensus engine details.
type GasTable ¶
type GasTable struct { ExtcodeSize uint64 ExtcodeCopy uint64 ExtcodeHash uint64 Balance uint64 SLoad uint64 Calls uint64 Suicide uint64 ExpByte uint64 // CreateBySuicide occurs when the // refunded account is one that does // not exist. This logic is similar // to call. May be left nil. Nil means // not charged. CreateBySuicide uint64 }
GasTable organizes gas prices for different ethereum phases.
type Rules ¶
type Rules struct { ChainID *big.Int IsHomestead, IsEIP2F, IsEIP7F bool IsEIP150 bool IsEIP155 bool IsEIP158HF, IsEIP160F, IsEIP161F, IsEIP170F bool IsByzantium, IsEIP100F, IsEIP140F, IsEIP198F, IsEIP211F, IsEIP212F, IsEIP213F, IsEIP214F, IsEIP649F, IsEIP658F bool IsConstantinople, IsEIP145F, IsEIP1014F, IsEIP1052F, IsEIP1283F, IsEIP1234F bool IsPetersburg bool
Rules wraps ChainConfig and is merely syntactic sugar or can be used for functions that do not have or require information about the block.
Rules is a one time interface meaning that it shouldn't be used in between transition phases.
type TrustedCheckpoint ¶ added in v1.8.20
type TrustedCheckpoint struct { Name string `json:"-"` SectionIndex uint64 `json:"sectionIndex"` SectionHead common.Hash `json:"sectionHead"` CHTRoot common.Hash `json:"chtRoot"` BloomRoot common.Hash `json:"bloomRoot"` }
TrustedCheckpoint represents a set of post-processed trie roots (CHT and BloomTrie) associated with the appropriate section index and head hash. It is used to start light syncing from this checkpoint and avoid downloading the entire header chain while still being able to securely access old headers/logs.