Documentation
¶
Index ¶
Constants ¶
const ( Wei = 1 Ada = 1e3 Babbage = 1e6 Shannon = 1e9 Szabo = 1e12 Finney = 1e15 Ircer = 1e18 Einstein = 1e21 Douglas = 1e42 )
These are the multipliers for irchain denominations. Example: To get the wei value of an amount in 'douglas', use
new(big.Int).Mul(value, big.NewInt(params.Douglas))
const ( GasLimitBoundDivisor uint64 = 1024 // The bound divisor of the gas limit, used in update calculations. QuadCoeffDiv uint64 = 512 // Divisor for the quadratic particle of the memory cost equation. 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. SstoreSetGas uint64 = 20000 // Once per SLOAD operation. 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. 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. JumpdestGas uint64 = 1 // Refunded gas, once per SSTORE operation if the zeroness changes to zero. 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. 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 // Precompiled contract gas prices 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 = 11 // Patch version component of the current release VersionMeta = "unstable" // 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 ( MainnetGenesisHash = common.HexToHash("0xf29c3da3e1710517cbb3a555ab20981ec2c9abacbbcb914ab91e8c23edfbf4d0") TestnetGenesisHash = common.HexToHash("0x389d168191585e7a14b01a654c02058053abf3ca3d167efb69a51dec86d9cfbc") )
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), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: nil, Irchash: new(IrchashConfig), } // TestnetChainConfig contains the chain parameters to run a node on the Ropsten test network. TestnetChainConfig = &ChainConfig{ ChainID: big.NewInt(3), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: nil, Irchash: new(IrchashConfig), } // RinkebyChainConfig contains the chain parameters to run a node on the Rinkeby test network. RinkebyChainConfig = &ChainConfig{ ChainID: big.NewInt(4), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: nil, Clique: &CliqueConfig{ Period: 15, Epoch: 30000, }, } // AllIrchashProtocolChanges contains every protocol change (EIPs) introduced // and accepted by the IrChain core developers into the Irchash consensus. // // This configuration is intentionally not using keyed fields to force anyone // adding flags to the config to also have to set these fields. AllIrchashProtocolChanges = &ChainConfig{ ChainID: big.NewInt(1337), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: nil, Irchash: new(IrchashConfig), Clique: nil, } // AllCliqueProtocolChanges contains every protocol change (EIPs) introduced // and accepted by the IrChain 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{ ChainID: big.NewInt(1337), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: nil, Irchash: nil, Clique: &CliqueConfig{ Period: 0, Epoch: 30000, }, } TestChainConfig = &ChainConfig{ ChainID: big.NewInt(1), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: nil, Irchash: new(IrchashConfig), Clique: nil, } )
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, } // GasTableEIP158 contain the gas re-prices for // the EIP15* phase. GasTableEIP158 = GasTable{ ExtcodeSize: 700, ExtcodeCopy: 700, 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(5) // The decision boundary on the blocktime duration used to determine whether difficulty should go up or not. )
var DiscoveryV5Bootnodes []string
DiscoveryV5Bootnodes are the hnode URLs of the P2P bootstrap nodes for the experimental RLPx v5 topic-discovery network.
var MainnetBootnodes = []string{
"hnode://07fcc60a717613f1502e1925d0e1c74d8532917b1b26159e2aa294dd1f12b9863bcbbf6e6ae64681f8f6d228223b87a14ed1032411b6fa6214828a332aaadf31@72.11.140.162:50505",
"hnode://149e66442d2d9bb1f07479513778dd6e9a9cd90f89e0297863aff3ad1c9a8c91ce4f45476b38c428712bdd7c891c7515650073baf47d99041676f655af0293d1@47.94.56.101:50505",
"hnode://47f572691118b98904959cb20321c9df26c1ab70d5507aad40edc58b94095c15c3d2057519750f4b32e3963ebff2c82e0cbe9e1383ebb157b01915722cd084bc@193.112.32.158:50505",
"hnode://890be21099778151f3130c69dc676b70125fc8ec109a852177fd85ef68aa701dc395baa3d07caa9b370e4bc950228721e140d0b8878c7ef10be3fd427562299c@218.253.193.226:50505",
"hnode://bbcd7ae3055e43ebe3848a011bf59b5911391e96efdd8bebc431c267ff381b131d686a06b0d05b44cd2ef2dd00e405850438afe9c4586d8e576fb93cfc3b495a@59.111.94.209:50505",
"hnode://dd50fbb46efab23487d4eb7fea4e7d6e14ac8a6daabbae0a82446f88a5d1d9aade7f0a8b90eaccc343cb8f9386bf90020c724d854a6d61da4fa0fbcb7167a157@111.230.27.226:50505",
"hnode://df6f3688406de2e6b43106ec011a01d8e85f7d25afdb8fd3d213bee9ff99ed8790fc410b72b03100772d98f11bc126f29e39e05b6d08626817be48cce3b517b9@112.74.96.198:50505",
}
MainnetBootnodes are the hnode URLs of the P2P bootstrap nodes running on the main IrChain network.
var RinkebyBootnodes []string
RinkebyBootnodes are the hnode URLs of the P2P bootstrap nodes running on the Rinkeby test network.
var (
TargetGasLimit = GenesisGasLimit // The artificial target
)
var TestnetBootnodes = []string{
"hnode://0aaab2e176b97fdd7900c963a0cbe7a6497bcefca8ce82ff4535132be6114b868577093db600957fbccacdf05267f227017a2abeddefc825d5282cb0350d3ab8@112.74.96.198:40404",
}
TestnetBootnodes are the hnode URLs of the P2P bootstrap nodes running on the Ropsten test network.
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"` // chainId 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)
ConstantinopleBlock *big.Int `json:"constantinopleBlock,omitempty"` // Constantinople switch block (nil = no fork, 0 = already activated )
// Various consensus engines
Irchash *IrchashConfig `json:"irchash,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) 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 (homestead or homestead reprice).
The returned GasTable's fields shouldn't, under any circumstances, be changed.
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 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
}
GasTable organizes gas prices for different ethereum phases.
type IrchashConfig ¶
type IrchashConfig struct{}
IrchashConfig is the consensus engine configs for proof-of-work based sealing.
func (*IrchashConfig) String ¶
func (c *IrchashConfig) String() string
String implements the stringer interface, returning the consensus engine details.