  First-generation blockchains provide probabilistic finality: a block can be
revoked, albeit the probability decreases as the block sinks deeper into the
chain. Recent proposals revisited committee-based BFT consensus to provide
deterministic finality: as soon as a block is validated, it is never revoked. A
distinguishing characteristic of these second-generation blockchains over
classical BFT protocols is that committees change over time as the
participation and the blockchain state evolve. In this paper, we push forward
in this direction by proposing a formalization of the Dynamic Repeated
Consensus problem and by providing generic procedures to solve it in the
context of blockchains. Our approach is modular in that one can plug in
different synchronizers and single-shot consensus instances. To offer a
complete solution, we provide a concrete instantiation, called Tenderbake, and
present a blockchain synchronizer and a single-shot consensus algorithm,
working in a Byzantine and partially synchronous system model with eventually
synchronous clocks. In contrast to recent proposals, our methodology is driven
by the need to bound the message buffers. This is essential in preventing
spamming and run-time memory errors. Moreover, Tenderbake processes can
synchronize with each other without exchanging messages, leveraging instead the
information stored in the blockchain.
