Hacker News new | ask | show | jobs
by jkire 3647 days ago
This really highlights the differences between trying to understand and formalise the theory behind distributed systems and trying to practically build and use distributed systems.

In a practical sense, bitcoin pretty much has the property of strong consistency. That is a useful thing for people to know and understand. However, none of the theory that applies to strongly consistent systems necessarily needs to apply to bitcoin, because bitcoin is not theoretically perfectly strongly consistent. This is also important for people to understand, as otherwise they may incorrectly assume that certain results apply to bitcoin, e.g. the CAP theorem, leading to confusion.

So, I really do believe it is important to differentiate between talking about the properties of distributed systems in a theoretical sense and talking about them in a practical sense. The current formalisations of distributed systems have mainly been built to understand the theoretical properties, which while can be useful as a starting point to understand the practical properties, its always important to note that distributed systems may have good enough approximations to useful theoretical properties for a particular use case.

2 comments

From the standpoint of a single transaction, Bitcoin is consistent eventually. It's certainly not consistent immediately. Only when the transaction has been accepted into the blockchain and many blocks built upon its block is it effectively irrevocable. Early in the transaction's life, it's still revocable.

(The people behind Satoshi Dice found this out the hard way. They accepted bets with zero confirmations. Someone realized they could cancel a losing bet after losing by double-spending. Oops.)

Exactly.

I think the greatest engineering feats, computational or otherwise, tend to be created by insight into what the actual requirements of a system are and whether they enable the use of previously-ruled-out classes of solutions.