params

package
v0.0.0-...-452a266 Latest Latest
Warning

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

Go to latest
Published: Jun 21, 2022 License: GPL-3.0 Imports: 11 Imported by: 30

Documentation

Index

Constants

View Source
const (
	POC_METHOD_DEPOSIT          = "poc_deposit"
	POC_METHOD_START            = "poc_start"
	POC_METHOD_STOP             = "poc_stop"
	POC_METHOD_WITHDRAW         = "poc_withdraw"
	POC_METHOD_WITHDRAW_SURPLUS = "poc_withdrawsurplus"
	POC_METHOD_GET_STATUS       = "poc_getall"

	Chief100Update = "SIP100Update"
)
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
	Ether    = 1e18
	Einstein = 1e21
	Douglas  = 1e42
)
View Source
const (
	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.
	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.

	BalanceGasFrontier      uint64 = 20 // The cost of a BALANCE operation
	ExtcodeSizeGasFrontier  uint64 = 20 // Cost of EXTCODESIZE before EIP 150 (Tangerine)
	ExtcodeCopyBaseFrontier uint64 = 20
	SloadGasFrontier        uint64 = 50
	CallGasFrontier         uint64 = 40  // Once per CALL operation & message call transaction.
	CallGasEIP150           uint64 = 700 // Static portion of gas for CALL-derivates after EIP 150 (Tangerine)

	BalanceGasEIP150      uint64 = 400 // The cost of a BALANCE operation after Tangerine
	ExtcodeSizeGasEIP150  uint64 = 700 // Cost of EXTCODESIZE after EIP 150 (Tangerine)
	SloadGasEIP150        uint64 = 200
	ExtcodeCopyBaseEIP150 uint64 = 700

	SstoreSentryGasEIP2200            uint64 = 2300  // Minimum gas required to be present for an SSTORE call, not consumed
	SstoreSetGasEIP2200               uint64 = 20000 // Once per SSTORE operation from clean zero to non-zero
	SstoreResetGasEIP2200             uint64 = 5000  // Once per SSTORE operation from clean non-zero to something else
	SstoreClearsScheduleRefundEIP2200 uint64 = 15000 // Once per SSTORE operation for clearing an originally existing storage slot

	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

	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.
	SelfdestructRefundGas   uint64 = 24000 // Refunded following a selfdestruct operation.
	CreateBySelfdestructGas uint64 = 25000
	SelfdestructGasEIP150   uint64 = 5000 // Cost of SELFDESTRUCT post EIP 150 (Tangerine)
	// EXP has a dynamic portion depending on the size of the exponent
	ExpByteFrontier uint64 = 10 // was set to 10 in Frontier
	ExpByteEIP158   uint64 = 50 // was raised to 50 during Eip158 (Spurious Dragon)

	SloadGasEIP2200 uint64 = 800 // Cost of SLOAD after EIP 2200 (part of Istanbul)

	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

	ExtcodeHashGasConstantinople uint64 = 400   // Cost of EXTCODEHASH (introduced in Constantinople)
	Create2Gas                   uint64 = 32000 // Once per CREATE2 operation
)
View Source
const (
	VersionMajor = 1 // Major version component of the current release
	VersionMinor = 1 // Minor version component of the current release
	VersionPatch = 0 // Patch version component of the current release
	VersionMeta  = ""
)
View Source
const (
	// BloomBitsBlocks is the number of blocks a single bloom bit section vector
	// contains.
	BloomBitsBlocks uint64 = 4096
)

Variables

