10 ms·
Ok, here's what happened and what it means. Bitcoin is built on a chain of blocks, each of which contains a set of transactions, the hash of the previous block,
by jimrandomh 14y ago
Ok, here's what happened and what it means. Bitcoin is built on a chain of blocks, each of which contains a set of transactions, the hash of the previous block, and a cryptographic proof-of-work which takes a lot of computing power to construct. Whichever block-chain is highest (that is, has the most total computing power invested in it) is considered valid, and has more blocks added to it by miners. People "mine" by taking outstanding transactions, writing them into a block together with the hash of the current highest-numbered block, performing cryptographic proof-of-work and publishing their new block.
A block was mined (by the Slush mining pool) which is accepted as valid by 0.8 clients, but rejected by 0.7 clients. More than half of the mining power was on 0.8, so the longest chain includes this block - but the 0.7 clients reject it, and have built a side-chain. The developers have asked all miners and mining pools to switch from 0.8 to 0.7, so that the 0.7 chain will grow to be longer than the 0.8 chain; once this happens, all Bitcoin clients will agree that it is the real one. In the meantime, however, merchants running Bitcoin 0.8 may be targeted by double-spend attacks: if they receive money in a transaction that exists only in the 0.8 blockchain, the same money is spent in a different way on the 0.7 blockchain so the transaction can't just be copied over, and they act on the receipt of money by sending goods before the situation is resolved, then they could lose money. This is why MtGox has suspended Bitcoin deposits. (This can only happen if the coins were sent by someone who is using malicious, nonstandard software; transactions made by honest users will be copied to the 0.7 fork and mined without any issue.)
The height of the two chains can be monitored at https://coinbase.com/network/blocks https://coinbase.com/network/blocks . Currently the 0.7 chain is 13 blocks behind, which (since the normal mining rate is 6 blocks per hour) sets a lower bound of about two hours on resolution - assuming everyone switches their mining power immediately - but realistically it will probably be more like 6-12 hours.
- rorrr 14y agoI don't understand why 0.7 gets the preference though, considering that it's the version with the DB bug in it.
- waterlesscloud 14y agoBecause it won't generate blocks that 0.8 won't accept, and 0.8 does generate blocks that 0.7 won't accept. This is a quick fix to get the system back on its feet while they figure out the longer term strategic answer.
- w1ntermute 14y agoWho is "they"? Is there a central authority in charge of BTC? I thought part of the advantage of it was that there wasn't.
- kinghajj 14y agoExactly, no-one is forcing the miners to do this. The 0.8 miners could decide to keep that branch alive, and if it stays longest, then the "central committee" would be SOL and just have to accept it.
- waterlesscloud 14y ago"They" is the dev team for the main client. They don't (can't) rule with an iron fist, but they have a lot of good will with the community, so most will listen to them. EDIT- The good/bad news is that since most mining (and thus transaction verification) has consolidated into large pools of machines, only a few people have to agree with "them". So in a sense, there is a central committee of people who run the large mining pools that does have a fair amount of power.
- gojomo 14y agoYes, you could say that ultimately the miners rule which blockchain grows, but have strong reasons to defer to the judgement core developers. Even though the pool operators have large discretion, the computational power that makes up their pools can be moved elsewhere... a little like a transferable proxy. Most smaller miners probably trust the pools who they've grown confident in... but a large enough controversy or campaign could conceivably shift the mining-power away from pool operators who make unpopular decisions.
- teebs 14y agoDo we know why the block was only accepted by 0.8 clients? Were 0.8 clients wrong in accepting it, or were 0.7 clients wrong in rejecting it?
- ewillbefull 14y ago0.8 and 0.7 have different databases (LevelDB and BDB respectively). The 0.7 database doesn't accept some high-volume blocks under certain conditions (not 100% sure what those conditions are, that's for the devs to fix now). As a result, the chains forked when an 0.8 node mined a block 0.7 could not handle. Everyone followed proper behaviors, it's just a compatibility problem. So miners should resort to 0.7 until 0.8 can prevent a fork like this from happening again.
- jimrandomh 14y agoThe block exceeded a size limit in the Berkeley DB storage that the client uses to store the blockchain. By the spec, 0.7 is wrong to reject it.
- sturmeh 14y agoIndeed. They do not need everyone to stop using 0.8, just a majority (so that the 0.7 chain becomes the strongest). You would need to get everyone to stop using 0.7 (or much more than a majority, or as soon as another block of this kind resurfaces the clients would be useless again). 0.8 accepts blocks that 0.7 rejects, 0.8 does not reject any blocks that 0.7 accepts. So 0.7 is more compatible going forward until the problem is solved with 0.9 etc.
- jnxfgf456 14y agoOh my God, BC uses BDB? I had no idea! Oh it's just such a... such a sadness.
- nullc 14y ago0.8 clients were wrong to accept it, because doing so caused a failure of consensus. Unfortunately the limit that was hit (which isn't quite as simple as 'size') was implicit in BDB and how Bitcoin prior to 0.8 used BDB. So no one was aware of it. Extensive testing during 0.8 turned up several consensus breaking issues that were created during the database switch out, and very large blocks were tested... but the particular kind of very large block required to reveal this difference in behavior was not.
- gojomo 14y agoSo at least (13 blocks x 25btc * $40/btc =) $13,000 in block rewards miners thought they had -- and possibly more -- will be reassigned into the favored chain's winners.
- lambda 14y agoThis is part of why it takes much longer for mining rewards to be confirmed than other payments. Since most people mine as part of pools these days, it probably doesn't matter too much. The average rate for the pool won't be affected too much (though I suppose pools which have been on the 0.8 block chain will hurt a little bit). There may be a one or two individuals who have mined a block and lose out by this, but if so, they were rolling the dice anyhow by mining outside of a pool; you can't expect a consistent income by mining over a span of 13 blocks.
- makomk 14y agoMost pools pay out as soon as the block is mined, or at most one or two blocks later, and pay for any blocks that are later reorganized out of the chain from their own pockets. I fully expect to see several pools fail and take some or all of their miner's funds with them as a result of this incident.
- swhitt 14y agoMost pools don't distribute funds to their users until 120 confirmations have been reached so none of the coin that they mined will show up in their users' accounts. The only way this could cause problems is if the pool's maintainer is somehow still mining on the 0.8 branch which would not happen as the 0.7 branch blockchain has surpassed it in length. If you are solo-mining and you found a block on the 0.8 branch of the fork, the standard client prevents spending newly minted coin with less than 120 confirmations. It will be the same as what happens when you get any other orphaned block, the funds will just disappear.
- ragmondo 14y agobzzt wrong. Most pools payout only after 100-120 blocks after the block they have mined is built upon by other miners (they go via an "estimate" then "unconfirmed" stage first). Additionally, the biggest mining pools either 1) only pay out their slave-miners after these confirms or 2) factor this in to their PPLNS slaves as a mining pool cost. Either way, you can bet they have enough in reserves to cover a small number of orphaned blocks. There will be no pools that fail after this event and I am prepared to bet on this.
- joshaidan 14y ago"The developers have asked all miners and mining pools to switch..." In the grand scheme of things, how much control over bitcoin do the developers have? My understanding of bitcoin is that there is no central authority controlling it like a central bank, but this statement almost implies that the developers have some kind of control, or influence at least, over bitcoin.
- achalkley 14y agoIt's in the miners best interest to work for the bitcoin economy as a whole since their coins value depend on a coherent response to these types of black swan events.
- dragontamer 14y agoIts in the banker's best interest to work for the US Economy as a whole, since their money and investments depend on the valid repayment of subprime mortgages.
- icebraining 14y agoI don't want to start an argument here, but that's not true; the banks' (i.e., shareholders') money depended on the US Economy. The bankers' money (salaries and bonuses) got paid even after the crisis. The bankers were playing with other people's money, not their own.
- dyno12345 14y agoThe finance industry went through a huge contraction during the crisis. It was not smooth sailing on some sweet government money.
- icebraining 14y agoSure, they fired a lot of employees, but I wasn't exactly talking about the branch managers or salaried analysts when I said bankers. The Lehman Brothers executives still paid themselves $100M three days before the bankrupcy, and the others weren't exactly on ramen noodles either.
- tlrobinson 14y agoNow 8 blocks behind.
- rubyrescue 14y agogreat comment. update - they have resumed deposits.