Authors:
Alexander Spiegelman, Neil Giridharan, Alberto Sonnino, Lefteris Kokoris-Kogias
Journal/Conference:
ACM CCS '22
Source:
https://arxiv.org/abs/2201.05677
Presentation material:
Abstract
We present Bullshark, the first directed acyclic graph (DAG) based asynchronous Byzantine Atomic Broadcast protocol that is optimized for the common synchronous case. Like previous DAG-based BFT protocols, Bullshark requires no extra communication to achieve consensus on top of building the DAG. That is, parties can totally order the vertices of the DAG by interpreting their local view of the DAG edges. Unlike other asynchronous DAG-based protocols, Bullshark provides a practical low latency fast-path that exploits synchronous periods and deprecates the need for notoriously complex view-change mechanisms. Bullshark achieves this while maintaining all the desired properties of its predecessor DAG-Rider. Namely, it has optimal amortized communication complexity, it provides fairness and asynchronous liveness, and safety is guaranteed even under a quantum adversary. In order to show the practicality and simplicity of our approach, we also introduce a standalone partially synchronous version of Bullshark which we evaluate against the state of the art. The implemented protocol is embarrassingly simple (200 LOC on top of an existing DAG-based mempool implementation (Narwhal & Tusk). It is highly efficient, achieving for example, 125,000 transaction per second with a 2 seconds latency for a deployment of 50 parties. In the same setting the state of the art pays a steep 50% latency increase as it optimizes for asynchrony.
Introduction
- Two problems of DAG-Rider based protocols
- optimize for the worst case asynchornous network assumption. do not take advantages of synchronous cases.
- assumming unbounded memory in order to preserve fairness.
- Provide fast path(partial synchronous) / slow path(asynchronous) by improving Tusk.
Recap
Challenges
(Theoretical)
- Asynchronous DAG-base BFT protocols annot guarantee derterministic liveness during synchronous periods.
=> adopt timeout during DAG contruction to get message from leader. - take advantage of a common-case synchronous network without sacrificing latency in the asynchronous worst case.
- Two types of votes: (1) 'steady-state' for the predefined leader in 1st and 3rd round, (2) 'fallback' for the random leader in 1st round
- To reduce latency in synchronous periods, the 3rd round of a wave has a predefined leader as well and it takes two rounds to commit a steady-state leader.
- A vertex's voting type is determined bywheter or not its source(the party that broadcasted it) commited a leader in the previous wave)
(Practical)
- Bounded memory implementation of Bullshark guarantees timely fairness only during synchornous. This means that after GST all messages by honest parties make it into the DAG in finite time and before garbage collection. For all the other mesages, use Tusks's approach of retransmission.
DAG construction
Bullshark
GC