Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This was only possible because of an obscure bug in a database library used by the reference client, which the developers are in the process of migrating away from. The latest 0.8-beta release inadvertently caused a size restriction on some part of the block structure to be loosened. Since the majority of the network's mining power had upgraded, older clients wouldn't accept these blocks, and the blockchain diverged, with 0.7 and 0.8 each on a different fork, seeing an inconsistent view of recent transactions. Miners were quickly contacted and asked to downgrade to 0.7, and once the 0.7 chain caught up with the 0.8 chain, the network resolved the problem and the view of transactions became consistent again.

One of his transactions was on the 0.8 chain (during its short life, and the other was on the 0.7 chain. So it's better to think of it as a transaction being invalidated rather than double-spent, because in the end there were no outputs that didn't come from an input.

This was only possible to to extraordinary circumstances, and as long as the majority of the network is running software that plays by the same rules, this kind of thing isn't possible.



One of his transactions was on the 0.8 chain (during its short life, and the other was on the 0.7 chain. So it's better to think of it as a transaction being invalidated rather than double-spent, because in the end there were no outputs that didn't come from an input.

This is using semantics to try to minimize the severity of what happened. For a time, the world thought there were more bitcoins in circulation than there actually were. Someone thought they were holding BTC which turned out not to exist, since after the chains were merged, those extra BTC just ceased to exist.

That isn't a big deal if both sets of BTC were sitting in a holding account somewhere. On the other hand, it IS a big deal if (as is the case in most financial transactions), the parties exchanged another item of value (say, $1000 cash) in return for receiving each BTC transaction. One of those parties now has -$1000 and zero BTC to show for it.


>as long as the majority of the network is running software that plays by the same rules, this kind of thing isn't possible

Isn't this against the idea of decentralization?


Not at all, rather it is the key that makes decentralization possible.

The reason bitcoin can be decentralized is that ultimate authority comes, not from a central server, but from a consensus among the community of bitcoin processors and miners. The cryptography just enforces the consensus. In other words, ANYONE could write their own blockchain... even one that showed everyone else in the world giving all their money that person. It's just that no one would pay any attention to that blockchain... we'd all be working off the consensus view.

This is also why bitcoin is resistant to being controlled by "the authorities", but not immune to it. If someone controlled over 50% of the compute power that's doing mining and processing payments, they could change the system and "fix" the numbers. The fact that it is decentralized is a defense against this because (hopefully) no one entity controls a significant portion of the compute power.


HTTP is decentralised


Anything of value on the end of an HTTP transaction has some centralization, such as bank accounts, Amazon.com, or other things that involve real money.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: