Documentation
¶
Index ¶
- Constants
- Variables
- func AdditionalCycleTime() uint64
- func ArchiveVersion(gitCommit string) string
- func BlocksWillCreate() uint64
- func CDFAccount() common.Address
- func CDFBalance() *big.Int
- func CalcP(totalWeight float64, sqrtWeight float64) float64
- func CalcPV110(sqrtWeight float64) float64
- func CancelProposal_SupportRate() uint64
- func CancelProposal_VoteRate() uint64
- func CheckDuplicateSignReportReward(fraction int) error
- func CheckEconomicModel(version uint32) error
- func CheckIncreaseIssuanceRatio(increaseIssuanceRatio uint16) error
- func CheckMaxEvidenceAge(age, unStakeFreezeDuration int) error
- func CheckMaxValidators(num int) error
- func CheckMinimumRelease(minimumRelease *big.Int) error
- func CheckOperatingThreshold(threshold *big.Int) error
- func CheckRewardPerChangeInterval(rewardPerChangeInterval uint16) error
- func CheckRewardPerMaxChangeRange(rewardPerMaxChangeRange uint16) error
- func CheckSlashBlocksReward(rewards int) error
- func CheckSlashFractionDuplicateSign(fraction int) error
- func CheckStakeThreshold(threshold *big.Int) error
- func CheckUnDelegateFreezeDuration(UnDelegateFreezeDuration, UnStakeFreezeDuration int) error
- func CheckUnStakeFreezeDuration(duration, maxEvidenceAge, zeroProduceFreezeDuration int) error
- func CheckZeroProduceCumulativeTime(zeroProduceCumulativeTime uint16, zeroProduceNumberThreshold uint16) error
- func CheckZeroProduceFreezeDuration(zeroProduceFreezeDuration uint64, unStakeFreezeDuration uint64) error
- func CheckZeroProduceNumberThreshold(zeroProduceCumulativeTime uint16, zeroProduceNumberThreshold uint16) error
- func CodeVersion() uint32
- func ConsensusSize() uint64
- func DuplicateSignReportReward() uint32
- func EcParams130() ([]byte, error)
- func EconomicString() string
- func ElectionDistance() uint64
- func EpochSize() uint64
- func FormatVersion(version uint32) string
- func HesitateRatio() uint64
- func IncreaseIssuanceRatio() uint16
- func Interval() uint64
- func KnownDNSNetwork(genesis common.Hash, protocol string) string
- func LtMinorVersion(version uint32) bool
- func MaxConsensusVals() uint64
- func MaxEpochMinutes() uint64
- func MaxEvidenceAge() uint32
- func MaxValidators() uint64
- func NewBlockRewardRate() uint64
- func OperatingThreshold() *big.Int
- func ParamProposalVote_DurationSeconds() uint64
- func ParamProposal_SupportRate() uint64
- func ParamProposal_VoteRate() uint64
- func PlatONFoundationYear() uint32
- func PlatONFundAccount() common.Address
- func PlatONFundBalance() *big.Int
- func ResetEconomicDefaultConfig(newEc *EconomicModel)
- func ResetEconomicExtendConfig(newEc *EconomicModelExtend)
- func ResetEconomicExtendConfigUnDelegateFreezeDuration(UnDelegateFreezeDuration uint64)
- func RestrictingMinimumRelease() *big.Int
- func RewardPerChangeInterval() uint16
- func RewardPerMaxChangeRange() uint16
- func SetNodeBlockTimeWindow(period uint64)
- func SetPerRoundBlocks(amount uint64)
- func ShiftValidatorNum() uint64
- func SlashBlocksReward() uint32
- func SlashFractionDuplicateSign() uint32
- func StakeThreshold() *big.Int
- func TextProposalVote_DurationSeconds() uint64
- func TextProposal_SupportRate() uint64
- func TextProposal_VoteRate() uint64
- func TheNumberOfDelegationsReward() uint16
- func UnDelegateFreezeDuration() uint64
- func UnStakeFreezeDuration() uint64
- func VersionProposalVote_DurationSeconds() uint64
- func VersionProposal_SupportRate() uint64
- func VersionWithCommit(gitCommit, gitDate string) string
- func ZeroProduceCumulativeTime() uint16
- func ZeroProduceFreezeDuration() uint64
- func ZeroProduceNumberThreshold() uint16
- type CbftConfig
- type CbftNode
- type ChainConfig
- func (c *ChainConfig) BaseFeeChangeDenominator() uint64
- func (c *ChainConfig) CheckCompatible(newcfg *ChainConfig, height uint64) *ConfigCompatError
- func (c *ChainConfig) CheckConfigForkOrder() error
- func (c *ChainConfig) ElasticityMultiplier() uint64
- func (c *ChainConfig) GasTable(num *big.Int) GasTable
- func (c *ChainConfig) GetDiracBlock() *big.Int
- func (c *ChainConfig) GetPauliBlock() *big.Int
- func (c *ChainConfig) IsCopernicus(num *big.Int) bool
- func (c *ChainConfig) IsEIP155(num *big.Int) bool
- func (c *ChainConfig) IsEWASM(num *big.Int) bool
- func (c *ChainConfig) IsEinstein(num *big.Int) bool
- func (c *ChainConfig) IsHubble(num *big.Int) bool
- func (c *ChainConfig) IsNewton(num *big.Int) bool
- func (c *ChainConfig) IsPauli(num *big.Int) bool
- func (c *ChainConfig) Rules(num *big.Int) Rules
- func (c *ChainConfig) SetDiracBlock(block *big.Int)
- func (c *ChainConfig) SetPauliBlock(block *big.Int)
- func (c *ChainConfig) String() string
- func (c *ChainConfig) Test() bool
- type CommonConfig
- type ConfigCompatError
- type EconomicModel
- type EconomicModelExtend
- type GasTable
- type GovernanceConfig
- type InnerAccount
- type ProgramVersion
- type RestrictingConfig
- type RewardConfig
- type Rules
- type SlashingConfig
- type StakingConfig
- type StakingConfigExtend
- type TrustedCheckpoint
Constants ¶
const ( Von = 1 GVon = 1e9 LAT = 1e18 )
These are the multipliers for ether denominations. Example: To get the von value of an amount in 'gvon', use
new(big.Int).Mul(value, big.NewInt(params.GVon))
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 // CHTFrequency is the block frequency for creating CHTs CHTFrequency = 32768 // 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 // CheckpointFrequency is the block frequency for creating checkpoint CheckpointFrequency = 32768 // CheckpointProcessConfirmations is the number before a checkpoint is generated CheckpointProcessConfirmations = 256 // FullImmutabilityThreshold is the number of blocks after which a chain segment is // considered immutable (i.e. soft finality). It is used by the downloader as a // hard limit against deep ancestors, by the blockchain against deep reorgs, by // the freezer as the cutoff threshold and by clique as the snapshot trust limit. FullImmutabilityThreshold = 90000 // PlatON is instantly immutability // LightImmutabilityThreshold is the number of blocks after which a header chain // segment is considered immutable for light client(i.e. soft finality). It is used by // the downloader as a hard limit against deep ancestors, by the blockchain against deep // reorgs, by the light pruner as the pruning validity guarantee. LightImmutabilityThreshold = 30000 )
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 * 2 // Gas limit of the Genesis block. DefaultMinerGasCeil uint64 = 21000 * 8000 * 1.2 // 201600000 MaxGasCeil uint64 = 300000000 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. // todo: pre value: 53000 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. TxDataZeroWasmDeployGas uint64 = 1 // Per byte of data attached to a transaction that equals zero for wasm deploying. 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. Keccak256Gas uint64 = 30 // Once per KECCAK256 operation. Keccak256WordGas uint64 = 6 // Once per word of the KECCAK256 operation's data. InitCodeWordGas uint64 = 2 // Once per word of the init code when creating a contract. 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 SstoreSentryGasEIP2200 uint64 = 2300 // Minimum gas required to be present for an SSTORE call, not consumed SstoreNoopGasEIP2200 uint64 = 800 // Once per SSTORE operation if the value doesn't change. SstoreDirtyGasEIP2200 uint64 = 800 // Once per SSTORE operation if a dirty value is changed. SstoreInitGasEIP2200 uint64 = 20000 // Once per SSTORE operation from clean zero to non-zero SstoreInitRefundEIP2200 uint64 = 19200 // Once per SSTORE operation for resetting to the original zero value SstoreCleanGasEIP2200 uint64 = 5000 // Once per SSTORE operation from clean non-zero to something else SstoreCleanRefundEIP2200 uint64 = 4200 // Once per SSTORE operation for resetting to the original non-zero value SstoreClearRefundEIP2200 uint64 = 15000 // Once per SSTORE operation for clearing an originally existing storage slot 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 ColdAccountAccessCostEIP2929 = uint64(2600) // COLD_ACCOUNT_ACCESS_COST ColdSloadCostEIP2929 = uint64(2100) // COLD_SLOAD_COST WarmStorageReadCostEIP2929 = uint64(100) // WARM_STORAGE_READ_COST // In EIP-2200: SstoreResetGas was 5000. // In EIP-2929: SstoreResetGas was changed to '5000 - COLD_SLOAD_COST'. // In EIP-3529: SSTORE_CLEARS_SCHEDULE is defined as SSTORE_RESET_GAS + ACCESS_LIST_STORAGE_KEY_COST // Which becomes: 5000 - 2100 + 1900 = 4800 SstoreClearsScheduleRefundEIP3529 = SstoreResetGasEIP2200 - ColdSloadCostEIP2929 + TxAccessListStorageKeyGas JumpdestGas uint64 = 1 // Once per JUMPDEST operation. EpochDuration uint64 = 30000 // Duration between proof-of-work epochs. CreateDataGas uint64 = 200 // CreateWasmDataGas uint64 = 4 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. SelfdestructRefundGas uint64 = 24000 // Refunded following a selfdestruct 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 = 16 // Per byte of non zero data attached to a transaction after EIP 2028 (part in Istanbul) TxDataNonZeroWasmDeployGas uint64 = 4 // Per byte of data attached to a transaction that is not equal to zero for wasm deploying. NOTE: Not payable on data of calls between transactions. TxDataNonZeroGasEIP2028 uint64 = 16 // Per byte of non zero data attached to a transaction after EIP 2028 (part in Istanbul) TxAccessListAddressGas uint64 = 2400 // Per address specified in EIP 2930 access list TxAccessListStorageKeyGas uint64 = 1900 // Per storage key specified in EIP 2930 access list // These have been changed during the course of the chain CallGasFrontier uint64 = 40 // Once per CALL operation & message call transaction. CallGasEIP150 uint64 = 700 // Static portion of gas for CALL-derivates after EIP 150 (Tangerine) BalanceGasFrontier uint64 = 20 // The cost of a BALANCE operation BalanceGasEIP150 uint64 = 400 // The cost of a BALANCE operation after Tangerine BalanceGasEIP1884 uint64 = 700 // The cost of a BALANCE operation after EIP 1884 (part of Istanbul) ExtcodeSizeGasFrontier uint64 = 20 // Cost of EXTCODESIZE before EIP 150 (Tangerine) ExtcodeSizeGasEIP150 uint64 = 700 // Cost of EXTCODESIZE after EIP 150 (Tangerine) SloadGasFrontier uint64 = 50 SloadGasEIP150 uint64 = 200 SloadGasEIP2200 uint64 = 800 // Cost of SLOAD after EIP 2200 (part of Istanbul) ExtcodeHashGasConstantinople uint64 = 400 // Cost of EXTCODEHASH (introduced in Constantinople) ExtcodeHashGasEIP1884 uint64 = 700 // Cost of EXTCODEHASH after EIP 1884 (part in Istanbul) 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) // Extcodecopy has a dynamic AND a static cost. This represents only the // static portion of the gas. It was changed during EIP 150 (Tangerine) ExtcodeCopyBaseFrontier uint64 = 20 ExtcodeCopyBaseEIP150 uint64 = 700 // CreateBySelfdestructGas is used when the refunded account is one that does // not exist. This logic is similar to call. // Introduced in Tangerine Whistle (Eip 150) CreateBySelfdestructGas uint64 = 25000 DefaultBaseFeeChangeDenominator = 8 // Bounds the amount the base fee can change between blocks. DefaultElasticityMultiplier = 2 // Bounds the maximum gas limit an EIP-1559 block may have. InitialBaseFee = 0 // Initial base fee for EIP-1559 blocks. MaxCodeSize = 524288 // Maximum bytecode to permit for a contract MaxInitCodeSize = 2 * MaxCodeSize // Maximum initcode to permit in a creation transaction and create instructions // 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 Bn256AddGas uint64 = 150 // Gas needed for an elliptic curve addition Bn256ScalarMulGas uint64 = 6000 // Gas needed for an elliptic curve scalar multiplication Bn256PairingBaseGas uint64 = 45000 // Base price for an elliptic curve pairing check Bn256PairingPerPointGas uint64 = 34000 // Per-point price for an elliptic curve pairing check Bls12381G1AddGas uint64 = 600 // Price for BLS12-381 elliptic curve G1 point addition Bls12381G1MulGas uint64 = 12000 // Price for BLS12-381 elliptic curve G1 point scalar multiplication Bls12381G2AddGas uint64 = 4500 // Price for BLS12-381 elliptic curve G2 point addition Bls12381G2MulGas uint64 = 55000 // Price for BLS12-381 elliptic curve G2 point scalar multiplication Bls12381PairingBaseGas uint64 = 115000 // Base gas price for BLS12-381 elliptic curve pairing check Bls12381PairingPerPairGas uint64 = 23000 // Per-point pair gas price for BLS12-381 elliptic curve pairing check Bls12381MapG1Gas uint64 = 5500 // Gas price for BLS12-381 mapping field element to G1 operation Bls12381MapG2Gas uint64 = 110000 // Gas price for BLS12-381 mapping field element to G2 operation BlsVerifyGas uint64 = 21000 // Gas price for BLS12-381 mapping field element to G2 operation // The Refund Quotient is the cap on how much of the used gas can be refunded. Before EIP-3529, // up to half the consumed gas could be refunded. Redefined as 1/5th in EIP-3529 RefundQuotient uint64 = 2 RefundQuotientEIP3529 uint64 = 5 // PlatONPrecompiled contract gas StakingGas uint64 = 6000 // Gas needed for precompiled contract: stakingContract CreateStakeGas uint64 = 32000 // Gas needed for createStaking EditCandidateGas uint64 = 12000 // Gas needed for editCandidate IncStakeGas uint64 = 20000 // Gas needed for increaseStaking WithdrewStakeGas uint64 = 20000 // Gas needed for withdrewStaking DelegateGas uint64 = 16000 // Gas needed for delegate WithdrewDelegationGas uint64 = 8000 // Gas needed for withdrewDelegate RedeemDelegationGas uint64 = 6000 // Gas needed for RedeemDelegation GovGas uint64 = 9000 // Gas needed for precompiled contract: govContract SubmitTextProposalGas uint64 = 320000 // Gas needed for submitText SubmitVersionProposalGas uint64 = 450000 // Gas needed for submitVersion SubmitCancelProposalGas uint64 = 500000 // Gas needed for submitCancel SubmitParamProposalGas uint64 = 500000 // Gas needed for submitParam VoteGas uint64 = 2000 // Gas needed for vote DeclareVersionGas uint64 = 3000 // Gas needed for declareVersion SlashingGas uint64 = 21000 // Gas needed for precompiled contract: slashingContract ReportDuplicateSignGas uint64 = 21000 // Gas needed for reportDuplicateSign DuplicateEvidencesGas uint64 = 21000 // When reporting, each duplicate sign of evidence requires gas to be consumed RestrictingPlanGas uint64 = 18000 // Gas needed for precompiled contract: restrictingPlanContract CreateRestrictingPlanGas uint64 = 8000 // Gas needed for createRestrictingPlan ReleasePlanGas uint64 = 21000 // Gas consumed every time the von of the restrictPlan is released DelegateRewardGas uint64 = 3000 // Gas needed for delegate reward WithdrawDelegateRewardGas uint64 = 8000 // Gas needed for withdraw delegate reward WithdrawDelegateNodeGas uint64 = 1000 // Gas needed for withdraw delegate reward Node Count WithdrawDelegateEpochGas uint64 = 100 // Gas needed for withdraw delegate reward epoch Count )
const ( //These versions are meaning the current code version. VersionMajor = 1 // Major version component of the current release VersionMinor = 5 // Minor version component of the current release VersionPatch = 1 // Patch version component of the current release VersionMeta = "unstable" // Version metadata to append to the version string //CAUTION: DO NOT MODIFY THIS ONCE THE CHAIN HAS BEEN INITIALIZED!!! //nolint:staticcheck GenesisVersion = uint32(1<<16 | 0<<8 | 0) )
const ( FORKVERSION_0_11_0 = uint32(0<<16 | 11<<8 | 0) FORKVERSION_1_1_0 = uint32(1<<16 | 1<<8 | 0) FORKVERSION_1_2_0 = uint32(1<<16 | 2<<8 | 0) FORKVERSION_1_3_0 = uint32(1<<16 | 3<<8 | 0) FORKVERSION_1_4_0 = uint32(1<<16 | 4<<8 | 0) FORKVERSION_1_5_0 = uint32(1<<16 | 5<<8 | 0) FORKVERSION_1_6_0 = uint32(1<<16 | 6<<8 | 0) )
const ( DefualtRule = iota StakingRule SlashingRule RestrictingRule RewardRule GovernanceRule CollectDeclareVersionRule )
plugin rule key
const ( Zero = 0 Eighty = 80 Hundred = 100 TenThousand = 10000 CeilBlocksReward = 50000 CeilMaxValidators = 10000 FloorMaxConsensusVals = 4 CeilMaxConsensusVals = 43 PositiveInfinity = "+∞" CeilUnStakeFreezeDuration = 168 * 2 CeilMaxEvidenceAge = CeilUnStakeFreezeDuration - 1 // The maximum time range for the cumulative number of zero blocks (No more than 64) MaxZeroProduceCumulativeTime uint16 = 50 RewardPerMaxChangeRangeUpperLimit = 2000 RewardPerMaxChangeRangeLowerLimit = 1 RewardPerChangeIntervalUpperLimit = 28 RewardPerChangeIntervalLowerLimit = 2 IncreaseIssuanceRatioUpperLimit = 2000 IncreaseIssuanceRatioLowerLimit = 0 // When electing consensus nodes, it is used to calculate the P value of the binomial distribution ElectionBase = 30 ElectionBasePIP3 = 43 MainNetECHash = "0x259176769541cdb61bc19806cbf5a3f3489f4829b6b69f804f45f947a0c9c3e9" MaxValidatorsForVersion150 = 225 )
const ( DefaultMainNet = iota // PlatON default main net flag DefaultTestNet // PlatON default test net flag DefaultUnitTestNet // PlatON default unit test )
Variables ¶
var ( MainnetGenesisHash = common.HexToHash("0xbd3e148a58392bc546aee5e69aa751c8e572e2cd2c82d06d9418a686b82252b9") TestnetGenesisHash = common.HexToHash("0x47c7f3dea852b28c45d5fee6c950321486780065745179c7a296934e493f18e1") )
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(100), PIP7ChainID: big.NewInt(210425), AddressHRP: "lat", EmptyBlock: "on", EIP155Block: big.NewInt(1), CopernicusBlock: big.NewInt(10304521), NewtonBlock: big.NewInt(28770011), EinsteinBlock: big.NewInt(45531841), HubbleBlock: big.NewInt(58421521), Cbft: &CbftConfig{ InitialNodes: ConvertNodeUrl(initialMainNetConsensusNodes), Amount: 10, ValidatorMode: "ppos", Period: 20000, }, GenesisVersion: GenesisVersion, } // MainnetTrustedCheckpoint contains the light client trusted checkpoint for the main network. MainnetTrustedCheckpoint = &TrustedCheckpoint{ Name: "mainnet", SectionIndex: 193, SectionHead: common.HexToHash("0xc2d574295ecedc4d58530ae24c31a5a98be7d2b3327fba0dd0f4ed3913828a55"), CHTRoot: common.HexToHash("0x5d1027dfae688c77376e842679ceada87fd94738feb9b32ef165473bfbbb317b"), BloomRoot: common.HexToHash("0xd38be1a06aabd568e10957fee4fcc523bc64996bcf31bae3f55f86e0a583919f"), } // TestnetChainConfig is the chain parameters to run a node on the test network. TestnetChainConfig = &ChainConfig{ ChainID: big.NewInt(104), PIP7ChainID: big.NewInt(210429), AddressHRP: "lat", EmptyBlock: "on", EIP155Block: big.NewInt(1), CopernicusBlock: big.NewInt(1), NewtonBlock: big.NewInt(1), EinsteinBlock: big.NewInt(1), HubbleBlock: big.NewInt(1), PauliBlock: big.NewInt(1), DiracBlock: big.NewInt(1), Cbft: &CbftConfig{ InitialNodes: ConvertNodeUrl(initialTestnetConsensusNodes), Amount: 10, ValidatorMode: "ppos", Period: 20000, }, GenesisVersion: GenesisVersion, } // TestnetTrustedCheckpoint contains the light client trusted checkpoint for the test network. TestnetTrustedCheckpoint = &TrustedCheckpoint{ Name: "testnet", SectionIndex: 123, SectionHead: common.HexToHash("0xa372a53decb68ce453da12bea1c8ee7b568b276aa2aab94d9060aa7c81fc3dee"), CHTRoot: common.HexToHash("0x6b02e7fada79cd2a80d4b3623df9c44384d6647fc127462e1c188ccd09ece87b"), BloomRoot: common.HexToHash("0xf2d27490914968279d6377d42868928632573e823b5d1d4a944cba6009e16259"), } TestChainConfig = &ChainConfig{ ChainID: big.NewInt(1337), PIP7ChainID: PrivatePIP7ChainID, AddressHRP: "lat", EmptyBlock: "on", EIP155Block: big.NewInt(0), CopernicusBlock: big.NewInt(0), NewtonBlock: big.NewInt(0), EinsteinBlock: big.NewInt(0), HubbleBlock: big.NewInt(0), PauliBlock: big.NewInt(0), DiracBlock: big.NewInt(0), Cbft: &CbftConfig{ Period: 3, }, GenesisVersion: CodeVersion(), test: true, } // AllEthashProtocolChanges contains every protocol change (EIPs) introduced // // 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), PrivatePIP7ChainID, "lat", "", big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), &CbftConfig{Period: 3}, FORKVERSION_1_5_0, false, sync.RWMutex{}} PrivatePIP7ChainID = new(big.Int).SetUint64(2203181) MainPIP7ChainID = new(big.Int).SetUint64(210425) )
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 EIP155/EIP158 phase. GasTableEIP158 = GasTable{ ExtcodeSize: 700, ExtcodeCopy: 700, Balance: 400, SLoad: 200, Calls: 700, Suicide: 5000, ExpByte: 50, CreateBySuicide: 25000, } // GasTableConstantinople contain the gas re-prices for // the constantinople phase. GasTableConstantinople = 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. SubmitTextProposalGasPrice = big.NewInt(1500000 * 1000000000) // Min gas price for submit a text proposal in Von SubmitVersionProposalGasPrice = big.NewInt(2100000 * 1000000000) // Min gas price for submit a version proposal in Von SubmitCancelProposalGasPrice = big.NewInt(3000000 * 1000000000) // Min gas price for submit a cancel proposal in Von SubmitParamProposalGasPrice = big.NewInt(2000000 * 1000000000) // Min gas price for submit a cancel proposal in Von )
var (
// 10 LAT
DelegateLowerLimit, _ = new(big.Int).SetString("10000000000000000000", 10)
// 1W LAT
DelegateUpperLimit, _ = new(big.Int).SetString("10000000000000000000000", 10)
// hard code genesis staking balance
// 15W LAT
GeneStakingAmount, _ = new(big.Int).SetString("150000000000000000000000", 10)
// 10W
StakeLowerLimit, _ = new(big.Int).SetString("100000000000000000000000", 10)
// 1000W LAT
StakeUpperLimit, _ = new(big.Int).SetString("10000000000000000000000000", 10)
FloorMinimumRelease = new(big.Int).Mul(new(big.Int).SetUint64(100), one)
CeilMinimumRelease = new(big.Int).Mul(new(big.Int).SetUint64(10000000), one)
)
var Bls12381MultiExpDiscountTable = [128]uint64{} /* 128 elements not displayed */
Gas discount table for BLS12-381 G1 and G2 multi exponentiation operations
var DiscoveryV5Bootnodes = []string{}
DiscoveryV5Bootnodes are the enode URLs of the P2P bootstrap nodes for the experimental RLPx v5 topic-discovery network.
var MainnetBootnodes = []string{
"enode://f7c33bd34b0e3c9a0317733ef3356409ff2eb009605cc357c213c367faf833ab48d557942731fd8dfdd39b92004e863c0fd8ebd01e79f69acd2b82f60ac63074@ms1.bfa6.platon.network:16789",
"enode://7729f2313908670523d7babf227e69e93150aac916f3f372a36ee7f204ed55737cb667fc55c34c40c5499734ed08cc7c57800d1ac8131c0cb855768801b898e9@ms2.6cc3.platon.network:16789",
"enode://4649f744f3e1d2400773fc48e057b96a8d4a10e00121f884f97b3182187ded0f89f5f4dbade55acaa4155e25c281f23a34587bad4fc3af2403eef9c130b57e5b@ms3.cd41.platon.network:16789",
"enode://f77401d3dda6d0c58310744e9349c16c056f94179a4d7bdc3470b6461d7f64370fa21ebf380ab10e25834291215715550c6845442a0df88ab1c42d161d367626@ms4.1fda.platon.network:16789",
"enode://8c71f4e1e795fc6e73144e4696a9fde3c3cdf6b99ab575357b77ab22542bc70c8f04e88f23eb6cdb225ad077aa67b71245da1ab1838bf8b362464ffd515ca3d6@ms5.ee7a.platon.network:16789",
"enode://6c9f8a51ff27bb0e062952be1f1e3943847eaed1f14d54783238678767dd134ddedfc82c0f52696cee971ee1aabec00523cd634e41c079ee95407aa4ecb92c7b@ms6.63a8.platon.network:16789",
"enode://0db310d4a6c429dcac973ff6433659ed710783872cf62bdcec09c76a8bb380d51f0c153401ceaa27e0b3de6f56fb939115c495862d15f6ccc8019702117be34d@ms7.66dc.platon.network:16789",
}
MainnetBootnodes are the enode URLs of the P2P bootstrap nodes running on the main PlatON network.
var TestnetBootnodes = []string{
"enode://3fec5e5982a0b32a25168dae575c4705ab8509f266947cb8b16b62ac9eafb78d3e7efce2c31bac447edce3446a12b71383a41dcbdbe80fa856d8739b0214ff35@127.0.0.1:16789",
}
TestnetBootnodes are the enode URLs of the P2P bootstrap nodes running on the test network.
var TrustedCheckpoints = map[common.Hash]*TrustedCheckpoint{ MainnetGenesisHash: MainnetTrustedCheckpoint, TestnetGenesisHash: TestnetTrustedCheckpoint, }
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 AdditionalCycleTime ¶ added in v1.5.1
func AdditionalCycleTime() uint64
func ArchiveVersion ¶
ArchiveVersion holds the textual version string used for PlatON archives. e.g. "1.8.11-dea1ce05" for stable releases, or
"1.8.13-unstable-21c059b6" for unstable releases
func BlocksWillCreate ¶ added in v1.5.1
func BlocksWillCreate() uint64
func CDFAccount ¶ added in v1.5.1
func CDFBalance ¶ added in v1.5.1
func CalcP ¶ added in v1.5.1
Calculate the P value of the binomial distribution Parameter: The total weight of the election
func CancelProposal_SupportRate ¶ added in v1.5.1
func CancelProposal_SupportRate() uint64
func CancelProposal_VoteRate ¶ added in v1.5.1
func CancelProposal_VoteRate() uint64
func CheckDuplicateSignReportReward ¶ added in v1.5.1
func CheckEconomicModel ¶ added in v1.5.1
func CheckIncreaseIssuanceRatio ¶ added in v1.5.1
func CheckMaxEvidenceAge ¶ added in v1.5.1
func CheckMaxValidators ¶ added in v1.5.1
func CheckMinimumRelease ¶ added in v1.5.1
func CheckOperatingThreshold ¶ added in v1.5.1
func CheckRewardPerChangeInterval ¶ added in v1.5.1
func CheckRewardPerMaxChangeRange ¶ added in v1.5.1
func CheckSlashBlocksReward ¶ added in v1.5.1
func CheckSlashFractionDuplicateSign ¶ added in v1.5.1
func CheckStakeThreshold ¶ added in v1.5.1
func CheckUnDelegateFreezeDuration ¶ added in v1.5.1
func CheckUnStakeFreezeDuration ¶ added in v1.5.1
func CheckZeroProduceCumulativeTime ¶ added in v1.5.1
func CheckZeroProduceFreezeDuration ¶ added in v1.5.1
func CheckZeroProduceNumberThreshold ¶ added in v1.5.1
func CodeVersion ¶ added in v1.0.0
func CodeVersion() uint32
func ConsensusSize ¶ added in v1.5.1
func ConsensusSize() uint64
func DuplicateSignReportReward ¶ added in v1.5.1
func DuplicateSignReportReward() uint32
func EcParams130 ¶ added in v1.5.1
func EconomicString ¶ added in v1.5.1
func EconomicString() string
func ElectionDistance ¶ added in v1.5.1
func ElectionDistance() uint64
func FormatVersion ¶ added in v0.7.5
func HesitateRatio ¶ added in v1.5.1
func HesitateRatio() uint64
func IncreaseIssuanceRatio ¶ added in v1.5.1
func IncreaseIssuanceRatio() uint16
func KnownDNSNetwork ¶ added in v1.4.1
KnownDNSNetwork returns the address of a public DNS-based node list for the given genesis hash and protocol. See https://github.com/ethereum/discv4-dns-lists for more information.
func LtMinorVersion ¶ added in v1.0.0
func MaxConsensusVals ¶ added in v1.5.1
func MaxConsensusVals() uint64
func MaxEvidenceAge ¶ added in v1.5.1
func MaxEvidenceAge() uint32
func MaxValidators ¶ added in v1.5.1
func MaxValidators() uint64
func NewBlockRewardRate ¶ added in v1.5.1
func NewBlockRewardRate() uint64
*****
- Reward config *****
func OperatingThreshold ¶ added in v1.5.1
func ParamProposalVote_DurationSeconds ¶ added in v1.5.1
func ParamProposalVote_DurationSeconds() uint64
func ParamProposal_SupportRate ¶ added in v1.5.1
func ParamProposal_SupportRate() uint64
func ParamProposal_VoteRate ¶ added in v1.5.1
func ParamProposal_VoteRate() uint64
func PlatONFoundationYear ¶ added in v1.5.1
func PlatONFoundationYear() uint32
func PlatONFundBalance ¶ added in v1.5.1
func ResetEconomicDefaultConfig ¶ added in v1.5.1
func ResetEconomicDefaultConfig(newEc *EconomicModel)
func ResetEconomicExtendConfig ¶ added in v1.5.1
func ResetEconomicExtendConfig(newEc *EconomicModelExtend)
func ResetEconomicExtendConfigUnDelegateFreezeDuration ¶ added in v1.5.1
func ResetEconomicExtendConfigUnDelegateFreezeDuration(UnDelegateFreezeDuration uint64)
func RestrictingMinimumRelease ¶ added in v1.5.1
func RewardPerChangeInterval ¶ added in v1.5.1
func RewardPerChangeInterval() uint16
func RewardPerMaxChangeRange ¶ added in v1.5.1
func RewardPerMaxChangeRange() uint16
func SetNodeBlockTimeWindow ¶ added in v1.5.1
func SetNodeBlockTimeWindow(period uint64)
set the value by genesis block
func SetPerRoundBlocks ¶ added in v1.5.1
func SetPerRoundBlocks(amount uint64)
func ShiftValidatorNum ¶ added in v1.5.1
func ShiftValidatorNum() uint64
func SlashBlocksReward ¶ added in v1.5.1
func SlashBlocksReward() uint32
func SlashFractionDuplicateSign ¶ added in v1.5.1
func SlashFractionDuplicateSign() uint32
*****
- Slashing config *****
func TextProposalVote_DurationSeconds ¶ added in v1.5.1
func TextProposalVote_DurationSeconds() uint64
func TextProposalVote_ConsensusRounds() uint64 {
return ec.Gov.TextProposalVoteDurationSeconds / (Interval() * ec.Common.PerRoundBlocks * ec.Common.MaxConsensusVals)
}
func TextProposal_SupportRate ¶ added in v1.5.1
func TextProposal_SupportRate() uint64
func TextProposal_VoteRate ¶ added in v1.5.1
func TextProposal_VoteRate() uint64
func TheNumberOfDelegationsReward ¶ added in v1.5.1
func TheNumberOfDelegationsReward() uint16
func UnDelegateFreezeDuration ¶ added in v1.5.1
func UnDelegateFreezeDuration() uint64
func UnStakeFreezeDuration ¶ added in v1.5.1
func UnStakeFreezeDuration() uint64
func VersionProposalVote_DurationSeconds ¶ added in v1.5.1
func VersionProposalVote_DurationSeconds() uint64
func VersionProposal_SupportRate ¶ added in v1.5.1
func VersionProposal_SupportRate() uint64
func VersionWithCommit ¶
func ZeroProduceCumulativeTime ¶ added in v1.5.1
func ZeroProduceCumulativeTime() uint16
func ZeroProduceFreezeDuration ¶ added in v1.5.1
func ZeroProduceFreezeDuration() uint64
func ZeroProduceNumberThreshold ¶ added in v1.5.1
func ZeroProduceNumberThreshold() uint16
Types ¶
type CbftConfig ¶ added in v0.7.0
type CbftConfig struct {
Period uint64 `json:"period,omitempty"` // Number of seconds between blocks to enforce
Amount uint32 `json:"amount,omitempty"` //The maximum number of blocks generated per cycle
InitialNodes []CbftNode `json:"initialNodes,omitempty"` //Genesis consensus node
ValidatorMode string `json:"validatorMode,omitempty"` //Validator mode for easy testing
}
func (*CbftConfig) String ¶ added in v1.4.1
func (c *CbftConfig) String() string
String implements the fmt.Stringer interface.
type CbftNode ¶ added in v0.7.1
func ConvertNodeUrl ¶ added in v0.7.3
func ConvertNodeUrl(initialNodes []initNode) []CbftNode
type ChainConfig ¶
type ChainConfig struct {
ChainID *big.Int `json:"chainId"` // chainId identifies the current chain and is used for replay protection
PIP7ChainID *big.Int `json:"pip7ChainId,omitempty"` // chainId identifies the current chain and is used for replay protection
AddressHRP string `json:"addressHRP"`
EmptyBlock string `json:"emptyBlock"`
EIP155Block *big.Int `json:"eip155Block,omitempty"` // EIP155 HF block
EWASMBlock *big.Int `json:"ewasmBlock,omitempty"` // EWASM switch block (nil = no fork, 0 = already activated)
CopernicusBlock *big.Int `json:"copernicusBlock,omitempty"`
NewtonBlock *big.Int `json:"newtonBlock,omitempty"`
EinsteinBlock *big.Int `json:"einsteinBlock,omitempty"`
HubbleBlock *big.Int `json:"hubbleBlock,omitempty"`
PauliBlock *big.Int `json:"pauliBlock,omitempty"`
DiracBlock *big.Int `json:"diracBlock,omitempty"`
// Various consensus engines
Cbft *CbftConfig `json:"cbft,omitempty"`
GenesisVersion uint32 `json:"genesisVersion"`
sync.RWMutex
// contains filtered or unexported fields
}
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) BaseFeeChangeDenominator ¶ added in v1.5.1
func (c *ChainConfig) BaseFeeChangeDenominator() uint64
BaseFeeChangeDenominator bounds the amount the base fee can change between blocks.
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) CheckConfigForkOrder ¶ added in v1.4.1
func (c *ChainConfig) CheckConfigForkOrder() error
CheckConfigForkOrder checks that we don't "skip" any forks, geth isn't pluggable enough to guarantee that forks can be implemented in a different order than on official networks
func (*ChainConfig) ElasticityMultiplier ¶ added in v1.5.1
func (c *ChainConfig) ElasticityMultiplier() uint64
ElasticityMultiplier bounds the maximum gas limit an EIP-1559 block may have.
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) GetDiracBlock ¶ added in v1.5.1
func (c *ChainConfig) GetDiracBlock() *big.Int
func (*ChainConfig) GetPauliBlock ¶ added in v1.5.0
func (c *ChainConfig) GetPauliBlock() *big.Int
func (*ChainConfig) IsCopernicus ¶ added in v1.4.1
func (c *ChainConfig) IsCopernicus(num *big.Int) bool
version 1.1.0
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) IsEWASM ¶
func (c *ChainConfig) IsEWASM(num *big.Int) bool
IsEWASM returns whether num represents a block number after the EWASM fork
func (*ChainConfig) IsEinstein ¶ added in v1.4.1
func (c *ChainConfig) IsEinstein(num *big.Int) bool
version 1.3.0
func (*ChainConfig) IsHubble ¶ added in v1.4.1
func (c *ChainConfig) IsHubble(num *big.Int) bool
version 1.4.0
func (*ChainConfig) IsNewton ¶ added in v1.4.1
func (c *ChainConfig) IsNewton(num *big.Int) bool
version 1.2.0
func (*ChainConfig) IsPauli ¶ added in v1.5.0
func (c *ChainConfig) IsPauli(num *big.Int) bool
version 1.5.0
func (*ChainConfig) Rules ¶
func (c *ChainConfig) Rules(num *big.Int) Rules
Rules ensures c's ChainID is not nil.
func (*ChainConfig) SetDiracBlock ¶ added in v1.5.1
func (c *ChainConfig) SetDiracBlock(block *big.Int)
func (*ChainConfig) SetPauliBlock ¶ added in v1.5.0
func (c *ChainConfig) SetPauliBlock(block *big.Int)
func (*ChainConfig) String ¶
func (c *ChainConfig) String() string
String implements the fmt.Stringer interface.
func (*ChainConfig) Test ¶ added in v1.5.1
func (c *ChainConfig) Test() bool
type CommonConfig ¶ added in v1.5.1
type CommonConfig struct {
MaxEpochMinutes uint64 `json:"maxEpochMinutes"` // expected minutes every epoch
NodeBlockTimeWindow uint64 `json:"nodeBlockTimeWindow"` // Node block time window (uint: seconds)
PerRoundBlocks uint64 `json:"perRoundBlocks"` // blocks each validator will create per consensus epoch
MaxConsensusVals uint64 `json:"maxConsensusVals"` // The consensus validators count
AdditionalCycleTime uint64 `json:"additionalCycleTime"` // Additional cycle time (uint: minutes)
}
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 EconomicModel ¶ added in v1.5.1
type EconomicModel struct {
Common CommonConfig `json:"common"`
Staking StakingConfig `json:"staking"`
Slashing SlashingConfig `json:"slashing"`
Gov GovernanceConfig `json:"gov"`
Reward RewardConfig `json:"reward"`
Restricting RestrictingConfig `json:"restricting"`
InnerAcc InnerAccount `json:"innerAcc"`
}
total
func GetEc ¶ added in v1.5.1
func GetEc(netId int8) *EconomicModel
Getting the global EconomicModel single instance
type EconomicModelExtend ¶ added in v1.5.1
type EconomicModelExtend struct {
Staking StakingConfigExtend `json:"staking"`
}
When the chain is started, if new parameters are added, add them to this structure
func GetEce ¶ added in v1.5.1
func GetEce() *EconomicModelExtend
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 GovernanceConfig ¶ added in v1.5.1
type GovernanceConfig struct {
VersionProposalVoteDurationSeconds uint64 `json:"versionProposalVoteDurationSeconds"` // voting duration, it will count into Consensus-Round.
VersionProposalSupportRate uint64 `json:"versionProposalSupportRate"` // the version proposal will pass if the support rate exceeds this value.
TextProposalVoteDurationSeconds uint64 `json:"textProposalVoteDurationSeconds"` // voting duration, it will count into Consensus-Round.
TextProposalVoteRate uint64 `json:"textProposalVoteRate"` // the text proposal will pass if the vote rate exceeds this value.
TextProposalSupportRate uint64 `json:"textProposalSupportRate"` // the text proposal will pass if the vote support reaches this value.
CancelProposalVoteRate uint64 `json:"cancelProposalVoteRate"` // the cancel proposal will pass if the vote rate exceeds this value.
CancelProposalSupportRate uint64 `json:"cancelProposalSupportRate"` // the cancel proposal will pass if the vote support reaches this value.
ParamProposalVoteDurationSeconds uint64 `json:"paramProposalVoteDurationSeconds"` // voting duration, it will count into Epoch Round.
ParamProposalVoteRate uint64 `json:"paramProposalVoteRate"` // the param proposal will pass if the vote rate exceeds this value.
ParamProposalSupportRate uint64 `json:"paramProposalSupportRate"` // the param proposal will pass if the vote support reaches this value.
}
type InnerAccount ¶ added in v1.5.1
type InnerAccount struct {
// Account of PlatONFoundation
PlatONFundAccount common.Address `json:"platonFundAccount"`
PlatONFundBalance *big.Int `json:"platonFundBalance"`
// Account of CommunityDeveloperFoundation
CDFAccount common.Address `json:"cdfAccount"`
CDFBalance *big.Int `json:"cdfBalance"`
}
type ProgramVersion ¶ added in v0.7.3
type RestrictingConfig ¶ added in v1.5.1
type RewardConfig ¶ added in v1.5.1
type RewardConfig struct {
NewBlockRate uint64 `json:"newBlockRate"` // This is the package block reward AND staking reward rate, eg: 20 ==> 20%, newblock: 20%, staking: 80%
PlatONFoundationYear uint32 `json:"platonFoundationYear"` // Foundation allotment year, representing a percentage of the boundaries of the Foundation each year
IncreaseIssuanceRatio uint16 `json:"increaseIssuanceRatio"` // According to the total amount issued in the previous year, increase the proportion of issuance
TheNumberOfDelegationsReward uint16 `json:"theNumberOfDelegationsReward"` // The maximum number of delegates that can receive rewards at a time
}
type Rules ¶
type Rules struct {
ChainID *big.Int
IsEIP155, IsCopernicus, IsNewton, IsEinstein, IsHubble, IsPauli, IsDirac 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 SlashingConfig ¶ added in v1.5.1
type SlashingConfig struct {
SlashFractionDuplicateSign uint32 `json:"slashFractionDuplicateSign"` // Proportion of fines when double signing occurs
DuplicateSignReportReward uint32 `json:"duplicateSignReportReward"` // The percentage of rewards for whistleblowers, calculated from the penalty
MaxEvidenceAge uint32 `json:"maxEvidenceAge"` // Validity period of evidence (unit is epochs)
SlashBlocksReward uint32 `json:"slashBlocksReward"` // the number of blockReward to slashing per round
ZeroProduceCumulativeTime uint16 `json:"zeroProduceCumulativeTime"` // Count the number of zero-production blocks in this time range and check it. If it reaches a certain number of times, it can be punished (unit is consensus round)
ZeroProduceNumberThreshold uint16 `json:"zeroProduceNumberThreshold"` // Threshold for the number of zero production blocks. punishment is reached within the specified time range
ZeroProduceFreezeDuration uint64 `json:"zeroProduceFreezeDuration"` // Number of settlement cycles frozen after zero block penalty (unit is epochs)
}
type StakingConfig ¶ added in v1.5.1
type StakingConfig struct {
StakeThreshold *big.Int `json:"stakeThreshold"` // The Staking minimum threshold allowed
OperatingThreshold *big.Int `json:"operatingThreshold"` // The (incr, decr) delegate or incr staking minimum threshold allowed
MaxValidators uint64 `json:"maxValidators"` // The epoch (billing cycle) validators count
UnStakeFreezeDuration uint64 `json:"unStakeFreezeDuration"` // The freeze period of the withdrew Staking (unit is epochs)
RewardPerMaxChangeRange uint16 `json:"rewardPerMaxChangeRange"` // The maximum amount of commission reward ratio that can be modified each time
RewardPerChangeInterval uint16 `json:"rewardPerChangeInterval"` // The interval for each modification of the commission reward ratio (unit: epoch)
}
type StakingConfigExtend ¶ added in v1.5.1
type StakingConfigExtend struct {
// 可治理参数,在版本升级或者私链初始化版本高于1.3.0的时候被写入到快照db,后续通过快照db查询
UnDelegateFreezeDuration uint64 `json:"unDelegateFreezeDuration"` // The maximum number of delegates that can receive rewards at a time
}
type TrustedCheckpoint ¶
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.