Versions in this module Expand all Collapse all v0 v0.3.0 Aug 6, 2026 Changes in this version + const DefaultEmptyVoteRebroadcastTimeout + const DefaultFinalizeVoteRebroadcastTimeout + const DefaultMaxProposalWaitTime + const DefaultMaxReplicationResponseSize + const DefaultMaxRoundWindow + const DefaultProcessingBlocks + const DefaultReplicationRequestTimeout + const EmptyVoteTimeoutID + var ErrAlreadyStarted = errors.New("epoch already started") + func BatchSequences(seqs []uint64, numNodes uint64, maxSize uint64) [][]uint64 + func GetLatestVerifiedQuorumRound(round *Round, emptyNotarization *common.EmptyNotarization) *common.VerifiedQuorumRound + func LeaderForRound(nodes []common.NodeID, r uint64) common.NodeID + func NewRandomSource() (*rand.Rand, error) + func NodeIDsFromVotes[VS voteSigner](votes []VS) []common.NodeID + func RetrieveLastIndexFromStorage(s common.Storage) (*common.VerifiedFinalizedBlock, error) + func VerifyQC(qc common.QuorumCertificate, isQuorum func(signers []common.NodeID) bool, ...) error + type EmptyVoteSet struct + type Epoch struct + func NewEpoch(conf EpochConfig) (*Epoch, error) + func (e *Epoch) AdvanceTime(t time.Time) + func (e *Epoch) HandleMessage(msg *common.Message, from common.NodeID) error + func (e *Epoch) Metadata() common.ProtocolMetadata + func (e *Epoch) Start() error + func (e *Epoch) Stop() + func (e *Epoch) VerifyBlockMessageVote(from common.NodeID, md common.BlockHeader, vote common.Vote) error + type EpochConfig struct + BlockBuilder common.BlockBuilder + BlockDeserializer common.BlockDeserializer + Comm common.Communication + Epoch uint64 + FinalizeRebroadcastTimeout time.Duration + ID common.NodeID + Logger common.Logger + MaxProposalWait time.Duration + MaxRebroadcastWait time.Duration + MaxReplicationResponseSize int + MaxRoundWindow uint64 + QCDeserializer common.QCDeserializer + RandomSource *rand.Rand + ReplicationEnabled bool + SignatureAggregatorCreator common.SignatureAggregatorCreator + Signer common.Signer + StartTime time.Time + Storage common.Storage + Verifier common.SignatureVerifier + WAL common.WriteAheadLog + type Monitor struct + func NewMonitor(startTime time.Time, logger common.Logger) *Monitor + func (m *Monitor) AdvanceTime(t time.Time) + func (m *Monitor) CancelFutureTask() + func (m *Monitor) CancelTask() + func (m *Monitor) Close() + func (m *Monitor) FutureTask(timeout time.Duration, f func()) + func (m *Monitor) RunTask(f func()) bool + type NotarizationTime struct + func NewNotarizationTime(finalizeVoteRebroadcastTimeout time.Duration, ...) NotarizationTime + func (nt *NotarizationTime) CheckForNotFinalizedNotarizedBlocks(now time.Time) + type OneTimeVerifier struct + func NewOneTimeVerifier(logger common.Logger) *OneTimeVerifier + func (otv *OneTimeVerifier) Wrap(block common.Block) common.Block + type ReplicationState struct + func NewReplicationState(logger common.Logger, comm Sender, myNodeID common.NodeID, ...) *ReplicationState + func (r *ReplicationState) AdvanceTime(now time.Time) + func (r *ReplicationState) Close() + func (r *ReplicationState) CreateDependencyTasks(parent *common.Digest, parentSeq uint64, emptyRounds []uint64) + func (r *ReplicationState) DeleteRound(round uint64) + func (r *ReplicationState) DeleteSeq(seq uint64) + func (r *ReplicationState) GetBlockWithSeq(seq uint64) common.Block + func (r *ReplicationState) GetFinalizedBlockForSequence(seq uint64) (common.Block, *common.Finalization, bool) + func (r *ReplicationState) GetHighestRound() uint64 + func (r *ReplicationState) GetLowestRound() *common.QuorumRound + func (r *ReplicationState) MaybeAdvanceState(nextSequenceToCommit uint64, currentRound uint64, lastCommittedRound uint64) + func (r *ReplicationState) ReceivedFutureFinalization(finalization *common.Finalization, nextSeqToCommit uint64) + func (r *ReplicationState) ReceivedFutureRound(round, seq, currentRound uint64, signers []common.NodeID) + func (r *ReplicationState) ResendFinalizationRequest(seq uint64, signers []common.NodeID) + func (r *ReplicationState) StoreQuorumRound(round *common.QuorumRound) + type Round struct + func NewRound(block common.VerifiedBlock) *Round + func SetRound(block common.VerifiedBlock, notarization *common.Notarization, ...) *Round + type Sender interface + Send func(msg *common.Message, destination common.NodeID)