One of the key characteristics of a blockchain is the fact that transactions cannot be reversed or altered. Once data is written into the history, it’s there for good. This is known as “immutability”.

In an economic system, immutability is highly important. It’s what allows users to trust that whatever they do with their own money won’t be tampered with. Think of it this way: you wouldn’t trust your bank if it would, for some reason, edit your transaction history.

Since a blockchain is completely decentralized, those assurances need to be built into the system itself.

Most people assume that if you send a Bitcoin transaction to the network, there is no way it could be reverted… but is there?

There is actually a quirk in this mechanism. But to understand it, we need to dive deeper into how blocks are created.

How are blocks created?

In Bitcoin, Ethereum and pretty much any cryptocurrency that relies on Proof-of-Work mining, block creation is a contest where every miner is trying to be the first to “find” the next block. This is because when they “find” a block, they’ll get the reward that comes with it.

Miners invest their computing power and hardware into solving a complex cryptographic puzzle. Whoever finds the first valid solution gets to create a valid block and notify the rest of the network about it.

Every other miner will eventually receive the newly created block. The block will include the solution that was found to the puzzle, and every other miner will validate it to make sure it’s a legitimate solution.

This puzzle is built in a way that makes it:

Hard to solve: Miners have to dedicate large amounts of computational resources to solve the puzzle;

Miners have to dedicate large amounts of computational resources to solve the puzzle; Easy to verify: It is very simple for other miners to check that a given solution is valid.

If a block is valid, everyone else will accept it as block number X (with X being whatever the next block number should be), and resume work to find block number X+1.

And the cycle begins again…

Block propagation latency

Despite what it may look like for us mere mortals, transmitting information between two computers via the Internet is not an instantaneous process. Messages take time to travel the Internet infrastructure. On a digital scale, the milliseconds that this may take are actually relevant.

When a block is found by a given miner, it has to be propagated to everyone else on the network. This works with a mechanism usually called Gossip, which operates pretty much as the name would suggest. Everyone who receives a message will relay it to all of its immediate neighbors, who then do the same. Eventually, the message will have reached everyone.

This process takes time. It can be on the scale of a few seconds, or even less. This is one of the reasons why blocks only occur every few seconds, or minutes. Everyone in the network needs to have time to catch up to the latest news.

Block conflicts

As in everything else in life, sometimes conflicts may arise. It can happen (and it often does) that two miners create a valid block around the same time, before knowing about each other’s newly created block.

Blockchains are ready to deal with this. If two different miners start sharing a new block they found, the collective system needs to choose one of them as the actual next block, and discard the other. This takes some time, though.

The system will temporarily keep the two blocks in its records. There will be a temporary fork in the network, and each node will end up trying to follow one of the two sides (it’s up to them to decide which one, but for all intents and purposes, this is a random choice).

Eventually, one of the sides will create block X+1 before the other one. At that point, one of the two sides is larger, and it will end up being promoted as the main chain, with all blocks from the losing side being discarded.

It may happen that block X+1 is also created simultaneously for both sides of the fork. But this is exponentially less likely to happen. And if this happens, the same decision process will work with block X+2, and so on.

The important thing to note here is the exponentially less likely part. This means that there is a point at which you can be 99.999% sure that a fork will be resolved because one of the two sides will eventually be larger than the other.

This brings us to the last concept of this post:

Finality

the fact or impression of being final and irreversible.

In blockchain terms, finality is reached when you can be sure that whatever transaction you have submitted will stay there for good. It won’t be reverted, it won’t be discarded by the miners, and it won’t be susceptible to most kinds of attack vectors (short of a full-scale apocalypse, probably).

100% finality is never quite reached, in the purely mathematical sense. But 99.99999% certainty is the same, in practical terms.

For Bitcoin, finality is usually reached after 6 confirmations (that is, 6 blocks after the one containing your transaction). For Ethereum, the value used is usually around 30. These numbers can be increased for high-risk transactions or critical systems. It all depends on context.

These numbers are not set in stone. They’re just an approximation of what the community agrees to be “safe enough,” given the way that specific blockchain works.

This is why you should be on the lookout for any potential trickery that may be played on you with these mechanisms. Simply because you just received a transaction, that doesn’t mean it’s final already. Malicious sources with enough resources can easily manipulate these technical details to take advantage of the less-informed users. Or even more trivially, they can exploit your lack of knowledge about finality to make you trust a transaction sooner that what would be deemed safe.

What does this mean for me, a regular user?

In short, it means you can now understand (hopefully) why your blockchain transactions are not instant, and instead most services take some buffer time before confirming your funds.

When using an escrow system, or a managed wallet such as the UTRUST Wallet, transactions can happen immediately. Payments made through our wallet are processed off-chain by the platform, with the actual settlement to the merchant happening on-chain at a later stage.

Relying directly on the blockchain would mean that you’d have to worry about these details yourself. Instead, UTRUST handles all of these complexities for you, making your payments as simple as they should be.