epoch

package
v1.3.1 Latest Latest
Warning

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

Go to latest
Published: Jul 31, 2021 License: GPL-3.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EPOCH_NOT_EXIST          = iota // value --> 0
	EPOCH_PROPOSED_NOT_VOTED        // value --> 1
	EPOCH_VOTED_NOT_SAVED           // value --> 2
	EPOCH_SAVED                     // value --> 3

	MinimumValidatorsSize = 1
	MaximumValidatorsSize = 100 // TODO the max validator size will increase to 100 in the future

	TimeForForbidden  = 4 * time.Hour
	ForbiddenDuration = 24 * time.Hour
)

Variables

View Source
var ForbiddenEpoch = big.NewInt(2) // forbid 2 epoch
View Source
var NextEpochNotEXPECTED = errors.New("next epoch parameters are not excepted, fatal error")
View Source
var NextEpochNotExist = errors.New("next epoch parameters do not exist, fatal error")

Functions

func DryRunUpdateEpochValidatorSet

func DryRunUpdateEpochValidatorSet(state *state.StateDB, validators *tmTypes.ValidatorSet, voteSet *EpochValidatorVoteSet) error

DryRunUpdateEpochValidatorSet Re-calculate the New Validator Set base on the current state db and vote set

func SaveEpochVoteSet

func SaveEpochVoteSet(epochDB db.DB, epochNumber uint64, voteSet *EpochValidatorVoteSet)

func UpdateEpochEndTime

func UpdateEpochEndTime(db dbm.DB, epNumber uint64, endTime time.Time)

Types

type Epoch

type Epoch struct {
	Number         uint64
	RewardPerBlock *big.Int
	StartBlock     uint64
	EndBlock       uint64
	StartTime      time.Time
	EndTime        time.Time //not accurate for current epoch
	BlockGenerated int       //agreed in which block
	Status         int       //checked if this epoch has been saved
	Validators     *tmTypes.ValidatorSet
	// contains filtered or unexported fields
}

func FromBytes

func FromBytes(buf []byte) *Epoch

func InitEpoch

func InitEpoch(db dbm.DB, genDoc *tmTypes.GenesisDoc, logger log.Logger) *Epoch

InitEpoch either initial the Epoch from DB or from genesis file

func LoadOneEpoch

func LoadOneEpoch(db dbm.DB, epochNumber uint64, logger log.Logger) *Epoch

Load Full Epoch By EpochNumber (Epoch data, Reward Scheme, ValidatorVote, Previous Epoch, Next Epoch)

func MakeOneEpoch

func MakeOneEpoch(db dbm.DB, oneEpoch *tmTypes.OneEpochDoc, logger log.Logger) *Epoch

Convert from OneEpochDoc (Json) to Epoch

func (*Epoch) Bytes

func (epoch *Epoch) Bytes() []byte

func (*Epoch) Copy

func (epoch *Epoch) Copy() *Epoch

func (*Epoch) EnterNewEpoch

func (epoch *Epoch) EnterNewEpoch(newValidators *tmTypes.ValidatorSet) (*Epoch, error)

Move to New Epoch

func (*Epoch) Equals

func (epoch *Epoch) Equals(other *Epoch, checkPrevNext bool) bool

func (*Epoch) GetDB

func (epoch *Epoch) GetDB() dbm.DB

func (*Epoch) GetEpochByBlockNumber

func (epoch *Epoch) GetEpochByBlockNumber(blockNumber uint64) *Epoch

func (*Epoch) GetEpochValidatorVoteSet

func (epoch *Epoch) GetEpochValidatorVoteSet() *EpochValidatorVoteSet

func (*Epoch) GetForbiddenDuration

func (epoch *Epoch) GetForbiddenDuration() time.Duration

func (*Epoch) GetNextEpoch

func (epoch *Epoch) GetNextEpoch() *Epoch

func (*Epoch) GetPreviousEpoch

