Dusk Succinct Attestation (SA) Consensus Protocol
Overview $DUSK
Succinct Attestation is a permissionless, committee-based proof-of-stake consensus protocol designed specifically for financial applications requiring fast, deterministic finality. The protocol is run by all stakers (called "provisioners") who are responsible for generating, validating, and ratifying new blocks.
Key Components
Provisioners: Participants who have staked DUSK tokens. To be eligible:
Must have a pre-configured amount of DUSK locked as stake
Stake must have maturity of at least two epochs
Deterministic Sortition: An algorithm that extracts provisioners non-interactively based on their stakes—the higher the stake, the more likely they are to be selected for consensus participation.
Voting Credits: A fixed number (64 credits) assigned among provisioners to form committees for each consensus phase.
Consensus Process
Each consensus operates in rounds, with each round adding a new block. Rounds proceed through iterations (maximum 255), with each iteration attempting to generate and reach agreement on a candidate block.
Three Main Phases per Iteration:
Proposal Phase: A pseudo-randomly selected provisioner generates a candidate block
Validation Phase (two rounds): Committees vote on the block's validity
Ratification Phase: Final committee votes to accept or reject the block
How It Works
Committee Selection: For each phase, the deterministic sortition algorithm extracts provisioners to form committees. Each committee is assigned 64 voting credits distributed among selected provisioners.
Voting Process:
Committee members cast digitally-signed votes
A supermajority of votes is required for consensus
All nodes collect votes from the network until supermajority is reached
Iteration Outcomes:
If supermajority is reached, the block is added to the blockchain
Results are certified with an attestation containing all committee votes
If iteration fails, a new iteration begins with different provisioners
The last iteration (255) produces an emergency empty block to ensure the round completes
Block Finality States
Accepted: Block reached consensus but at iteration higher than 0, and not all previous iterations have Failed Attestation. Can potentially be replaced by a lower-iteration block.
Attested: Block has Valid quorum AND all previous iterations have Failed Attestation. Cannot be replaced. Blocks reaching quorum at iteration 0 are automatically Attested.
Fork Resolution
Due to network asynchrony, multiple blocks can reach consensus in the same round (different iterations), creating forks. The protocol handles this through the attestation system and finality rules.
Network Infrastructure
The protocol uses Kadcast, a structured peer-to-peer protocol that optimizes message exchange between nodes. Unlike traditional Gossip protocols, Kadcast uses structured overlay for directed message flow, drastically reducing bandwidth and improving latency predictability.
Economic Incentives
Reward Distribution:
70% to Block Generator (proposal step)
Extra 10% based on credits included in certificate
Undistributed rewards are burned
This structure incentivizes all consensus steps while focusing rewards on the Block Generator role.
Technical Implementation
The SA implementation consists of two main tokio-rs tasks:
Main_Loop: Executes contract storage calls, stores/retrieves candidate blocks, performs all three reduction steps, produces and broadcasts Agreement Messages
Agreement_Loop: Retrieves candidate blocks when winner hash is selected, verifies and accumulates Agreement messages, processes Aggregated Agreement
Advantages
Fast finality: Near-instant settlement suitable for financial markets
Permissionless: Any eligible participant can join
Scalable: Can scale to millions of nodes without compromising finality
Deterministic: Provides statistical finality guarantees
Efficient: Reduced network overhead through Kadcast protocol
For the most detailed technical specifications, you can reference Section 3 "Consensus mechanism" of the Dusk Whitepaper (2024) or visit their GitHub repository at github.com/dusk-network/dusk-protocol.#dusk @Dusk