View Source
var (
	MainnetGenesisHash = common.HexToHash("0xa8ab5ecb308dd061e6baa8c8a04a62b3e35fae7aae1393921f8d52deac2c5712") // enforce below configs on
	TestnetGenesisHash = common.HexToHash("0x464dfae7a2e140e76376f732c6be542880064d0a9b8350ceb2259b811827e7c6") // Testnet genesis hash to enforce below configs on
	DevnetGenesisHash  = common.HexToHash("0xe11f21ee330cfb50c3f31d9b792df2fb5e196739d562e642416974f339aa4304")
)
View Source
var (
	// MainnetChainConfig is the chain parameters to run a node on the main network.
	MainnetChainConfig = &ChainConfig{
		ChainId:        big.NewInt(20180430),
		HomesteadBlock: big.NewInt(0),
		DAOForkBlock:   nil,
		DAOForkSupport: false,
		EIP150Block:    big.NewInt(0),
		EIP150Hash:     common.Hash{},
		EIP155Block:    big.NewInt(0),
		EIP158Block:    big.NewInt(0),
		ByzantiumBlock: big.NewInt(0),

		Chief005Block:   big.NewInt(2),
		Chief005Address: common.HexToAddress("0xf0d2ad4e0d25cfea98e9640329993bbc52396abd"),

		Chief006Block:   big.NewInt(595888),
		Chief006Address: common.HexToAddress("0xba7f507d5aab3e931312512c234fbeb85cbd9dce"),

		Meshbox001Block:   big.NewInt(1870333),
		Meshbox001Address: common.HexToAddress("0xf0ced0b1ce8738eeac06fdca51e0ff398328634b"),

		Anmap001Block:   big.NewInt(2686801),
		Anmap001Address: common.HexToAddress("0x23fb7fa0f6f88ce56b70ac3d671315f5baf84bb9"),

		SIP001Block: big.NewInt(0),
		SIP002Block: big.NewInt(588888),
		SIP003Block: big.NewInt(808888),

		ChiefBaseAddress: common.HexToAddress("0xe1c749f45ee14180853e552d3349cc58972cd082"),

		PocAddress: common.HexToAddress("0xb9b4ece952c8005f009801e5ec78e116f528c1d0"),

		Chief100Block:   big.NewInt(2823366),
		Chief100Address: common.HexToAddress("0x890eb8566550e7337c7788ff971a3996860c51b5"),
		Tribe:           &TribeConfig{},

		Sip004Block: big.NewInt(8654321),
	}

	// TestnetChainConfig contains the chain parameters to run a node on the Ropsten test network.
	TestnetChainConfig = &ChainConfig{
		ChainId:        big.NewInt(2022),
		HomesteadBlock: big.NewInt(0),
		DAOForkBlock:   nil,
		DAOForkSupport: true,
		EIP150Block:    big.NewInt(0),
		EIP150Hash:     common.Hash{},
		EIP155Block:    big.NewInt(0),
		EIP158Block:    big.NewInt(0),
		ByzantiumBlock: big.NewInt(0),

		Chief002Block:   big.NewInt(2),
		Chief002Address: common.HexToAddress("0x75f7D812142c6f4BB39ad2c70424CF27869EAB33"),

		SIP001Block: big.NewInt(24),
		SIP002Block: big.NewInt(24),
		SIP003Block: big.NewInt(24),
		Sip004Block: big.NewInt(27),

		ChiefBaseAddress: common.HexToAddress("0xa44B4ff09825f8c21fc4ad7FAA125a0d6238d0fd"),

		PocAddress: common.HexToAddress("0x32bcF7d3b48A7Ceaa1b45199CB94098d0b3b3112"),

		Chief100Block:   big.NewInt(26),
		Chief100Address: common.HexToAddress("0x754FF9bDC93C66ff235b7AaaDcaeECdD63442657"),

		Tribe: &TribeConfig{},
	}

	// DevnetChainConfig contains the chain parameters to run a node on the Ropsten test network.
	DevnetChainConfig = &ChainConfig{
		ChainId:        big.NewInt(4),
		HomesteadBlock: big.NewInt(0),
		DAOForkBlock:   nil,
		DAOForkSupport: false,
		EIP150Block:    big.NewInt(0),
		EIP150Hash:     common.Hash{},
		EIP155Block:    big.NewInt(0),
		EIP158Block:    big.NewInt(0),
		ByzantiumBlock: big.NewInt(0),

		Chief007Block:   big.NewInt(3),
		Chief007Address: common.HexToAddress("0x57d2bcd8d702999daf240793919675c90b12a17a"),

		Meshbox002Block:   big.NewInt(6),
		Meshbox002Address: common.HexToAddress("0x7880adce4504fd39645aabb3efb53824d9b0c21b"),

		Anmap001Block:   big.NewInt(6),
		Anmap001Address: common.HexToAddress("0x143084accd6472ad502b59c3197f9ed5f797b966"),

		ChiefBaseAddress: common.HexToAddress("0xf096d7f8ae3cd0a85e593accac5e7bc38a756111"),

		PocAddress: common.HexToAddress("0x48e0f07faf58bc6e713d5c6373ce4f2a8b5c359a"),

		Chief100Block: big.NewInt(63),

		Chief100Address: common.HexToAddress("0x21c5dc409138205291d6a7ef2dbb1701ac02ff96"),

		SIP001Block: big.NewInt(0),
		SIP002Block: big.NewInt(1),
		SIP003Block: big.NewInt(3),

		Tribe:       &TribeConfig{Period: 3},
		Sip004Block: big.NewInt(4),
	}

	// 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{
		ChainId:        big.NewInt(1337),
		HomesteadBlock: big.NewInt(0),
		DAOForkBlock:   nil,
		DAOForkSupport: false,
		EIP150Block:    big.NewInt(0),
		EIP150Hash:     common.Hash{},
		EIP155Block:    big.NewInt(0),
		EIP158Block:    big.NewInt(0),
		ByzantiumBlock: big.NewInt(0),
		Ethash:         new(EthashConfig),
		Clique:         nil,
		Tribe:          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{
		ChainId:        big.NewInt(1337),
		HomesteadBlock: big.NewInt(0),
		DAOForkBlock:   nil,
		DAOForkSupport: false,
		EIP150Block:    big.NewInt(0),
		EIP150Hash:     common.Hash{},
		EIP155Block:    big.NewInt(0),
		EIP158Block:    big.NewInt(0),
		ByzantiumBlock: big.NewInt(0),
		Ethash:         nil,
		Clique:         &CliqueConfig{Period: 0, Epoch: 30000},
		Tribe:          nil,
	}
	TestChainConfig = &ChainConfig{
		ChainId:        big.NewInt(1),
		HomesteadBlock: big.NewInt(0),
		DAOForkBlock:   nil,
		DAOForkSupport: false,
		EIP150Block:    big.NewInt(0),
		EIP150Hash:     common.Hash{},
		EIP155Block:    big.NewInt(0),
		EIP158Block:    big.NewInt(0),
		ByzantiumBlock: big.NewInt(0),
		Ethash:         new(EthashConfig),
		Clique:         nil,
		Tribe:          nil,
	}
	TestRules = TestChainConfig.Rules(new(big.Int))
)
View Source
var (
	ChiefBaseBalance = new(big.Int).Mul(big.NewInt(1), big.NewInt(Finney))
	MboxChan         = make(chan Mbox, 32)
	StatuteService   = make(chan Mbox, 384)
	//PocService 用于poc 服务
	PocService = make(chan Mbox, 32)
	//close at tribe.init
	TribeReadyForAcceptTxs = make(chan struct{})
	InitTribe              = make(chan struct{})
	InitMeshbox            = make(chan struct{})
	InitAnmap              = make(chan struct{})
	//close at tribeService
	InitTribeStatus = make(chan struct{})
)
View Source
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,
	}

	// GasTableHomestead contain the gas re-prices for
	// the homestead phase.
	GasTableEIP150 = GasTable{
		ExtcodeSize: 700,
		ExtcodeCopy: 700,
		Balance:     400,
		SLoad:       200,
		Calls:       700,
		Suicide:     5000,
		ExpByte:     10,

		CreateBySuicide: 25000,
	}

	GasTableEIP158 = GasTable{
		ExtcodeSize: 700,
		ExtcodeCopy: 700,
		Balance:     400,
		SLoad:       200,
		Calls:       700,
		Suicide:     5000,
		ExpByte:     50,

		CreateBySuicide: 25000,
	}
)
View Source
var (
	GasLimitBoundDivisor   = big.NewInt(1024)                  // The bound divisor of the gas limit, used in update calculations.
	MinGasLimit            = big.NewInt(5000)                  // Minimum the gas limit may ever be.
	GenesisGasLimit        = big.NewInt(4712388)               // Gas limit of the Genesis block.
	TargetGasLimit         = new(big.Int).Set(GenesisGasLimit) // The artificial target
	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.
	Sip004GasLimit         = big.NewInt(40000000)              // Minimum gas limit after hardfork
)
View Source
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").

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

