Permissioned Blockchain Through the Looking Glass: Architectural and Implementation Lessons Learned
Suyash Gupta, Sajjad Rahnama, Mohammad Sadoghi

TL;DR
This paper demonstrates that a well-designed permissioned blockchain system using classical BFT protocols can outperform modern protocols, emphasizing the importance of system architecture and implementation details for achieving high throughput.
Contribution
The paper introduces ResilientDB, a high-throughput permissioned blockchain system that leverages classical BFT protocols with multi-threaded deep pipelines, challenging assumptions about protocol complexity and performance.
Findings
ResilientDB achieves higher throughput than comparable systems.
Multi-threaded deep pipelines significantly improve performance.
Classical BFT protocols can outperform modern protocols with proper design.
Abstract
Since the inception of Bitcoin, the distributed systems community has shown interest in the design of efficient blockchain systems. However, initial blockchain applications (like Bitcoin) attain very low throughput, which has promoted the design of permissioned blockchain systems. These permissioned blockchain systems employ classical Byzantine-Fault Tolerant (BFT) protocols to reach consensus. However, existing permissioned blockchain systems still attain low throughputs (of the order 10K txns/s). As a result, existing works blame this low throughput on the associated BFT protocol and expend resources in developing optimized protocols. We believe such blames only depict a one-sided story. In specific, we raise a simple question: can a well-crafted system based on a classical BFT protocol outperform a modern protocol? We show that designing such a well-crafted system is possible and…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