func (epoch *Epoch) GetPreviousEpoch() *Epoch

func (*Epoch) GetRewardScheme

func (epoch *Epoch) GetRewardScheme() *RewardScheme

func (*Epoch) ProposeNextEpoch

func (epoch *Epoch) ProposeNextEpoch(lastBlockHeight uint64, lastBlockTime time.Time) *Epoch

func (*Epoch) Save

func (epoch *Epoch) Save()

Save the Epoch to Level DB

func (*Epoch) SetNextEpoch

func (epoch *Epoch) SetNextEpoch(next *Epoch)

func (*Epoch) SetRewardScheme

func (epoch *Epoch) SetRewardScheme(rs *RewardScheme)

func (*Epoch) ShouldEnterNewEpoch

func (epoch *Epoch) ShouldEnterNewEpoch(height uint64, state *state.StateDB) (bool, *tmTypes.ValidatorSet, error)

func (*Epoch) ShouldProposeNextEpoch

func (epoch *Epoch) ShouldProposeNextEpoch(curBlockHeight uint64) bool

check if need propose next epoch

func (*Epoch) String

func (epoch *Epoch) String() string

func (*Epoch) UpdateForbiddenState

func (epoch *Epoch) UpdateForbiddenState(header *types.Header, prevHeader *types.Header, commit *tmTypes.Commit, state *state.StateDB)

Update validator block time and set forbidden if this validator did not participate in consensus in one epoch

func (*Epoch) ValidateNextEpoch

func (epoch *Epoch) ValidateNextEpoch(next *Epoch, lastHeight uint64, lastBlockTime time.Time) error

type EpochValidatorVote

type EpochValidatorVote struct {
	Address  common.Address
	PubKey   crypto.PubKey
	Amount   *big.Int
	Salt     string
	VoteHash common.Hash // VoteHash = Sha3(Address + PubKey + Amount + Salt)
	TxHash   common.Hash
}

func (*EpochValidatorVote) Copy

func (vote *EpochValidatorVote) Copy() *EpochValidatorVote

type EpochValidatorVoteSet

type EpochValidatorVoteSet struct {
	// Store the Votes
	Votes []*EpochValidatorVote
	// contains filtered or unexported fields
}

func LoadEpochVoteSet

func LoadEpochVoteSet(epochDB db.DB, epochNumber uint64) *EpochValidatorVoteSet

func NewEpochValidatorVoteSet

func NewEpochValidatorVoteSet() *EpochValidatorVoteSet

func (*EpochValidatorVoteSet) Copy

func (*EpochValidatorVoteSet) GetVoteByAddress

func (voteSet *EpochValidatorVoteSet) GetVoteByAddress(address common.Address) (vote *EpochValidatorVote, exist bool)

GetVoteByAddress get the Vote from VoteSet by Address Hex Key

func (*EpochValidatorVoteSet) IsEmpty

func (voteSet *EpochValidatorVoteSet) IsEmpty() bool

func (*EpochValidatorVoteSet) StoreVote

func (voteSet *EpochValidatorVoteSet) StoreVote(vote *EpochValidatorVote)

StoreVote insert or update the Vote into VoteSet by Address Hex Key

type RewardScheme

type RewardScheme struct {
	TotalReward        *big.Int
	RewardFirstYear    *big.Int
	EpochNumberPerYear uint64
	TotalYear          uint64
	// contains filtered or unexported fields
}

func LoadRewardScheme

func LoadRewardScheme(db dbm.DB) *RewardScheme

Load Reward Scheme

func MakeRewardScheme

func MakeRewardScheme(db dbm.DB, rsDoc *tmTypes.RewardSchemeDoc) *RewardScheme

Convert Reward Scheme from json to struct

func (*RewardScheme) Save

func (rs *RewardScheme) Save()

Save the Reward Scheme to DB

func (*RewardScheme) String

func (rs *RewardScheme) String() string

Jump to

Keyboard shortcuts

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