View Source
var DAORefundContract = common.HexToAddress("0xbf4ed7b27f1d666546e30d74d50d173d20bca754")

DAORefundContract is the address of the refund contract to send DAO balances to.

View Source
var DevnetBootnodes = []string{}
View Source
var DiscoveryV5Bootnodes = []string{}

DiscoveryV5Bootnodes are the enode URLs of the P2P bootstrap nodes for the experimental RLPx v5 topic-discovery network.

View Source
var MainnetBootnodes = []string{

	"enode://697d18773e08d2ac01c6d6b653ad4f8942bc805118cc09f41508c55e05e5043fb801df7783493e9f87be3b62a1d4da4d753f4b9bbf8921c09ebace0a165ac223@47.105.34.94:44944",

	"enode://a69b1cb395ae4d0520d8c82df448ce17daf8b4ce175a0fe892b8a7544abe55a3c3297e67ac7be5ed5d99c2d0b56e6cc3c1b4b33fc62ade55772d5d240ac0ab39@47.100.215.147:44944",

	"enode://61a5563bd1bf71e2ed7f0daed3c8e597836fcdbebe1e74f07d02c78c53700a193678dd2cff4459f2b3f41ef6e7da3980d332aa4116ba3fa6a9032d4742c4a567@47.88.171.32:44944",

	"enode://a1b98a704a7bf23ecdebdc32488c5f20a41e20446d717e04c20f42bcf479d201e5db388d669df19310977aeba39615d116cb6fc7989679d29629b4fc97cf58df@47.75.71.34:44944",

	"enode://722cc5d7c735d472d59513c7170878f0402f7297e17e616dfbaf67efae1176773242683b0aca4aef7450f49c62d9f685a2ec08382ab189fcd69790cab102954e@47.254.151.108:44944",

	"enode://1c0f7ecf9bc730e9feaa723574516358d44ace33bed337340ff3886841886cbf2df0301146162711a75d3c0e59f09f09bcafb66e4ec250340e7072d84520bb54@47.89.247.28:44944",
}
View Source
var RinkebyBootnodes = []string{}
View Source
var RinkebyV5Bootnodes = []string{}
View Source
var TestnetBootnodes = []string{
	"enode://c65553f06d82bc26fb6e6126e619f682ae59529f5506ae98269cc60de3c803bf3d8abd99ef7a64ce777f554a4f5d3be70078d319afff59015b7a9d23a5e3c3a1@123.207.146.205:44944",
}
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 AnmapBind

func AnmapBind(from, nodeid common.Address, sigHex string) (string, error)

func AnmapBindInfo

func AnmapBindInfo(addr common.Address, blockHash common.Hash) (from common.Address, nodeids []common.Address, err error)

func AnmapInfo

func AnmapInfo(num *big.Int, vsn string) (n *big.Int, addr common.Address)

func AnmapUnbind

func AnmapUnbind(from, nodeid common.Address, sigHex string) (string, error)

func CanNomination

func CanNomination(key *ecdsa.PublicKey) bool

genesis node do not can be nomination

func ChainID

func ChainID() (id *big.Int)

func Chief100GetNextRoundSigner

func Chief100GetNextRoundSigner(hash common.Hash, number *big.Int, vrf *big.Int) common.Address

依据vrf,依据上一块的状态来选取下一轮的出块地址

func DAODrainList

func DAODrainList() []common.Address

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 EqualSIP004Block

func EqualSIP004Block(num *big.Int) bool

add by liangc : 22-01-29

func GetChiefContractCode

func GetChiefContractCode(addr common.Address) ([]byte, error)

func GetIPCPath

func GetIPCPath() string

func IsBeforeChief100block

func IsBeforeChief100block(blockNumber *big.Int) bool

skip verify difficulty on this old hardfork block number

func IsChiefAddress

func IsChiefAddress(addr common.Address) (yes bool)

func IsChiefAddressOnBlock

func IsChiefAddressOnBlock(number *big.Int, addr common.Address) (yes bool)

func IsChiefCalled

func IsChiefCalled(from, to common.Address) (yes bool)

func IsChiefUpdate

func IsChiefUpdate(data []byte) bool

func IsDevnet

func IsDevnet() bool

func IsReadyAnmap

func IsReadyAnmap(num *big.Int) bool

func IsReadyMeshbox

func IsReadyMeshbox(num *big.Int) bool

func IsSIP001Block

func IsSIP001Block(num *big.Int) bool

if input num less then nr001block ,enable new role for chief.tx's gaspool

func IsSIP002Block

func IsSIP002Block(num *big.Int) bool

new_rule_002 to change block period SIP002Block must big then zero

func IsSIP003Block

func IsSIP003Block(num *big.Int) bool

add by liangc : 18-09-13 : incompatible HomesteadSigner begin at this number

func IsSIP004Block

func IsSIP004Block(num *big.Int) bool

add by liangc : 22-01-29

func IsSIP100Block

func IsSIP100Block(num *big.Int) bool

add by liangc : 19-05-31 : for smc-1.0.0 may be discard

func IsTestnet

func IsTestnet() bool

func MeshboxExistAddress

func MeshboxExistAddress(addr common.Address) bool

func MeshboxInfo

