Bitcoin Guarantees Strong, Not Eventual, Consistency
hackingdistributed.com
hackingdistributed.com
Nakamoto Consensus (used by Bitcoin and others) never reaches consensus finality, i.e. a point in time when you can be sure that consensus has been achieved. All you can do is estimate the probability that a block is in the final chain.
That said, Nakamoto Consensus has some really nice properties compared to classical consensus algorithms. For example, most "classical" BFT consensus algorithms have a worst-case message complexity of O(N^2) (or in some new highly-academic algorithms O(N polylog(N))). Nakamoto Consensus, in contrast, has O(N) worst-case message complexity. That's what enables Bitcoin (and the like) to scale so nicely to thousands of nodes.
Of course, if you're building a permissioned ledger with 25 nodes, that's irrelevant; the classical algorithms will work fine.
There's more discussion of this in the SCP paper: Luu, Loi, Viswesh Narayanan, Kunal Baweja, Chaodong Zheng, Seth Gilbert, and Prateek Saxena. "SCP: A Computationally-Scalable Byzantine Consensus Protocol For Blockchains."
Of course, this comparison is not really fair because Lamport BFT achieves deterministic consensus, where as, bitcoin only gives probabilistic consensus.
I hope there is room for Deterministic BFT with <50% malicious actors.
> or in some new highly-academic algorithms O(N polylog(N))
Could you point me to this algorithm? I am not aware of any BFT solution other Lamport BFT.
The SCP paper points to several BFT protocols with message complexity of O(N polylog(N)), e.g. [2]
[1] Miguel Castro and Barbara Liskov. Practical byzantine fault tolerance. In Proceedings of the Third Symposium on Operating Systems Design and Implementation, pages 173–186. USENIX Association, 1999.
[2] Valerie King, Steven Lonargan, Jared Saia, and Amitabh Trehan. Load balanced scalable byzantine agreement through quorum building, with full information. In MarcosK. Aguilera, Haifeng Yu, Nitin H. Vaidya, Vikram Srinivasan, and RomitRoy Choudhury, editors, Distributed Computing and Networking, volume 6522 of Lecture Notes in Computer Science, pages 203–214. Springer Berlin Heidelberg, 2011.
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.
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.
(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.)
Apparently it is up to you how you want to interpret the use of "strong" or "eventual" here.
The other thing the probabilistic discussion skirts is that even with an exponentially small probability, you need to wait inconveniently long. A Ω value of 6 corresponds to 1 hour. To get down to "alpha particle" levels of probability you've got a much longer wait.
Anyone not using Satoshi's 6 confirmation rule is No true Scotsman.
No statistics are done on actual, real-life blockchain orphans to prove his claims.
Similar for the mining algorithm itself; memory-bound algorithms decrease mining centralization because ASICs become less useful.
Sounds kind of like this was written to a certain audience that is in a bubble wrt the wider field.
This guy obviously doesn't understand what he is talking about. I would more probably remine the whole bitcoin blockchain on my cpu in a second than this thing happens.