Twins: White-Glove Approach for BFT Testing

04/22/2020
by   Shehar Bano, et al.
0

Byzantine Fault Tolerant (BFT) systems have seen extensive study for more than two decades, yet we lack a principled strategy for testing BFT implementations. This paper presents Twins, a new approach for testing BFT systems. The main idea of Twins is that we can emulate Byzantine behavior by running two (or generally up to k) instances of a node with the same identity. Each of the two instances (or Twins) runs unmodified, correct code. The Twins approach requires only a thin network wrapper that delivers messages to/from both Twins. To the rest of the system, the Twins appear indistinguishable from a single node behaving in a `questionable' manner. Twins generates `interesting' Byzantine behaviors, including equivocation, double voting, and losing internal state, while forgoing `uninteresting' behaviors that are trivially rejected by honest nodes, such as producing semantically invalid messages. Building on this idea, Twins can systematically generate Byzantine attack scenarios at scale, execute them in a controlled manner, and check for desired protocol properties. The paper demonstrates that Twins successfully reinstates several famous attacks on BFT protocols. In all cases, protocols break within fewer than a dozen protocol steps, hence it is realistic for the Twins approach to expose the problems. In two of these attacks, it took the community more than a decade to discover protocol flaws that Twins would have surfaced within minutes. Additionally, Twins testing was successfully incorporated into a production setting in which Twins executed 3M Twins-generated scenarios, and exposed (self-injected) subtle safety bugs within minutes of testing.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
10/14/2020

BFT Protocol Forensics

Byzantine fault-tolerant (BFT) protocols allow a group of replicas to co...
research
04/22/2019

Flexible Byzantine Fault Tolerance

Existing Byzantine fault tolerant (BFT) protocols work in a homogeneous ...
research
03/10/2023

A Domain Specific Language for Testing Consensus Implementations

Large-scale, fault-tolerant, distributed systems are the backbone for ma...
research
03/01/2021

Dissecting the Performance of Chained-BFT

Permissioned blockchains employ Byzantine fault-tolerant (BFT) state mac...
research
09/09/2019

Revisiting EZBFT: A Decentralized Byzantine Fault Tolerant Protocol with Speculation

In this note, we revisit EZBFT[2] and present safety, liveness and execu...
research
05/09/2022

The Bedrock of BFT: A Unified Platform for BFT Protocol Design and Implementation

Byzantine fault-tolerant protocols cover a broad spectrum of design dime...
research
02/18/2021

Embedding a Deterministic BFT Protocol in a Block DAG

This work formalizes the structure and protocols underlying recent distr...

Please sign up or login with your details

Forgot password? Click here to reset