func MeshboxInfo(num *big.Int, vsn string) (n *big.Int, addr common.Address)

func MeshboxVsn

func MeshboxVsn(num *big.Int) (string, error)

func POCInfo

func POCInfo() (addr common.Address)

POCInfo: poc地址

func PocDeposit

func PocDeposit(from common.Address, sigHex string) (string, error)

PocDeposit poc质押操作

func PocStart

func PocStart(from, nodeID common.Address) (string, error)

PocStart 因为错过出块被拉黑以后,在一个epoch之后需要手工恢复出块资格

func PocStop

func PocStop(from, nodeID common.Address) (string, error)

PocStop 因为不想参与挖矿,准备撤回抵押

func PocWithdraw

func PocWithdraw(from, nodeID common.Address) (string, error)

PocWithdraw 在停止PocStop两周后,可以从poc合约中撤回押金到自己账户

func PocWithdrawSurplus

func PocWithdrawSurplus(from, nodeID common.Address) (string, error)

PocWithdrawSurplus 因为手工调用Poc Withdraw合约,一次性抵押过多,后续可以选择撤回多余的抵押

func SendToMsgBox

func SendToMsgBox(method string) chan MBoxSuccess

func SendToMsgBoxForFilterVolunteer

func SendToMsgBoxForFilterVolunteer(hash common.Hash, number *big.Int, addr common.Address) chan MBoxSuccess

func SendToMsgBoxWithHash

func SendToMsgBoxWithHash(method string, hash common.Hash, number *big.Int) chan MBoxSuccess

called by chief.GetStatus

func SetChiefContractCode

func SetChiefContractCode(addr common.Address, code []byte)

func TribePeriod

func TribePeriod() uint64

func VerifyMiner

