The Hard Fork Missile Crisis

As previously reported, Gavin Andresen proposed increasing the block size and later attempted to describe the economic and political implications of such a proposal. In both instances he was met with furious backlash from the community.

Today Gavin posted on his personal blog an article titled "Looking before the Scaling Up Leap", stating "My goal is to prove that it is safe to raise the maximum block size from 1MB to at least 20MB" along with "I'll argue we should schedule a hard fork." Reddit soon blindly praised Gavin for his work, with comments such as "Fork it hard."

It appears as if Gavin will not give up unless his hard fork is a reality, and thus Mircea Popescu has made a declaration of war if Gavin proceeds with his plans.

There have only ever been two hard forks of the blockchain in the history of Bitcoin, and both nearly killed Bitcoin. The first was overseen by Satoshi in an attempt to fix the worst Bitcoin bug seen to date, and an unforeseen fork in which BerkeleyDB was replaced with LevelDB to allow for blocks greater than 512kb to be accepted by the network. The latter fork however didn't disenfranchise older clients by forcing them to use LevelDB over BerkeleyDB – a one line workaround resolves the bug in clients still running with BerkeleyDB.

Gavin's proposed fork will create a blockchain incompatible with any previous version of Bitcoin. Nodes who do not wish to upgrade will reject the larger blocks, while continuing to accept blocks on their own chain. Many don't seem to yet understand the implications of a Bitcoin hard fork this late in the protocol's maturity so let us ponder the consequences for a moment.

Gavin proposes the fork would not occur until one of his new gigablocks is mined, this block would denote the start of the fork. At this point full nodes refusing to run Gavin's patches will reject this larger block, while those sided with Gavin will accept the larger block – two block chains will begin to emerge. Unlike previous forks where political consensus was achieved, this fork is guaranteed to result in conflict – the Great Blockchain Civil War starts. MPEx and others will refuse to accept any outputs contained in the Giga-blockchain, MPEx will also begin to actively attack it:

mircea_popescu: ben_vulpes if one block's large and the other small, all i need a tx that's included in the large block but not the small one. then doublespend it on the small one, which will be rejected necessarily by the large block blockchain

mircea_popescu: now i have bitcoin separated in two addresses, one for each chain.

mircea_popescu: the attempt may fail, but the cost to me of this failure is not significant, so i can keep on trying until it succeeds.

mircea_popescu: the only way to guard against it is, obviously,for the ."large" chain to maintain 1:1 identity with the "small" one. because you don't just fork bitcoin.,

ben_vulpes: i still fail to see how you're going to make a txn that gets included in the large block chain and not the small block chain.

artifexd: ben_vulpes: You don't. You keep sending money to yourself until it happens.

mircea_popescu: ben_vulpes what do you mean ? it necessarily will occur.

mircea_popescu: since one contains more txn than the other by definition.

mircea_popescu: suppose i make 50k 1btc txn. they don't fit in a 1mn block. they do fit in a 10mb block. what now ?

As the Giga-blockchain and main-blockchain continue to grow from the fork, those actively attacking the Giga-Blockchain will create many transactions that allow their main-blockchain coins to duplicate over to the Giga-blockchain while remaining safely on the main-blockchain. The transactions that succeed can then be used to acquire more main-blockchain coins upon which the cycle repeats. Eventually the blockchain with the most financial resources behind it will continue to grow at a faster pace, while the other slowly, and eventually stops growing altogether.

It will be impossible for the Giga-chain to keep 1:1 parity with the main chain from which it forks, they contain different transaction, although some may overlap. Here a user broadcasts a transaction with inputs originating on the Main-chain, and is eventually included in a block on the Giga-chain, but not on the Main-chain. The coin is essentially duplicated onto both chains.

Those siding with the wrong chain who end up accepting duplicated transactions from the other chain, such as a purchase from an exchange running on the losing blockchain, will lose those coins when the dust settles. No war is without casulties, the Great Blockchain Civil War will be no different.

Edit: The first instance described in the article was a soft fork and not a hard fork. The 2nd instance is in debate of whether or not it was non-deterministic behavior or a true hard fork.

