  Permissioned blockchains employ Byzantine fault-tolerant (BFT) state machine
replication (SMR) to reach agreement on an ever-growing, linearly ordered log
of transactions. A new paradigm, combined with decades of research in BFT SMR
and blockchain (namely chained-BFT, or cBFT), has emerged for directly
constructing blockchain protocols. Chained-BFT protocols have a unifying
propose-vote scheme instead of multiple different voting phases with a set of
voting and commit rules to guarantee safety and liveness. However, distinct
voting and commit rules impose varying impacts on performance under different
workloads, network conditions, and Byzantine attacks. Therefore, a fair
comparison of the proposed protocols poses a challenge that has not yet been
addressed by existing work.
  We fill this gap by studying a family of cBFT protocols with a two-pronged
systematic approach. First, we present an evaluation framework, Bamboo, for
quick prototyping of cBFT protocols and that includes helpful benchmarking
facilities. To validate Bamboo, we introduce an analytic model using queuing
theory which also offers a back-of-the-envelope guide for dissecting these
protocols. We build multiple cBFT protocols using Bamboo and we are the first
to fairly compare three representatives (i.e., HotStuff, two-chain HotStuff,
and Streamlet). We evaluated these protocols under various parameters and
scenarios, including two Byzantine attacks that have not been widely discussed
in the literature. Our findings reveal interesting trade-offs (e.g.,
responsiveness vs. forking-resilience) between different cBFT protocols and
their design choices, which provide developers and researchers with insights
into the design and implementation of this protocol family.
