params

package
v0.0.0-...-d85cb20 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 26, 2024 License: GPL-3.0 Imports: 3 Imported by: 13

Documentation

Index

Constants

View Source
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
)
View Source
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 aoa
	TxGasAgentCreationOld         = "5000000000000000000000000" // change to 5000000 aoa
	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
)
View Source
const (
	VersionMajor = 1          // Major version component of the current release
	VersionMinor = 0          // 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
)
View Source
const (
	// BloomBitsBlocks is the number of blocks a single bloom bit section vector
	// contains.
	BloomBitsBlocks uint64 = 4096
)

Variables

View Source
var (
	AnnulProfit      = 1.10
	AnnulBlockAmount = big.NewInt(3153600)
)

block reward

View Source
var (
	MainnetGenesisHash = common.HexToHash("") // Mainnet genesis hash to enforce below configs on
	TestnetGenesisHash = common.HexToHash("") // Testnet genesis hash to enforce below configs on
)
View Source
var (
	// MainnetChainConfig is the chain parameters to run a node on the main network.
	MainnetChainConfig = &ChainConfig{
		ChainId:              big.NewInt(2),
		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),
	}
)
View Source
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.

View Source
var MainnetBootnodes = []string{
	"enode://9ecce36d18f04efc4a092e9c3afcd49219e3f28cf5ce226a42f3ef0556f820541af3ed51b02fa9e0fad041efa3eeb8a90a00abfcaf80ec5eb7564bd15fec643e@40.83.72.70:30303",
}

MainnetBootnodes are the enode URLs of the P2P bootstrap nodes running on the main eminer-pro network.

View Source
var (
	TargetGasLimit = GenesisGasLimit // The artificial target
)
View Source
var TestnetBootnodes = []string{}

TestnetBootnodes

View Source
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

func VersionWithCommit(gitCommit string) string

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) Rules

func (c *ChainConfig) Rules(num *big.Int) Rules

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
}

type Rules

type Rules struct {
	ChainId     *big.Int
	IsByzantium bool
}

Rules wraps ChainConfig and is merely syntatic 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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL