 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- type BlockQC
- type Finalizer
- type ForkChoice
- type Forks
- func (f *Forks) AddBlock(block *model.Block) error
- func (f *Forks) AddQC(qc *flow.QuorumCertificate) error
- func (f *Forks) FinalizedBlock() *model.Block
- func (f *Forks) FinalizedView() uint64
- func (f *Forks) GetBlock(id flow.Identifier) (*model.Block, bool)
- func (f *Forks) GetBlocksForView(view uint64) []*model.Block
- func (f *Forks) IsSafeBlock(block *model.Block) bool
- func (f *Forks) MakeForkChoice(curView uint64) (*flow.QuorumCertificate, *model.Block, error)
 
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BlockQC ¶
type BlockQC struct {
	Block *model.Block
	QC    *flow.QuorumCertificate
}
    BlockQC is a Block with a QC that pointing to it, meaning a Quorum Certified Block. This implies Block.View == QC.View && Block.BlockID == QC.BlockID
type Finalizer ¶
type Finalizer interface {
	VerifyBlock(*model.Block) error
	IsSafeBlock(*model.Block) bool
	AddBlock(*model.Block) error
	GetBlock(blockID flow.Identifier) (*model.Block, bool)
	GetBlocksForView(view uint64) []*model.Block
	FinalizedBlock() *model.Block
	LockedBlock() *model.Block
}
    Finalizer is responsible for block finalization.
type ForkChoice ¶
type ForkChoice interface {
	// AddQC adds a Quorum Certificate to Forks;
	// Errors in case the block referenced by the qc is unknown.
	AddQC(qc *flow.QuorumCertificate) error
	// MakeForkChoice prompts the ForkChoice to generate a fork choice for the
	// current view `curView`. The fork choice is a qc that should be used for
	// building the primaries block.
	//
	// Error return indicates incorrect usage. Processing a QC with view v
	// should result in the PaceMaker being in view v+1 or larger. Hence, given
	// that the current View is curView, all QCs should have view < curView
	MakeForkChoice(curView uint64) (*flow.QuorumCertificate, *model.Block, error)
}
    ForkChoice determines the fork-choice. ForkChoice directly interfaces with the Finalizer to query required information (such as finalized View, stored block, etc).
type Forks ¶
type Forks struct {
	// contains filtered or unexported fields
}
    Forks implements the hotstuff.Reactor API
func (*Forks) AddBlock ¶
AddBlock passes the block to the finalizer for finalization and gives the QC to forkchoice for updating the preferred parent block
func (*Forks) AddQC ¶
func (f *Forks) AddQC(qc *flow.QuorumCertificate) error
AddQC gives the QC to the forkchoice for updating the preferred parent block
func (*Forks) FinalizedBlock ¶
FinalizedBlock returns the latest finalized block
func (*Forks) FinalizedView ¶
FinalizedView returns the view of the latest finalized block
func (*Forks) GetBlocksForView ¶
GetBlocksForView returns all the blocks for a certain view.
func (*Forks) IsSafeBlock ¶
IsSafeBlock returns whether a block is safe to vote for.
func (*Forks) MakeForkChoice ¶
MakeForkChoice returns the block to build new block proposal from for the current view. the QC is the QC that points to that block.