Expand description
Ordered, reliable broadcast across reconfigurable participants.
§Concepts
The system has two types of network participants: sequencers and validators. Their sets may
overlap and are defined by the current epoch, a monotonically increasing integer. This module
can handle reconfiguration of these sets across different epochs.
Sequencers broadcast data. The smallest unit of data is a chunk. Sequencers broadcast nodes
that contain a chunk and a certificate over the previous chunk, forming a linked chain
of nodes from each sequencer.
Validators verify and sign chunks. These signatures can be combined to form a quorum certificate, ensuring a quorum verifies each chunk. The certificate allows external parties to confirm that the chunk was reliably broadcast.
Network participants persist any new nodes to a journal. This enables recovery from crashes and ensures that sequencers do not broadcast conflicting chunks and that validators do not sign them. “Conflicting” chunks are chunks from the same sequencer at the same height with different payloads.
§Pluggable Cryptography
The ordered broadcast module is generic over the signing scheme, allowing users to choose the cryptographic scheme best suited for their requirements:
-
ed25519: Attributable signatures with individual verification. HSM-friendly, no trusted setup required. Certificates contain individual signatures. -
bls12381_multisig: Attributable signatures with aggregated verification. Produces compact certificates while preserving signer attribution. -
bls12381_threshold: Non-attributable threshold signatures. Produces succinct constant-size certificates. Requires trusted setup (DKG).
§Design
The core of the module is the Engine. It is responsible for:
- Broadcasting nodes (if a sequencer)
- Signing chunks (if a validator)
- Tracking the latest chunk in each sequencer’s chain
- Assembling certificates from a quorum of signatures
- Notifying other actors of new chunks and certificates
§Acknowledgements
Autobahn provided the insight that a succinct proof-of-availability could be produced by linking sequencer broadcasts.
Modules§
- scheme
- Signing scheme implementations for
ordered_broadcast. - types
- Types used in crate::ordered_broadcast.
Structs§
- Config
- Configuration for the super::Engine.
- Engine
- Instance of the engine.