Bitcoin’s Biggest Hack in History: 184.4B Bitcoin from Thin Air
hackernoon.com
hackernoon.com
https://en.bitcoin.it/wiki/Value_overflow_incident
A hard fork expands the range of valid transactions. A soft fork narrows that range.
Remember the book Javascript the good parts? It proposes that developers ignore certain language features that can cause trouble. The interesting thing about this approach is that all the code you write by following the book's guidelines will run on all existing runtimes. Your code is backward compatible.
Had the book advocated new language constructs, then those applying them would not be able to run their software on existing runtimes.
This difference is roughly comparable to the difference betweeen hard and soft forks.
Prior to the Bitcoin update, no check was made for overflow conditions. After the update, only transactions obeying a narrower set of rules involving an overflow check were considered valid.
A soft fork can be deployed by miners censoring blocks containing the transactions which are longer valid. Nodes that don't generate blocks need not update for they will never see the now invalid transactions. Miners need to update to avoid generating blocks that will be rejected by the network.
A hard fork requires even non-generating nodes to update, for they will need to determine the validity of blocks with transactions applying an expanded rule set.
Basically, a new version of Bitcoin Core software was released (v0.8) and only part of the network was running it. Then a block caused a divergence, where folks running v0.8 started mining on top of a different chain than the one mined by folks on v0.7. Amidst the chaos, 2 developers (Luke DashJr and Pieter Wuille), decided that miners should rollback to v0.7 and mine on top of the "v0.7" chain. Miners and other devs quickly fell in line.
One lesson gleaned from these two incidents (featured article and this one) is that centralized problem-solving clearly made these events less catastrophic than they would otherwise have been. If in 2013 there had been no leader to advise the crowd which chain Bitcoin should be, the divergence may have been permanent. And then people wonder why nowadays Bitcoin keeps forking, when history shows that strong leadership prevents persistent forks. A persistent chain fork is not a technical failure, it is a leadership failure.
This has happened multiple times in the past with Bitcoin, most recently with Bitcoin Cash vs. Bitcoin Core. The user-base is split, there is lots of propaganda on both sides. However the technical consensus yields a single chain (Bitcoin Core).
This is important because all other metrics such as choosing based on message boards, market cap, etc. can be more easily gamed.
As in if every one who uses bitcoin decided that changes suggested by leadership are wrong, and not in the best interest of the network, they choose not to update their client or they don't verify transactions containing the change?
- If there were more than one clients would this be an issue?
- If there were more than one clients and only one had the bug, would it still be a hard fork?
Similar to country sovereignty, these things are defined only by how most people define it. You can't just stand up and say you are now your own country, you need to get other countries, other people, to agree with you. But at the same time, if a country changes its name/laws/maps, it doesn't become a "new country", it just changes.
You can fork bitcoin, but unless most users and miners out there agree to call your fork "bitcoin", then it won't be bitcoin. But if "bitcoin" decides to radically change, and most people agree with the change, then it is still bitcoin, despite the differences.
(as an aside, anywhere I say "most people" here, you can replace that with "most hash power" or "most users" or any other metric you want. I'm not trying to speak to specifics, but more the overall idea)
The whole point of a blockchain is that there is no single authority that can unilaterally impose "law" by fiat. In practical terms, the software used by the majority of clients is "law", but it's entirely possible for forked and non-forked chains to coexist: for example, Ethereum Classic is a pre-fork version of Ethereum, and Bitcoin Cash is a fork of Bitcoin.
The simple answer is that this is a false dichotomy. A hard fork was necessary to fix this bug.
.u-tintBgColor {
background-color: rgb(255, 255, 255) !important;
}
It really is an awful header.Of course, if something like this happens today, I’m not sure the solution would be as simple as this…
In theory though this would definitely cause some chaos if something like this happened today, I don't know if it's enough to kill bitcoin but it would certainly drop the price. Most people only interact with bitcoin in a very abstract way through exchanges and don't understand enough of the details to care. If the exchange switched to the proper chain and everything appeared to be fine to the end user I don't think you'd see too many long term problems.
These systems are nothing like PayPal and Venmo and investing in ignorance is just asking for losses.
[…]
In short, whoever you may be,
To this conclusion you’ll agree,
When everyone is somebodee,
Then no one’s anybody!
– W. S. GilbertAny time anyone at all makes a big transaction, there are a bunch of posts about it on Reddit and Twitter, because everyone is watching all the time, and Bitcoin is easily auditable.
But! There are some coins that focus more on privacy, such as ZCash. And those coins are indeed vulnerable yo this situation. Maybe there is a secret transaction, that has already happened that massively increases supply. The coins can't be audited, so they are there.
This problem does not exist in auditable Blockchains though.
Why not? This is clearly a bug in the (reference) implementation, rather than a bug in the specification. An alternate implementation (in a safe language) would have caught this. This is different than say, a buggy smart contract, where all implementations will produce the same result.
Skipping over a few details, that means you send 92 billion to one address, 92 billion to another address, and the total overflows back under .5 bitcoins.
[1] https://bitcointalk.org/index.php?topic=822.msg9503#msg9503
Still it is also possible to revert transactions in Bitcoin if enough people agree. As demonstrated after this hack. The biggest collateral damage is in trust when this is demonstrated in vivo.
In this specific case, the only collateral damage would be if the attacker used the produced bitcoins to pay someone, and received something in exchange for this.
In this case, whoever sent the attacker something in exchange for the bitcoins, would stand empty-handed after these bitcoins ceased to exist.