Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SetMeasurementTime ¶
SetMeasurementTime function set duration to gauge
Types ¶
type Backend ¶
type Backend interface { MessageConstructor Verifier ValidatorBackend // BuildProposal builds a new proposal for the given view (height and round) BuildProposal(view *proto.View) []byte InsertProposal(proposal *proto.Proposal, committedSeals []*messages.CommittedSeal) // ID returns the validator's ID ID() []byte }
Backend defines an interface all backend implementations need to implement
type IBFT ¶
type IBFT struct {
// contains filtered or unexported fields
}
IBFT represents a single instance of the IBFT state machine
func (*IBFT) AddMessage ¶
AddMessage adds a new message to the IBFT message system
func (*IBFT) ExtendRoundTimeout ¶
ExtendRoundTimeout extends each round's timer by the specified amount.
type Logger ¶
type Logger interface { Info(msg string, args ...any) Debug(msg string, args ...any) Error(msg string, args ...any) }
Logger represents the logger behaviour
type MessageConstructor ¶
type MessageConstructor interface { // BuildPrePrepareMessage builds a PREPREPARE message based on the passed in view and proposal BuildPrePrepareMessage( rawProposal []byte, certificate *proto.RoundChangeCertificate, view *proto.View, ) *proto.Message BuildPrepareMessage(proposalHash []byte, view *proto.View) *proto.Message BuildCommitMessage(proposalHash []byte, view *proto.View) *proto.Message BuildRoundChangeMessage( proposal *proto.Proposal, certificate *proto.PreparedCertificate, view *proto.View, ) *proto.Message }
type Messages ¶
type Messages interface { // Messages modifiers // AddMessage(message *proto.Message) PruneByHeight(height uint64) SignalEvent(messageType proto.MessageType, view *proto.View) // Messages fetchers // GetValidMessages( view *proto.View, messageType proto.MessageType, isValid func(*proto.Message) bool, ) []*proto.Message GetExtendedRCC( height uint64, isValidMessage func(message *proto.Message) bool, isValidRCC func(round uint64, msgs []*proto.Message) bool, ) []*proto.Message GetMostRoundChangeMessages(minRound, height uint64) []*proto.Message // Messages subscription handlers // Subscribe(details messages.SubscriptionDetails) *messages.Subscription Unsubscribe(id messages.SubscriptionID) }
Messages represents the message managing behaviour
type Transport ¶
type Transport interface { // Multicast multicasts the message to other peers Multicast(message *proto.Message) }
Transport defines an interface the node uses to communicate with other peers
type ValidatorBackend ¶
type ValidatorBackend interface { // GetVotingPowers returns map of validators addresses and their voting powers for the specified height. GetVotingPowers(height uint64) (map[string]*big.Int, error) }
ValidatorBackend defines interface that has GetVotingPower
type ValidatorManager ¶
type ValidatorManager struct {
// contains filtered or unexported fields
}
ValidatorManager keeps voting power and other information about validators
func NewValidatorManager ¶
func NewValidatorManager(backend ValidatorBackend, log Logger) *ValidatorManager
NewValidatorManager creates new ValidatorManager
func (*ValidatorManager) HasPrepareQuorum ¶
func (vm *ValidatorManager) HasPrepareQuorum(stateName stateType, proposalMessage *proto.Message, msgs []*proto.Message) bool
HasPrepareQuorum provides information on whether prepared messages have reached the quorum
func (*ValidatorManager) HasQuorum ¶
func (vm *ValidatorManager) HasQuorum(sendersAddrs map[string]struct{}) bool
HasQuorum provides information on whether messages have reached the quorum
func (*ValidatorManager) Init ¶
func (vm *ValidatorManager) Init(height uint64) error
Init sets voting power and quorum size
type Verifier ¶
type Verifier interface { // IsValidProposal checks if the proposal is valid IsValidProposal(rawProposal []byte) bool IsValidValidator(msg *proto.Message) bool // IsProposer checks if the passed in ID is the Proposer for current view (sequence, round) IsProposer(id []byte, height, round uint64) bool // IsValidProposalHash checks if the hash matches the proposal IsValidProposalHash(proposal *proto.Proposal, hash []byte) bool // IsValidCommittedSeal checks // if signature for proposal hash in committed seal is signed by a validator IsValidCommittedSeal(proposalHash []byte, committedSeal *messages.CommittedSeal) bool }
Verifier defines the verifier interface