Documentation ¶
Index ¶
Constants ¶
const ( // These are the multipliers for ether denominations. // Example: To get the wei value of an amount in 'douglas', use // // new(big.Int).Mul(value, big.NewInt(params.Douglas)) // Wei = 1 Ada = 1e3 Babbage = 1e6 Shannon = 1e9 Szabo = 1e12 Finney = 1e15 Em = 1e18 Einstein = 1e21 Douglas = 1e42 )
const ( GasLimitBoundDivisor uint64 = 512 // The bound divisor of the gas limit, used in update calculations. MinGasLimit uint64 = 200000000 // Minimum the gas limit may ever be. GenesisGasLimit uint64 = 250000000 // Gas limit of the Genesis block. In EM, it's set to 250 million, meaning that a block can contain about 10 thousand transfer transactions. MaxGasLimit uint64 = 300000000 // Max block GasLimit MaximumExtraDataSize uint64 = 16 // Maximum size extra data may be after Genesis. ExpByteGas uint64 = 1 // Times ceil(log256(exponent)) for the EXP instruction. SloadGas uint64 = 3 // Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added. CallValueTransferGas uint64 = 550 // Paid for CALL when the value transfer is non-zero. CallNewAccountGas uint64 = 1600 // Paid for CALL when the destination address didn't exist prior. TxGas uint64 = 25000 // Per transaction not creating a contract. NOTE: Not payable on data of calls between transactions. TxGasContractCreation uint64 = 20000 // Per transaction that creates a contract. NOTE: Not payable on data of calls between transactions. TxGasAgentCreation = "50000000000000000000000" // change to 50000 em TxGasAgentCreationOld = "5000000000000000000000000" // change to 5000000 em AgentChangeBlockNumber = 812787 TxDataZeroGas uint64 = 1 // Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions. QuadCoeffDiv uint64 = 1024 // Divisor for the quadratic particle of the memory cost equation. SstoreSetGas uint64 = 1250 // Once per SLOAD operation. LogDataGas uint64 = 1 // Per byte in a LOG* operation's data. CallStipend uint64 = 1000 // Free gas given at beginning of call. TxGasAssetPublish uint64 = 100000 // Gas for publishing an asset. MaxContractGasLimit uint64 = 60000000 MaxOneContractGasLimit uint64 = 1000000 // Multi-asset BalanceOfGas uint64 = 50 TransferAssetGas uint64 = 550 Sha3Gas uint64 = 2 // Once per SHA3 operation. Sha3WordGas uint64 = 1 // Once per word of the SHA3 operation's data. SstoreResetGas uint64 = 310 // Once per SSTORE operation if the zeroness changes from zero. SstoreClearGas uint64 = 310 // Once per SSTORE operation if the zeroness doesn't change. SstoreRefundGas uint64 = 950 // Once per SSTORE operation if the zeroness changes to zero. JumpdestGas uint64 = 1 // Refunded gas, once per SSTORE operation if the zeroness changes to zero. EpochDuration uint64 = 2000 // Duration between proof-of-work epochs. CallGas uint64 = 3 // Once per CALL operation & message call transaction. CreateDataGas uint64 = 12 // CallCreateDepth uint64 = 1024 // Maximum depth of call/create stack. ExpGas uint64 = 2 // Once per EXP instruction LogGas uint64 = 24 // Per LOG* operation. CopyGas uint64 = 1 // StackLimit uint64 = 1024 // Maximum size of VM stack allowed. TierStepGas uint64 = 0 // Once per operation, for a selection of them. LogTopicGas uint64 = 24 // Multiplied by the * of the LOG*, per LOG transaction. e.g. LOG0 incurs 0 * c_txLogTopicGas, LOG4 incurs 4 * c_txLogTopicGas. CreateGas uint64 = 2000 // Once per CREATE operation & contract-creation transaction. SuicideRefundGas uint64 = 1500 // Refunded following a suicide operation. MemoryGas uint64 = 1 // 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 = 4 // Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions. TxABIGas uint64 = 3 // Per byte of abi attached to a transaction. MaxCodeSize = 24576 // Maximum bytecode to permit for a contract EcrecoverGas uint64 = 200 // Elliptic curve sender recovery gas price Sha256BaseGas uint64 = 4 // Base price for a SHA256 operation Sha256PerWordGas uint64 = 1 // Per-word price for a SHA256 operation Ripemd160BaseGas uint64 = 38 // Base price for a RIPEMD160 operation Ripemd160PerWordGas uint64 = 8 // Per-word price for a RIPEMD160 operation IdentityBaseGas uint64 = 1 // Base price for a data copy operation IdentityPerWordGas uint64 = 1 // Per-work price for a data copy operation ModExpQuadCoeffDiv uint64 = 2 // Divisor for the quadratic particle of the big int modular exponentiation Bn256AddGas uint64 = 32 // Gas needed for an elliptic curve addition Bn256ScalarMulGas uint64 = 2500 // Gas needed for an elliptic curve scalar multiplication Bn256PairingBaseGas uint64 = 6250 // Base price for an elliptic curve pairing check Bn256PairingPerPointGas uint64 = 5000 // Per-point price for an elliptic curve pairing check )
const ( VersionMajor = 1 // Major version component of the current release VersionMinor = 2 // Minor version component of the current release VersionPatch = 0 // Patch version component of the current release VersionMeta = "official" // Version metadata to append to the version string )
const ( // BloomBitsBlocks is the number of blocks a single bloom bit section vector // contains. BloomBitsBlocks uint64 = 4096 )
Variables ¶
var ( AnnulProfit = 1.15 AnnulBlockAmount = big.NewInt(3153600) )
block reward
var ( MainnetGenesisHash = common.HexToHash("") // Mainnet genesis hash to enforce below configs on TestnetGenesisHash = common.HexToHash("") // Testnet genesis hash 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), ByzantiumBlock: big.NewInt(4370000), FrontierBlockReward: big.NewInt(5e+18), ByzantiumBlockReward: big.NewInt(1e+18), MaxElectDelegate: big.NewInt(101), BlockInterval: big.NewInt(10), } // TestnetChainConfig contains the chain parameters to run a node on the Ropsten test network. TestnetChainConfig = &ChainConfig{ ChainId: big.NewInt(3), ByzantiumBlock: big.NewInt(1700000), FrontierBlockReward: big.NewInt(5e+18), ByzantiumBlockReward: big.NewInt(2e+18), MaxElectDelegate: big.NewInt(101), BlockInterval: big.NewInt(10), } // chainId must between 1 ~ 255 AllDacchainProtocolChanges = &ChainConfig{ ChainId: big.NewInt(60), ByzantiumBlock: big.NewInt(10000), FrontierBlockReward: big.NewInt(5e+18), ByzantiumBlockReward: big.NewInt(1e+18), MaxElectDelegate: big.NewInt(1), BlockInterval: big.NewInt(10), } TestChainConfig = &ChainConfig{ ChainId: big.NewInt(1), ByzantiumBlock: big.NewInt(0), } )
var GasTableFrontier = GasTable{
ExtcodeSize: 45,
ExtcodeCopy: 45,
Balance: 25,
SLoad: 20,
Calls: 45,
Suicide: 350,
ExpByte: 4,
CreateBySuicide: 2500,
}
GasTableFrontier contain the gas re-prices for the Frontier phase.
var MainnetBootnodes = []string{
"enode://d6120a69fc324f739780c1c15a7ece40fc04d57a0dd242f249223b065b79cdb849b486580ec591760470f2ace0424c698ce8f022229d36eb38aa2230caa3a5d3@54.249.211.177:30303",
}
MainnetBootnodes are the enode URLs of the P2P bootstrap nodes running on the main eminer-pro network.
var (
TargetGasLimit = GenesisGasLimit // The artificial target
)
var TestnetBootnodes = []string{}
TestnetBootnodes
var Version = func() string { v := fmt.Sprintf("%d.%d.%d", VersionMajor, VersionMinor, VersionPatch) if VersionMeta != "" { v += "-" + VersionMeta } return v }()
Version holds the textual version string.
Functions ¶
func VersionWithCommit ¶
Types ¶
type ChainConfig ¶
type ChainConfig struct { ChainId *big.Int `json:"chainId"` // Chain id identifies the current chain and is used for replay protection ByzantiumBlock *big.Int `json:"byzantiumBlock,omitempty"` // Byzantium switch block (nil = no fork, 0 = already on byzantium) FrontierBlockReward *big.Int // Block reward in wei for successfully produce a block ByzantiumBlockReward *big.Int // Block reward in wei for successfully produce a block upward from Byzantium MaxElectDelegate *big.Int // dpos max elect delegate number BlockInterval *big.Int }
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) 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) 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) IsByzantium ¶
func (c *ChainConfig) IsByzantium(num *big.Int) bool
func (*ChainConfig) String ¶
func (c *ChainConfig) String() string
String implements the fmt.Stringer interface.
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 GasTable ¶
type GasTable struct { ExtcodeSize uint64 ExtcodeCopy 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 }