Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Account ¶
type Account struct { // InitBalanceMap is the address and initial balance mapping before the first block. InitBalanceMap map[string]string `yaml:"initBalances"` }
Account contains the configs for account protocol
type Blockchain ¶
type Blockchain struct { // Timestamp is the timestamp of the genesis block Timestamp int64 // BlockGasLimit is the total gas limit could be consumed in a block BlockGasLimit uint64 `yaml:"blockGasLimit"` // ActionGasLimit is the per action gas limit cap ActionGasLimit uint64 `yaml:"actionGasLimit"` // BlockInterval is the interval between two blocks BlockInterval time.Duration `yaml:"blockInterval"` // NumSubEpochs is the number of sub epochs in one epoch of block production NumSubEpochs uint64 `yaml:"numSubEpochs"` // NumDelegates is the number of delegates that participate into one epoch of block production NumDelegates uint64 `yaml:"numDelegates"` // NumCandidateDelegates is the number of candidate delegates, who may be selected as a delegate via roll dpos NumCandidateDelegates uint64 `yaml:"numCandidateDelegates"` // TimeBasedRotation is the flag to enable rotating delegates' time slots on a block height TimeBasedRotation bool `yaml:"timeBasedRotation"` }
Blockchain contains blockchain level configs
type Delegate ¶
type Delegate struct { // OperatorAddrStr is the address who will operate the node OperatorAddrStr string `yaml:"operatorAddr"` // RewardAddrStr is the address who will get the reward when operator produces blocks RewardAddrStr string `yaml:"rewardAddr"` // VotesStr is the score for the operator to rank and weight for rewardee to split epoch reward VotesStr string `yaml:"votes"` }
Delegate defines a delegate with address and votes
func (*Delegate) OperatorAddr ¶
OperatorAddr is the address of operator
func (*Delegate) RewardAddr ¶
RewardAddr is the address of rewardee, which is allowed to be nil
type Genesis ¶
type Genesis struct { Blockchain `yaml:"blockchain"` Account `ymal:"account"` Poll `yaml:"poll"` Rewarding `yaml:"rewarding"` }
Genesis is the root level of genesis config. Genesis config is the network-wide blockchain config. All the nodes participating into the same network should use EXACTLY SAME genesis config.
var ( // Default contains the default genesis config Default Genesis )
type Poll ¶
type Poll struct { // EnableGravityChainVoting is a flag whether read voting from gravity chain EnableGravityChainVoting bool `yaml:"enableGravityChainVoting"` // GravityChainStartHeight is the height in gravity chain where the init poll result stored GravityChainStartHeight uint64 `yaml:"gravityChainStartHeight"` // GravityChainHeightInterval the height interval on gravity chain to pull delegate information GravityChainHeightInterval uint64 `yaml:"gravityChainHeightInterval"` // RegisterContractAddress is the address of register contract RegisterContractAddress string `yaml:"registerContractAddress"` // StakingContractAddress is the address of staking contract StakingContractAddress string `yaml:"stakingContractAddress"` // VoteThreshold is the vote threshold amount in decimal string format VoteThreshold string `yaml:"voteThreshold"` // ScoreThreshold is the score threshold amount in decimal string format ScoreThreshold string `yaml:"scoreThreshold"` // SelfStakingThreshold is self-staking vote threshold amount in decimal string format SelfStakingThreshold string `yaml:"selfStakingThreshold"` // Delegates is a list of delegates with votes Delegates []Delegate `yaml:"delegates"` }
Poll contains the configs for poll protocol
type Rewarding ¶
type Rewarding struct { // InitBalanceStr is the initial balance of the rewarding protocol in decimal string format InitBalanceStr string `yaml:"initBalance"` // BlockReward is the block reward amount in decimal string format BlockRewardStr string `yaml:"blockReward"` // EpochReward is the epoch reward amount in decimal string format EpochRewardStr string `yaml:"epochReward"` // NumDelegatesForEpochReward is the number of top candidates that will share a epoch reward NumDelegatesForEpochReward uint64 `yaml:"numDelegatesForEpochReward"` // ExemptAddrStrsFromEpochReward is the list of addresses in encoded string format that exempt from epoch reward ExemptAddrStrsFromEpochReward []string `yaml:"exemptAddrsFromEpochReward"` // FoundationBonusStr is the bootstrap bonus in decimal string format FoundationBonusStr string `yaml:"foundationBonus"` // NumDelegatesForFoundationBonus is the number of top candidate that will get the bootstrap bonus NumDelegatesForFoundationBonus uint64 `yaml:"numDelegatesForFoundationBonus"` // FoundationBonusLastEpoch is the last epoch number that bootstrap bonus will be granted FoundationBonusLastEpoch uint64 `yaml:"foundationBonusLastEpoch"` // ProductivityThreshold is the percentage number that a delegate's productivity needs to reach to get the // epoch reward ProductivityThreshold uint64 `yaml:"productivityThreshold"` }
Rewarding contains the configs for rewarding protocol
func (*Rewarding) BlockReward ¶
BlockReward returns the block reward amount
func (*Rewarding) EpochReward ¶
EpochReward returns the epoch reward amount
func (*Rewarding) ExemptAddrsFromEpochReward ¶
ExemptAddrsFromEpochReward returns the list of addresses that exempt from epoch reward
func (*Rewarding) FoundationBonus ¶
FoundationBonus returns the bootstrap bonus amount rewarded per epoch
func (*Rewarding) InitBalance ¶
InitBalance returns the init balance of the rewarding fund