I posted another monster comment reply in my
ongoing conversation with MAbtc.
@go1111111, you might find it useful if you're working on an article. Here are some excerpts I thought were interesting. (I'm especially blown away by his statement "No, I don't trust the market" and claim that the issue of hard forks is one of "philosophy and ethics" rather than markets!!!)
“No, that doesn’t suggest that consensus rules are mutable at all. It suggests that you can opt out of the network.”
This seems like semantics to me. You’re basically claiming that “consensus rules” are “immutable” because you’re choosing to define “consensus rules” that way. So apparently, it wouldn’t matter to you if 100% of users and miners (or maybe just 99.9%) all gladly decided to switch to a new rule set via a hard fork because they all recognized the advantages of the change over the status quo. From your perspective, everyone in that scenario would be guilty of the sin of “breaking the immutable consensus,” and you’d consider them all to have left “the network” and started some sort of “alt-coin.” And again, from MY perspective, that makes no sense because the most meaningful way to think about “the network” is as a network of economic participants maintaining a shared ledger.
Also, this claim in the article that the “new rules” of a soft fork aren’t “consensus rules” is just bizarre to me. If that’s really the case, then UNWINDING one of these “new rules” (i.e., a rule that was previously added via a soft fork) shouldn’t “violate consensus,” correct? In other words, if a “new rule” isn’t a “consensus rule” when it’s being added, it shouldn’t suddenly become one when you try to remove it. And so (for example) removing the 1-MB block size limit that was added as a “new rule” in 2010 shouldn’t now be seen as problematic.
“This is not a matter of markets. This is a matter of philosophy and ethics.”
Of course this is a matter of markets! If we could rely on managers of a currency to act “ethically,” we could stick with fiat! The whole idea behind Bitcoin as a “trustless” form of money is that you DON’T have to trust participants to act “ethically.” You rely instead on their self-interest and the game-theoretic incentives of the system’s design. The good news here is that it’s not in miners’ interest to fork themselves onto a chain that other people aren’t going to value.
“Prominent executives and developers have continually repeated the idea that miners have the authority to change consensus rules. I simply want to state my rejection of that idea — that it fundamentally violates user consent. No one should feel forced to migrate networks as a matter of hash power. But the inability to get transactions confirmed in a timely manner (in the context of a massive drop in hash rate) is the mechanism to force users’ hands.”
Well, miners don’t have any “authority to change [THE] consensus rules” (because there is no “official” set of consensus rules), but they certainly DO have the right to run the software they want. You don’t own their hardware. They can shut it off if and when they want to. They can use it to start mining a true “alt-coin” with a brand new genesis block. Or they can use it to mine a “fork” / “spinoff” of the Bitcoin ledger. It’s true that in the last scenario, the importance of the network effect may incentivize people to follow those miners to the new chain, but that doesn’t mean that the miners are acting “coercively.” After all, if the vast majority of users DON’T migrate to the new chain and instead, the market continues to value the original chain, THAT will have the effect of incentivizing the miners to RETURN to mining the original chain. In that case, are the users and investors “coercing” the miners not to change their software? Of course not.
To me, this is sort of like if every year you meet your friends at a certain beach for a joint vacation. And you have a sweet boat that you always bring and that everyone parties on. And one year you’re like, “you know guys, I think actually I want to go a different beach this year. You’re all welcome to join me, but if you want to stick with your usual place, that’s cool too. I’ll understand.” And then one of your friends is like, “WTF, dude? But I want to party on your boat. You’re ‘coercing’ me to go to a different beach, and I consider that to be highly ‘unethical.’” Who’s the jerk in that situation?
...
“You can claim this dispute is resolvable, but I’ve written a lengthy article and several responses directly to you explaining exactly why it is not.”
Well, it might not be COMPLETELY resolvable. Certainly, we can imagine that there will be small groups that hard fork themselves away from “the herd” to obtain the new protocol they want, as well as small groups that refuse to join in a mass migration to an updated protocol. But the network effect is a beast. So in general, I think the herd will stick together (and I don’t think that means staying on the current trajectory indefinitely – although the status quo is always a powerful Schelling point).
“Yes it is. That [i.e., what software miners are currently running] is the only question.”
No, not at all. And certainly not in the context of the hypothetical we were discussing [i.e. Satoshi broadcasting a 1.1MB transaction that burns 900,000 BTC with a 100,000 BTC miner fee]. A rational miner wants his computer to produce the string of 0’s and 1’s that’s going to be exchangeable by him in the future for the most value. Obviously the “current software” is a very strong Schelling point and thus, generally, a very intelligent guess as to what’s going to produce that sequence. But I think my hypothetical scenario would be very likely to produce a shift in the most powerful Schelling point, leading miners to coordinate a change to the software they’re running.
...
“That’s not how the software works. So it seems you are just attaching some arbitrary definition. Bitcoin is now an ‘inherently fluid protocol?’ How so? Are we just throwing immutability out the window entirely now? Enforcement of consensus is the precise opposite of ‘fluid.’ No consensus changes since 2009, yet you have the audacity to call consensus ‘fluid?’ Simply repeating that the consensus rules _everyone else_ agreed to are mutable based on (your? some miners’?) say-so, simply isn’t compelling.”
Forget “the” software. The software is just a TOOL for a NETWORK OF HUMAN BEINGS to reach agreement on a shared monetary history. The tool can change. Obviously, the task of coordinating certain kinds of changes to that tool is tricky, so we shouldn’t expect changes to be made lightly or frequently. But if a vastly-superior tool is discovered, or if the current tool starts to malfunction, if a 51% attack / malicious soft fork occurs or a significant vulnerability in Bitcoin’s cryptography is discovered, we should absolutely expect that this network of economically-rational human beings will shift to a new tool while preserving the continuity and integrity of the all-important ledger.
...
“No. I don’t trust the market. I don’t trust democracies. I trust my full node.”
Well, ok but in the real world, that’s not good enough because money is a network good. Again, if the rest of the world moves on, you could find yourself “trusting a full node” that’s no longer connected to anyone else because it’s using a rule set that’s been rendered completely obsolete. You’re the 10,000-year-old man speaking what everyone else considers to be gibberish.
Also, I left this reply in response to another commenter who questioned my claim that anything that can be done with a hard fork can also be done with a (more-convoluted) soft fork. But could someone confirm that I'm correct in my explanation?
“This does not sound true: not all software changes can be backwards compatible.”
Well, I’m not really much of a coder, but yeah, that’s at least my current understanding. I seem to recall people presenting proposals that show how you could make dramatic protocol changes like increasing the issuance supply cap or raising the block size limit via soft fork. And in fact, the soft fork Segwit proposal itself involves an effective increase in the block size limit — something that, by its nature, would seem to require a “hard fork.” Basically, my understanding is that you could add a new rule (thus, making it a “soft fork”) such that the network will only accept a “main block” as valid if it contains a hash to some kind of additional “extension block.” And then basically you can have all the REAL action vis-a-vis updating the ledger happening in the extension block by applying whatever rule set you want to it. Essentially, the “main blocks” become these sort of “pod-person” blocks that look superficially “valid” to old nodes, but whose true internal workings are totally inscrutable and alien.
Also, and somewhat related, saw this
comment chain on reddit that I thought was pretty brilliant.
/u/jstolfi: It [Segwit] is like increasing the carrying capacity of a hot air balloon by hanging an extra cargo basket under the main one.
/u/fury420: That's a very apt analogy, just slap a "Technically not in the basket" label on all the extra cargo and we're good!
/u/chriswheeler: You also need to allow the extra basket to be 3x bigger than the main basket, while simultaneously declaring that if you made the main basket 4x bigger the balloon would certainly not be able to carry the weight.