Also, apart from all that, I think several separate chains would actually improve bitcoin, even if they all follow the same rules. Transactions get split up between the chains and each network has less overhead for one thing.
Dude, several chains would make things super confusing. Bitcoin is already hard enough to understand for new people, do you want them to have to learn how to segregate different chains as well?
It's already pretty easy. Just run a client/version of a client that is incompatible with the chains you don't want. So if 99% of the hashing power makes 0.8 blocks after May 15 but there's still 1% left making an 0.7 compatible chain all the 0.7s will tune to the second blockchain automatically. At least that's my understanding.
Except it's already done. The vast majority of the mining pool hashpower has already switched. The miners flushed somewhere between $500-$1000 of mining revenue down the toilet to buy time for people to update in a more orderly fashion, you can be pretty sure they won't do it again. Miners won't risk being on the wrong side of a fork.
When a miner with nefarious figures out that they can knock the un-upgraded miners off the main block chain by deliberately creating one of these blocks and that they'll get a larger share of the mining rewards as a result.. *somebody* will do it. It's just a question of when. It probably won't fly before may 15th, but it'll be game-on after then.
I think there's an agreement between everyone involved that the pools won't make 0.7 incompatible blocks until May 15. I was just saying that technically what the announcement said wasn't true.
It's more than the pools though. You don't have to be a pool to generate a bdb-killer block. If you look at the 0.8.1 patch (which the big pools are running), they are rejecting blocks with more than 4500 transaction references. This is lower than what the 0.7's could handle which was somewhere around 4800-4900. The irony here is that if somebody makes a valid block with 0.7 that had 4700 references, it'll be rejected by > 51% of the hashpower due to the 0.8.1 may 15 restriction even though it would have worked with all existing 0.7 installations.
Remember, you don't have to be a pool to generate blocks. I could have an avalon, or I could get lucky with my gpu miner and a tweaked bitcoind that tried to gather up as many SatoshiDice transactions as possible in order to break 4800-4900 or so. If I could figure a financial advantage in knocking 10% of the miners off the main chain and I got lucky, then I could do it. Anyone can do it so long as it is a valid block and meets the rules of > 51% of the hashpower.
The bigger problem is that for some clients it might be 4911, and others 4850, or it might change to 4870 after a restart.. The limit is determined by internal state of 3rd party library code, not the bitcoin code rules. Simply running 0.7 isn't enough of a "is it valid?" test. Suppose I wanted to knock off just the 4850 and 4870 nodes? I could generate a block (if I was lucky with mining) that would fork off those guys and leave the 4911 nodes on the chain for a bit longer.
It is this level of non-determinism in old clients that is the problem.
The only thing that is preventing mischief right now is that the bulk of the hashpower switched to 0.8.1 already. If they were running 0.7 or earlier, a malicious pool (or a lucky person) could generate blocks to split them up.
Because bitcoind 0.7 can be configured generate a valid block that can cause other bitcoind 0.7 instances to overflow their lock tables and drop the valid block.
Why would anyone generate such a block ?
If I was a miner and wanted to knock 10-20% of my competition off the chain so I got a bigger slice of the pie? Maybe I was USGOV trying to undermine bitcoin confidence? Maybe somebody trying to just cause trouble.. If it can be done, somebody will do it.
Anyway, the train has already left the station. If you want to be certain of being able to get confirmations on the main chain after may 15th, you have to do *something* before then.