Documentation
¶
Overview ¶
Package consensus provides consensus infrastructure for the Lux node.
Terminology ¶
This package uses "Vote" as the semantic name for validator responses to block proposals. On the network wire, votes are transmitted using the "Chits" message format for backwards compatibility.
Vote (wire format: Chits): A validator's agreement or preference for a specific block. The VoteMessage type wraps this semantic concept while the underlying protocol uses Chits.
Components ¶
The package contains several components:
Acceptor: Callback interface invoked before blocks are committed as accepted. Multiple acceptors can be registered per chain via AcceptorGroup.
Engine: Chain and DAG consensus engine interfaces located in the engine subpackage. The chain/vote.go file defines vote message types.
Quasar: Hybrid quantum-safe finality engine combining BLS aggregate signatures (classical) with Ringtail threshold signatures (post-quantum). Located in the quasar subpackage.
Quasar Consensus ¶
The Quasar engine achieves hybrid finality by running two signature paths in parallel:
- BLS Path: Fast aggregate signatures from 2/3+ validators
- Ringtail Path: Post-quantum threshold signatures (t-of-n)
Blocks achieve quantum finality only when both paths complete successfully.
See the quasar subpackage for detailed implementation.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Acceptor ¶
type Acceptor interface {
// Accept must be called before [containerID] is committed to the VM as
// accepted.
//
// If the returned error is non-nil, the chain associated with [ctx] should
// shut down and not commit [container] or any other container to its
// database as accepted.
Accept(ctx *consensuscontext.Context, containerID ids.ID, container []byte) error
}
Acceptor is implemented when a struct is monitoring if a message is accepted
type AcceptorGroup ¶
type AcceptorGroup interface {
// Calling Accept() calls all of the registered acceptors for the relevant
// chain.
Acceptor
// RegisterAcceptor causes [acceptor] to be called every time an operation
// is accepted on chain [chainID].
// If [dieOnError], chain [chainID] stops if Accept returns a non-nil error.
RegisterAcceptor(chainID ids.ID, acceptorName string, acceptor Acceptor, dieOnError bool) error
// DeregisterAcceptor removes an acceptor from the group.
DeregisterAcceptor(chainID ids.ID, acceptorName string) error
}
func NewAcceptorGroup ¶
func NewAcceptorGroup(log log.Logger) AcceptorGroup
Directories
¶
| Path | Synopsis |
|---|---|
|
engine
|
|
|
chain
Package chain provides chain consensus engine types and interfaces.
|
Package chain provides chain consensus engine types and interfaces. |
|
Package quasar provides hybrid quantum-safe consensus finality.
|
Package quasar provides hybrid quantum-safe consensus finality. |