  Classic Byzantine fault-tolerant consensus protocols forfeit liveness in the
face of asynchrony in order to preserve safety, whereas most deployed
blockchain protocols forfeit safety in order to remain live. In this work, we
achieve the best of both worlds by proposing a novel abstractions called the
finality gadget. A finality gadget allows for transactions to always
optimistically commit but informs the clients that these transactions might be
unsafe. As a result, a blockchain can execute transactions optimistically and
only commit them after they have been sufficiently and provably audited. In
this work, we formally model the finality gadget abstraction, prove that it is
impossible to solve it deterministically in full asynchrony (even though it is
stronger than consensus) and provide a partially synchronous protocol which is
currently securing a major blockchain. This way we show that the protocol
designer can decouple safety and liveness in order to speed up recovery from
failures. We believe that there can be other types of finality gadgets that
provide weaker safety (e.g., probabilistic) in order to gain more efficiency
and this can depend on the probability that the network is not in synchrony.
