Lessons 1/4 · 15 min
What does "final" mean?
A payment that vanishes
Kofi sells phones in Douala. A customer sends him 500 units on a blockchain (fictitious figures). A few minutes later the payment shows in Kofi's wallet, inside a brand-new block. He hands over the phone. An hour later the payment is gone from the chain: the block containing it was abandoned by the network. There was no bug. Kofi took "seen in a block" for "final". They are two different things.
The words, one by one
- Block: a batch of transactions that the network accepts together. Each block contains the hash of its parent (workshop 104), which forms a chain.
- Fork: two different blocks naming the same parent. A common, honest cause: two proposers produce a block almost at the same time, and network latency (workshop 107) stops each from seeing the other in time.
- Fork-choice rule: the rule each node applies to name the "tip" of the chain it follows. Every node applies the same rule, but they do not necessarily see the same blocks at the same instant.
- Reorganisation (reorg): a node abandons its current branch for another one its rule judges better. The abandoned blocks become stale blocks (often called "orphans" in everyday usage). Their transactions go back to waiting, unless the new branch already contains them (you will meet that waiting queue, the mempool, in workshop 110).
- Finality: the point after which a block will no longer be reverted, under stated assumptions.
Two kinds of finality
Probabilistic finality: the more blocks are stacked on top of yours, the less likely a competing branch replaces it. The probability falls with each block, but it is never exactly zero. This is Bitcoin's case.
Deterministic finality: the protocol contains an explicit step that declares a block finalised. After that step, reverting the block requires breaking the protocol's security assumption (for example "more than one third of validators act maliciously"). This is the case of BFT protocols such as Tendermint/CometBFT.
| Question | Probabilistic | Deterministic |
|---|---|---|
| When is it "final"? | When the risk becomes negligible for you | When the protocol declares it |
| Nature of the guarantee | A probability that decreases | All-or-nothing, under an assumption |
| Who sets the risk level? | The receiver (how many confirmations to wait) | The protocol |
Worked example: counting confirmations
A transaction enters the block at height 800. While block 800 is the tip, it has 1 confirmation. When the tip is block 805, it has 6 (block 800 and the five after it). A confirmation is simply the number of blocks, its own included, at the end of the branch that contains the transaction. The number "6" used for Bitcoin is a widespread habit, not a protocol rule: each receiver picks a threshold according to the value at stake.
What this does NOT guarantee
- Deterministic finality is not unconditional: if the assumption (for example "fewer than one third faulty") is false, the guarantee falls.
- "Finalised" says nothing about the real world: a finalised payment is still a payment sent to the wrong address if you made a mistake.
- The word "finalised" shown by a node reflects what that node has seen. An eclipsed node (workshop 107) can show you a false version of the chain.
Recap
A block is a proposal; finality is a judgement about the risk of it being replaced. Probabilistic: the risk decays. Deterministic: the protocol reduces it to a stated assumption.