func VerifyMiner(parenthash common.Hash, addr common.Address, vrfn []byte) bool

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

	HomesteadBlock *big.Int `json:"homesteadBlock,omitempty"` // Homestead switch block (nil = no fork, 0 = already homestead)

	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

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

	EIP155Block *big.Int `json:"eip155Block,omitempty"` // EIP155 HF block
	EIP158Block *big.Int `json:"eip158Block,omitempty"` // EIP158 HF block

	ByzantiumBlock *big.Int `json:"byzantiumBlock,omitempty"` // Byzantium switch block (nil = no fork, 0 = already on byzantium)

	// Various consensus engines
	Ethash *EthashConfig `json:"ethash,omitempty"`
	Clique *CliqueConfig `json:"clique,omitempty"`
	Tribe  *TribeConfig  `json:"tribe,omitempty"` // add by liangc

	// >>> add by liangc : set chief start number >>>
	// chief.sol vsn 0.0.2
	Chief002Block   *big.Int       `json:"chief002Block,omitempty"`
	Chief002Address common.Address `json:"chief002Address,omitempty"`
	// chief.sol vsn 0.0.3
	Chief003Block   *big.Int       `json:"chief003Block,omitempty"`
	Chief003Address common.Address `json:"chief003Address,omitempty"`
	// chief.sol vsn 0.0.4
	Chief004Block   *big.Int       `json:"chief004Block,omitempty"`
	Chief004Address common.Address `json:"chief004Address,omitempty"`
	// chief.sol vsn 0.0.5
	Chief005Block   *big.Int       `json:"chief005Block,omitempty"`
	Chief005Address common.Address `json:"chief005Address,omitempty"`
	// chief.sol vsn 0.0.6
	Chief006Block   *big.Int       `json:"chief006Block,omitempty"`
	Chief006Address common.Address `json:"chief006Address,omitempty"`

	// extends 0.0.6 only for dev and test
	Chief007Block   *big.Int       `json:"chief007Block,omitempty"`
	Chief007Address common.Address `json:"chief007Address,omitempty"`
	// https://github.com/SmartMeshFoundation/Spectrum/wiki/%5BChinese%5D-v1.0.0-Standard
	Chief100Block   *big.Int       `json:"chief100Block,omitempty"`
	Chief100Address common.Address `json:"chief100Address,omitempty"`

	ChiefBaseAddress common.Address `json:"chiefBaseAddress,omitempty"`

	//PocBlock   *big.Int       `json:"PocBlock,omitempty"`
	PocAddress common.Address `json:"PocAddress,omitempty"`

	// <<< add by liangc : set chief start number <<<
	// add by liangc : new rules for chief.tx of gaspool
	SIP001Block *big.Int `json:"sip001Block,omitempty"` // SIP001 HF block
	// add by liangc : new rules for block period
	SIP002Block *big.Int `json:"sip002Block,omitempty"` // SIP002 HF block
	// add by liangc : 18-09-13 : incompatible HomesteadSigner begin at this number
	SIP003Block *big.Int `json:"sip003Block,omitempty"`

	Meshbox001Block   *big.Int       `json:"meshbox001Block,omitempty"`
	Meshbox001Address common.Address `json:"meshbox001Address,omitempty"`
	// Note that : meshbox002 must is superset of meshbox001
	Meshbox002Block   *big.Int       `json:"meshbox002Block,omitempty"`
	Meshbox002Address common.Address `json:"meshbox002Address,omitempty"`

	Anmap001Block   *big.Int       `json:"anmap001Block,omitempty"`
	Anmap001Address common.Address `json:"anmap001Address,omitempty"`

	Sip004Block *big.Int `json:"sip004Block,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) IsByzantium

func (c *ChainConfig) IsByzantium(num *big.Int) bool

func (*ChainConfig) IsDAOFork

func (c *ChainConfig) IsDAOFork(num *big.Int) bool

IsDAO returns whether num is either equal to the DAO fork block or greater.

func (*ChainConfig) IsEIP150

func (c *ChainConfig) IsEIP150(num *big.Int) bool

func (*ChainConfig) IsEIP155

func (c *ChainConfig) IsEIP155(num *big.Int) bool

func (*ChainConfig) IsEIP158

func (c *ChainConfig) IsEIP158(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) IsSip004

func (c *ChainConfig) IsSip004(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 ChiefInfo

type ChiefInfo struct {
	StartNumber, PocStartNumber *big.Int // 0 is nil
	Version                     string
	Addr, PocAddr, BaseAddr     common.Address
}

func GetChiefInfo

func GetChiefInfo(blockNumber *big.Int) *ChiefInfo

func GetChiefInfoByVsn

func GetChiefInfoByVsn(vsn string) *ChiefInfo

func (*ChiefInfo) String

func (self *ChiefInfo) String() string

type ChiefInfoList

type ChiefInfoList []*ChiefInfo

func (ChiefInfoList) Len

func (p ChiefInfoList) Len() int

func (ChiefInfoList) Less

func (p ChiefInfoList) Less(i, j int) bool

func (ChiefInfoList) Swap

func (p ChiefInfoList) Swap(i, j int)

type ChiefStatus

type ChiefStatus struct {
	LeaderList     []common.Address
	VolunteerList  []common.Address
	SignerList     []common.Address
	BlackList      []common.Address // append by vsn 0.0.3
	ScoreList      []*big.Int
	NumberList     []*big.Int
	Number         *big.Int
	Epoch          *big.Int
	LeaderLimit    *big.Int
	SignerLimit    *big.Int
	VolunteerLimit *big.Int
	TotalVolunteer *big.Int
}

clone from chief.getStatus return struct for return to tribe by channel

func TribeGetStatus

func TribeGetStatus(num *big.Int, hash common.Hash) (ChiefStatus, error)

type ChiefVolunteers

type ChiefVolunteers struct {
	VolunteerList []common.Address
	WeightList    []*big.Int
	Length        *big.Int
}

clone from chief.getVolunteers return struct for return to tribe by channel append by vsn 0.0.6

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
	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 MBoxSuccess

type MBoxSuccess struct {
	Success bool
	Entity  interface{}
}

type Mbox

type Mbox struct {
	Method string
	Rtn    chan MBoxSuccess
	Params map[string]interface{}
}

chief service message box obj

type PocStatus

type PocStatus struct {
	MinerList       []common.Address
	AmountList      []*big.Int
	BlockList       []*big.Int
	OwnerList       []common.Address
	BlackStatusList []*big.Int
}

PocStatus Poc状态

func PocGetAll

func PocGetAll(hash common.Hash, number *big.Int) (ps *PocStatus, err error)

PocGetAll 获取poc status

type Rules

type Rules struct {
	ChainId                                   *big.Int
	IsHomestead, IsEIP150, IsEIP155, IsEIP158 bool
	IsByzantium                               bool
	IsSip004                                  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.

type TribeConfig

type TribeConfig struct {
	Period uint64 `json:"period"` // Number of seconds between blocks to enforce
}

TribeConfig is the consensus engine configs.

func (*TribeConfig) String

func (c *TribeConfig) String() string

String implements the stringer interface, returning the consensus engine details.

Jump to

Keyboard shortcuts

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