  The popularization of blockchains leads to a resurgence of interest in
Byzantine Fault-Tolerant (BFT) state machine replication protocols. However,
much of the work on this topic focuses on the underlying consensus protocols,
with emphasis on their lack of scalability, leaving other subtle limitations
unaddressed. These limitations are related to the effects of maintaining a
durable blockchain instead of a write-ahead log and the requirement for
reconfiguring the set of replicas in a decentralized way. We demonstrate these
limitations using a digital coin blockchain application and BFT-SMaRt, a
popular BFT replication library. We show how they can be addressed both at a
conceptual level, in a protocol-agnostic way, and by implementing SMaRtChain, a
blockchain platform based on BFT-SMaRt. SMaRtChain improves the performance of
our digital coin application by a factor of eight when compared with a naive
implementation on top of BFT-SMaRt. Moreover, SMaRtChain achieves a throughput
$8\times$ and $33\times$ better than Tendermint and Hyperledger Fabric,
respectively, when ensuring strong durability on its blockchain.