33 thoughts on “The Hard Fork Missile Crisis

  1. In essence, you create an altcoin that is valued by small block enthusiasts (or rather, preserve a genuine bitcoin network while the herd migrates to a large block altcoin). Interesting! I don't have the ability or resources to run such an attack, but I will sit on my super-annuated small block wallet and pop some popcorn to enjoy while watching the show.

  2. Actually, because of the way Bitcoin is constructed, only the forker chain can take any casualties.

    If Gavincoin wins, Bitcoin holdhouts lose nothing and Gavin supporters gain nothing. If Gavincoin flounders, Gavin supporters lose everything [they invested in it], but Bitcoin holdouts still have all their Bitcoins (some of them also perhaps have some war booty, but that's not guaranteed).

    It's really very unilateral (as it should be, incidentally – if this weren't the case every John, Dick and Jane would fork Bitcoin every time they got bored).

  3. The hard fork essentially creates an altcoin (Gigacoin) that will inevitably diverge from the old bitcoin (Oldcoin).

    Note that users cannot "leave" the old coin nor refuse to "join" the new one. Rather, each user will get as a gift a bunch of Gigacoins equal to his holding of Oldcoins, sitting at the same addresses and accessible with the same keys. Each user can move, sell, hoard or burn each of the two stashes independently, if he can download and run both versions of the wallet software.

    Exchanges and payment processors can refuse to work with either version, but they can also work with both, by setting up separate order books and accounts (as if they were two unrelated altcoins) Players will have an incentive to do so, because the alternative is to ignore coins that one owns and may have some market value, or trades that the service could process that would generate some fees.

    The scenario then gets murky. Each coin will have some market price, and will die only if its price goes down to near zero. In the previous fork, one of the "coins" was buggy and no one wanted to use it, so it died. In this case both coins would be functional.

  4. The article describe something what will happen one way or the other. You call that an attack?! Seriously?! This "attack" will in no way influence which fork will "win".

    Bitcoin is antifragile and this will be true for both chains. The dust will never settle. To avoid the above scenario, every Miner/FullNode/user/Exchanges and so on will need to choose which way to go and so, we'll eventually soon have 2 different coins where old coins can still decide which way to go! They will be more worth then any new coin.

    The market will figure it out, not some weird "attacks".

    • Suppose that no effort is made, after the fork, to kill either of the two coins gigaBTC (big-block protocol) and smallBTC (same protcol as the old bitcoin). Then each will have its market price, Pg and Ps, respectively.

      It is by no means certain that Pg + Ps will be greater than Po, the price of the old bitcoin before the split. If that were true, then people would rush to create many more hard forks, because the total value of each user's holdings will increase.

      Perhaps the larger block size will make investors more optimistic about gigaBTC's future. On the other hand, perhaps the controversy around the hard fork will scare investors away. However, we can expect that the investors' money will be divided between the two chains, while the total mining rewards will be 3600 gigaBTC for all those who mine the new chain, 3600 smallBTC for all those who continue mining the old one. Therefore, it is likely that Pg + Ps will be somewhat smaller than the old price Po. The mining hashpower should eventually distribute dynamically between the two chains proportionally to Pg and Ps, so that no miners gain by switching sides.

      If the small-block chain (say) is destined to die, then owners who realize that first will rush to sell their smallBTC to people who do not believe that yet. That dumping would probably cause a drop in Ps, that would accelerate to a collapse Ps = 0. Presumably gigaBTC would then recover most of its price, since new investors would all turn to it.

      Anyone who owns N BTC before the fork will have N gigaBTC and N smallBTC after it. Someone who does does not sell his smallBTC will lose their original value Po*N but will gain Pg*N. Anyone who buys smallBTC after the fork will lose money, while anyoone who sells them will profit at the buyers' expense. The opposite is true if somehow the giant-block chain is destined to die.

      Therefore, to avoid ill-feelings and bas press, everybody should want that the transition — that is, the collapse of either Ps or Pg to zero — be as quick as possible. That may require nontrivial marketing, and/or sabotage of one chain by the miners of the other chain.

      • One could also implement a gigaBTC wallet that employs a rule to reject any transaction that is not also acceptable to smallBTC. If I had built a high value service that uses BTC (say, a coinbase, or a dubious exchange traded fund that claims to own BTC) I would not want to risk losing all the value of my coin. Even if I endorsed the larger block size, I would want to do so in a risk-free way just in case. Of course, if the "risk-averse" implementation of gigaBTC ended up rejected a whole lot of transactions, eventually, I might just revert to pre-fork software.

        • Transaction requests would have to be tagged somehow to identify which chain they refer to. The alternative (have each tx request apply implicitly to both chains) seems too dangerous. I can't see how one could ensure that each tx is either included in both chains or rejected from both. If this condition can't be enforced, then pretty soon there will be conflicting transactions in the two chains, and the chaos would result.

          The tagging could be a different port in the relay nodes, or some external marker that is disarded when the tx is included in a block.

  5. how about we forget this convoluted history about btc and start using the fresh xmr :3

  6. As long as people are aware of what is coming, I don't see why this would be such a problem. Wallet and service providers will have to choose their side.

    Once a Mega Block is mined, that blockchain will be incompatible with the standard blockchain. Creating BTC2. So those who benefit from BTC2 will want their services on that blockchain, those that prefer a small Blockchain will stay in normal BTC. Remember that the point of a blockchain is that each block contains a hash of the previous block, so if there's inconsistencies in this hash in future blocks that the block chains won't be compatible.

    Right? That's my understanding of it, curious to see what developers (not involved with btc core development) think about it.

    Fact is, counter party and mastercoin and other 2.0 bitcoin blockchain tech want a bigger block, let them have it.

    As long as btc and btc1 are tradable for eachother than good. yes value of each will be affected, and liquidity from one to the other will have an effect on people's value.

    Ultimatedly, wallet services and service providers will have to decide which fork to follow. This should be very interesting.

    Looks bad on gavin to take on this decision like he owns Bitcoin, but ultimatedly, BTC might be too big to please everybody.

    • You don't have to choose sides. If you can download and run both versions of the wallet software, you will own coins in both chains, and you can play with each as if it was a separate coin.

      Each "camp" naturlly hopes that the other "camp" will surrender without a fight, that their BTC will stop being mined and thus become worthless right away. But if a war ensues, both will survive for a while. Then using both coins will give better expected monetary return than betting in either one of them.

      • Playing with each coin assumes there's anyone left mining the old one. Is almost guaranteed that all miners will have switched to the new version as soon as it's activated.

    • PS. That holds for exchanges and payment processors too, they can serve both coins separately until one of them dies off

    • I don't remember seeing statements about Counterparty's and Mastercoin's preference for either.
      Are you sure you're not confusing this with the OP_RETURN thing?

  7. Yes this is what will happen during a hard fork. You act like this is the end of the world, there is nothing wrong with scheduling a fork a year in advance and giving time for everyone to get the updated version. This has to happen sometime for bitcoin to grow. There aren't exactly any alternatives so its better to help upgrade rather than fume about change for the sake of complaining.

  8. By the time the hard fork rolls around, all miners (and wallets, and other bitcoin software) will have dormant code ready to switch over and start mining the new fork. There won't be an old fork any more. If Mircea wishes to protest and keep using the old bitcoin, he will have to mine and use it entirely by himself.

    • This "entirely himself" bullshit can be repeated ad infinitum, for all the good it's going to do anyone. Maybe Reddit laps it all up, but that is because Reddit by and large is a collection of retards. Look at how well their previous Bitcoin 2.0 did (doge or something), and more importantly look at who killed that to get a rough idea of what gavincoin's perspectives are.

      It's all nice and good for anon derps on the Internet to "everyone/anyone". It doesn't actually do anything. This isn't a popularity contest, it is a resources contest, and you people ARE POOR.

      • Mircea Popescu,

        I think updating the Bitcoin protocol is a good idea and I don't see why the majority of mining Pools would not update prior to a hard-fork.

        What if the date for a Bitcoin hard-fork is 1 year from now? Is that not enough time for everyone to update to the latest code?

        If every mining pool and every exchange updates for a hard-fork, then there is no doomsday scenario.

        I don't see why people are so scared of a hard-fork if it's done properly. I could care less about "Bitcoin community consensus" because the Bitcoin community hardly ever agrees about anything.

        • "I think updating the Bitcoin protocol is a good idea"

          You write that, but then write this?

          "I don't see why the majority of mining Pools would not update prior to a hard-fork."

          Because economic incentives. Did you not read?

          "If every mining pool and every exchange updates for a hard-fork, then there is no doomsday scenario."

          There already is not doomsday scenario. How do you guarantee "every pool and every exchange updates"? You don't. It's statist thinking. The market will take care of it.

          "I don't see why people are so scared of a hard-fork if it's done properly. I could care less about "Bitcoin community consensus" because the Bitcoin community hardly ever agrees about anything."

          There is no community, there are just different actors. Some matter more than others. Those that matter doesn't seem to be that scared no?

          • Economic incentives will drastically change when Bitcoin Core is scheduled for a hard-fork. The economic incentive will be, "update to new code or potentially lose everything"…

            You don't need to force every pool or every exchange to update to latest code, once more than 50% of them do it, they will have to make the decision for themselves…

            That's not statist thinking, there is no central authority deciding that, that's different actors choosing to side with one set of code over another…

  9. Everyone will go to the new blockchain, and the old one will fade/die.
    Innovation is key here.

  10. Bittrex will remain on the old blockchain if it converts.
    Innovation lies with the old blockchain, if it forks to the new chain.

  11. Mircea and others fear that btc is actually innovating.
    If btc implements innovative features, other "btc 2.0" systems, and stellar, counterparty will fade as bitcoin implements needed features(which they originally assumed wouldn't ever be done), they assumed stagnation.

    Now that gavin proposes innovation, people with financial interests in other "coins" and chains will come out of the woodwork and try to "lambast" the proposed fork ideas.

    Epic lulz imo

  12. When Bitcoin is forked with its first megablock, anyone still running the old client will have the chance to kill that block by successfully mining a longer chain without the megablock. If they succeed, the new clients will throw out the megablock and accept the old client's chain. But they won't succeed. Bitcoin needs larger blocks, and Mircea is on the wrong side of this argument. Miners will upgrade en masse to allow this to happen. It's just that if they did not, there would be no disaster.

    Miners will accept the megablock fork because this is Satoshi's original vision. This is clear from all of Satoshi's original writings. Mircea would like to take Bitcoin as it is now and run away with it as if it is his baby. It's not. His language, insulting the world and essentially asserting his mastery over it, is amusing for a while, but it gets old. He is most sincerely over-compensating for some kind of inferiority complex. He might do well to look up the term "Superiority Complex".

    Bitcoin, in order to function well into the far future, must have high number of transactions. It is currently subsidized with a block reward, and this subsidy will support it for many years to come, but there will come a time when transaction fees will dominate. At that time, it will be number of transactions, not high cost, that pays for mining. Writing timestamped data to the blockchain will be cheap and common, and transferring funds on the blockchain will be similarly inexpensive. Transaction fees will be based on the number of bytes they write to the permanent record, not on the value of the property transferred.

    What Mircea wants is a toy, that he can keep all to himself just the way he got it. He didn't understand it when he got hold of it, and he proves that very clearly today. Satoshi understands it. Read the source.

  13. >Satoshi understands it. Read the source.

    Clearly you did not.

  14. Here is Satoshi patiently explaining how the network is intended to scale. When I say, "Read the source," I mean, read Satoshi.

    https://www.mail-archive.com/cryptography@metzdowd.com/msg09964.html

    • This argument has been refuted by the guy you are here to slander. Should you not take the time to read up on the subject before you go writing lengthy comments that rehash the same things we've already discussed?

      IV. Satoshi himself envisioned much larger blocks.

      The discussion of what "Satoshi himself" did or didn't do, meant or didn't mean, so on and so forth is about as interesting and discussing the Mormon "bible".

      This is called "arguing to authority", and it tries to give pecuniary value to that only truly worthless article of all times and places : the esteem of the mob. This may work well in electing United States presidents, ensuring that "while the voting public knows best what it wants, it deserves to get it long and hard". Bitcoin specifically and deliberately does not work in this way.

      Bitcoin is not a reflection of your hopes and aspirations, but a check on them. Bitcoin isn't here to make it easier for you to do what you want to do ; Bitcoin is here to make it trivial for others to prevent you from doing what you want to do every time that's stupid. The sooner you comprehend this fundamental difference between Bitcoin and "technology" especially in the "revolutionary & innovative" subsense of that nonsense, the better, for you.

      • Good grief, "the esteem of the mob!"

        What do you think mining is, exactly? Yes, the miners will "vote" on the coming upgrade. That is how Bitcoin works, on purpose. This criticism represents a fundamental misunderstanding of what Bitcoin is.

      • "Should you not take the time to read up on the subject before you go writing lengthy comments that rehash the same things we've already discussed?"

        …and then you link to an article behind a paywall that is basically unreadable in practice.

        If you want to discuss things behind closed doors, go hard but don't expect the rest of the world to have heard what you said.

  15. Lulz on the slander accusation. Perhaps I should have simply asked him if he is a narcissist. What do you say, Mircea? Are you a narcissist? "Narcissist" means egotistical, self-focused, and vain.

    We are not discussing points of fact, here, but a matter of vision for what Bitcoin should become. Therefore addressing the inventor's clearly stated intentions is not an argument from authority, but a relevant consideration.

    Mircea is free to attack the coming upgrade. He will fail, because "Bitcoin is not a reflection of Mircea's hopes and aspirations, but a check on them."

    Let M. Popescu read his own grand criticisms while looking in a mirror. Let him be careful not to trip when he comes to the word "stupid."

  16. This is so lulzy in retrospect.

Leave a Reply to Rassah Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>