Documentation ¶
Index ¶
- Variables
- type Builder
- func (b *Builder) Build() (*RollDPoS, error)
- func (b *Builder) RegisterProtocol(rp *rolldpos.Protocol) *Builder
- func (b *Builder) SetActPool(actPool actpool.ActPool) *Builder
- func (b *Builder) SetAddr(encodedAddr string) *Builder
- func (b *Builder) SetBroadcast(broadcastHandler scheme.Broadcast) *Builder
- func (b *Builder) SetCandidatesByHeightFunc(candidatesByHeightFunc CandidatesByHeightFunc) *Builder
- func (b *Builder) SetChainManager(chain ChainManager) *Builder
- func (b *Builder) SetClock(clock clock.Clock) *Builder
- func (b *Builder) SetConfig(cfg config.Config) *Builder
- func (b *Builder) SetPriKey(priKey crypto.PrivateKey) *Builder
- type CandidatesByHeightFunc
- type ChainManager
- type ConsensusVote
- type ConsensusVoteTopic
- type EndorsedByMajorityFunc
- type EndorsedConsensusMessage
- func (ecm *EndorsedConsensusMessage) Document() endorsement.Document
- func (ecm *EndorsedConsensusMessage) Endorsement() *endorsement.Endorsement
- func (ecm *EndorsedConsensusMessage) Height() uint64
- func (ecm *EndorsedConsensusMessage) LoadProto(msg *iotextypes.ConsensusMessage) error
- func (ecm *EndorsedConsensusMessage) Proto() (*iotextypes.ConsensusMessage, error)
- type RollDPoS
- func (r *RollDPoS) Activate(active bool)
- func (r *RollDPoS) Active() bool
- func (r *RollDPoS) Calibrate(height uint64)
- func (r *RollDPoS) CurrentState() fsm.State
- func (r *RollDPoS) HandleConsensusMsg(msg *iotextypes.ConsensusMessage) error
- func (r *RollDPoS) Metrics() (scheme.ConsensusMetrics, error)
- func (r *RollDPoS) NumPendingEvts() int
- func (r *RollDPoS) Start(ctx context.Context) error
- func (r *RollDPoS) Stop(ctx context.Context) error
- func (r *RollDPoS) ValidateBlockFooter(blk *block.Block) error
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNewRollDPoS indicates the error of constructing RollDPoS ErrNewRollDPoS = errors.New("error when constructing RollDPoS") // ErrZeroDelegate indicates seeing 0 delegates in the network ErrZeroDelegate = errors.New("zero delegates in the network") // ErrNotEnoughCandidates indicates there are not enough candidates from the candidate pool ErrNotEnoughCandidates = errors.New("Candidate pool does not have enough candidates") )
var ( // ErrExpiredEndorsement indicates that the endorsement is expired ErrExpiredEndorsement = errors.New("the endorsement has been replaced or expired") )
var ErrInsufficientEndorsements = errors.New("Insufficient endorsements")
ErrInsufficientEndorsements represents the error that not enough endorsements
Functions ¶
This section is empty.
Types ¶
type Builder ¶ added in v0.3.0
type Builder struct {
// contains filtered or unexported fields
}
Builder is the builder for RollDPoS
func NewRollDPoSBuilder ¶ added in v0.3.0
func NewRollDPoSBuilder() *Builder
NewRollDPoSBuilder instantiates a Builder instance
func (*Builder) RegisterProtocol ¶ added in v0.5.0
RegisterProtocol sets the rolldpos protocol
func (*Builder) SetActPool ¶ added in v0.3.0
SetActPool sets the action pool APIs
func (*Builder) SetBroadcast ¶ added in v0.4.4
SetBroadcast sets the broadcast callback
func (*Builder) SetCandidatesByHeightFunc ¶ added in v0.3.0
func (b *Builder) SetCandidatesByHeightFunc( candidatesByHeightFunc CandidatesByHeightFunc, ) *Builder
SetCandidatesByHeightFunc sets candidatesByHeightFunc
func (*Builder) SetChainManager ¶ added in v0.9.0
func (b *Builder) SetChainManager(chain ChainManager) *Builder
SetChainManager sets the blockchain APIs
type CandidatesByHeightFunc ¶ added in v0.4.4
CandidatesByHeightFunc defines a function to overwrite candidates
type ChainManager ¶ added in v0.9.0
type ChainManager interface { // CandidatesByHeight returns the candidate list by a given height CandidatesByHeight(height uint64) ([]*state.Candidate, error) // GenesisTimestamp returns the timestamp of genesis GenesisTimestamp() int64 // BlockHeaderByHeight return block header by height BlockHeaderByHeight(height uint64) (*block.Header, error) BlockFooterByHeight(height uint64) (*block.Footer, error) // MintNewBlock creates a new block with given actions // Note: the coinbase transfer will be added to the given transfers when minting a new block MintNewBlock( actionMap map[string][]action.SealedEnvelope, timestamp time.Time, ) (*block.Block, error) // CommitBlock validates and appends a block to the chain CommitBlock(blk *block.Block) error // ValidateBlock validates a new block before adding it to the blockchain ValidateBlock(blk *block.Block) error // TipHeight returns tip block's height TipHeight() uint64 // ChainAddress returns chain address on parent chain, the root chain return empty. ChainAddress() string }
ChainManager defines the blockchain interface
type ConsensusVote ¶ added in v0.5.0
type ConsensusVote struct {
// contains filtered or unexported fields
}
ConsensusVote is a vote on a given topic for a block on a specific height
func NewConsensusVote ¶ added in v0.5.0
func NewConsensusVote( blkHash []byte, topic ConsensusVoteTopic, ) *ConsensusVote
NewConsensusVote creates a consensus vote
func (*ConsensusVote) BlockHash ¶ added in v0.5.0
func (v *ConsensusVote) BlockHash() []byte
BlockHash returns the block hash of the consensus vote
func (*ConsensusVote) Hash ¶ added in v0.5.0
func (v *ConsensusVote) Hash() ([]byte, error)
Hash returns the hash of this vote
func (*ConsensusVote) LoadProto ¶ added in v0.5.0
func (v *ConsensusVote) LoadProto(msg *iotextypes.ConsensusVote) error
LoadProto loads from a protobuf message
func (*ConsensusVote) Proto ¶ added in v0.5.0
func (v *ConsensusVote) Proto() (*iotextypes.ConsensusVote, error)
Proto converts to a protobuf message
func (*ConsensusVote) Topic ¶ added in v0.5.0
func (v *ConsensusVote) Topic() ConsensusVoteTopic
Topic returns the topic of the consensus vote
type ConsensusVoteTopic ¶ added in v0.5.0
type ConsensusVoteTopic uint8
ConsensusVoteTopic defines the topic of an consensus vote
const ( // PROPOSAL stands for an consensus vote to endorse a block proposal PROPOSAL ConsensusVoteTopic = 0 // LOCK stands for an consensus vote to endorse a lock on a proposed block LOCK ConsensusVoteTopic = 1 // COMMIT stands for an consensus vote to endorse a block commit COMMIT ConsensusVoteTopic = 2 )
type EndorsedByMajorityFunc ¶ added in v0.8.2
type EndorsedByMajorityFunc func(blockHash []byte, topics []ConsensusVoteTopic) bool
EndorsedByMajorityFunc defines a function to give an information of consensus status
type EndorsedConsensusMessage ¶ added in v0.5.0
type EndorsedConsensusMessage struct {
// contains filtered or unexported fields
}
EndorsedConsensusMessage is an endorsement on document
func NewEndorsedConsensusMessage ¶ added in v0.5.0
func NewEndorsedConsensusMessage( height uint64, message endorsement.Document, endorsement *endorsement.Endorsement, ) *EndorsedConsensusMessage
NewEndorsedConsensusMessage creates an EndorsedConsensusMessage for an consensus vote
func (*EndorsedConsensusMessage) Document ¶ added in v0.5.0
func (ecm *EndorsedConsensusMessage) Document() endorsement.Document
Document returns the endorsed consensus message
func (*EndorsedConsensusMessage) Endorsement ¶ added in v0.5.0
func (ecm *EndorsedConsensusMessage) Endorsement() *endorsement.Endorsement
Endorsement returns the endorsement
func (*EndorsedConsensusMessage) Height ¶ added in v0.5.0
func (ecm *EndorsedConsensusMessage) Height() uint64
Height returns the height of this message
func (*EndorsedConsensusMessage) LoadProto ¶ added in v0.5.0
func (ecm *EndorsedConsensusMessage) LoadProto(msg *iotextypes.ConsensusMessage) error
LoadProto creates an endorsement message from protobuf message
func (*EndorsedConsensusMessage) Proto ¶ added in v0.5.0
func (ecm *EndorsedConsensusMessage) Proto() (*iotextypes.ConsensusMessage, error)
Proto converts an endorsement to endorse proto
type RollDPoS ¶
type RollDPoS struct {
// contains filtered or unexported fields
}
RollDPoS is Roll-DPoS consensus main entrance
func (*RollDPoS) Activate ¶ added in v0.5.0
Activate activates or pauses the roll-DPoS consensus. When it is deactivated, the node will finish the current consensus round if it is doing the work and then return the the initial state
func (*RollDPoS) Active ¶ added in v0.5.0
Active is true if the roll-DPoS consensus is active, or false if it is stand-by
func (*RollDPoS) Calibrate ¶ added in v0.4.4
Calibrate called on receive a new block not via consensus
func (*RollDPoS) CurrentState ¶ added in v0.3.0
CurrentState returns the current state
func (*RollDPoS) HandleConsensusMsg ¶ added in v0.4.4
func (r *RollDPoS) HandleConsensusMsg(msg *iotextypes.ConsensusMessage) error
HandleConsensusMsg handles incoming consensus message
func (*RollDPoS) Metrics ¶
func (r *RollDPoS) Metrics() (scheme.ConsensusMetrics, error)
Metrics returns RollDPoS consensus metrics
func (*RollDPoS) NumPendingEvts ¶ added in v0.3.0
NumPendingEvts returns the number of pending events