Algorand’s Immediate Transaction Finality

With proof-of-work protocols like Bitcoin, in which users solve crypto puzzles, there is a chance that two users could solve for a valid block at the same time. When two nodes get a valid block simultaneously, the blockchain forks into two because different groups of users may see different candidates for the next block. A fork may persist for a while, and its branches may even be elongated by the addition of new blocks. But eventually, all branches but one (the longest) will die , and all the blocks in the dead branches will disappear. The transactions on the dead branches are considered invalid; they basically never happened.

Similarly, an adversary could partition the network, convincing different groups of users to accept different blocks at the same height in the blockchain. As a result, contradicting transactions will be accepted by different users, causing a fork in the chain. This allows the adversary to double-spend their money.

Forks are an unwelcome source of uncertainty and delay. If a payment made to you appears in the latest block added to the chain, you cannot immediately consider yourself paid. This is because a branch may overcome the current chain and your block may end up in a dead branch and disappear. Before considering yourself paid, you would need to wait for a sequence of blocks to be added to yours, so as to minimize the chance that the block containing your payment will end up on a dead branch. Some people recommend waiting for six blocks to be added after yours to be confident that your block will remain on the chain; others recommend an even longer wait if the payment made to you is sizable. So rather than waiting ten minutes (Bitcoin’s transaction time) to have reasonable confidence in the finality of a transaction, in reality you have to wait hours.

In contrast, the Algorand blockchain never forks. Two blocks can never be added to the chain at once because only one block can have the required threshold of committee votes. At most, one block is certified and written to the chain in a given round. Accordingly, all transactions are final in Algorand. When the consensus protocol decides on a block, this decision is never changed. Every honest user soon learns of this decision, and no honest user ever thinks that a different block at the same height was chosen. Once a block appears, users can rely on the transactions it contains immediately and they can be confident that the block will forever be part of the chain, which means the money they receive is safe.

And in the event of a network partition in Algorand, the adversary is never able to convince two honest users to accept two different blocks for the same round. This is true even when the partition may last for an indefinite amount of time and nobody knows when it will be resolved. Algorand’s chain never forks and users’ balances remain secure.