http://gavinandresen.ninja/a-guided-tour-of-the-2mb-fork 2mb is not a simple one-line change, and the implementation used for btc/classic is about 900 lines, based largely on coding crafted for XT. A lot of that is simply testing code, but even the core change of 2mb is almost 20 lines:
The first commit is “Minimal consensus/miner changes for 2mb block size bump”, and is small – under twenty lines of new code. You can see the one-line change of MAX_BLOCK_SIZE from 1,000,000 bytes to 2,000,000 bytes; the rest of the changes are needed by miners so they know whether it is safe to produce bigger blocks.
a node can easily do the 1-line change and it will accept and relay blocks <2mb, but most other nodes will see it as invalid and not relay them, hence making mining >2mb infeasible. Thats why it makes sense to include a "trigger" so that the client only accepts <1MB until the 2MB rule change is implemented. Otherwise XT would have made a few dozen 1-2 block chainforks already (before switching back to the main longest chain). The consensus mechanism only ensures that the 2mb fork will be successful when activated 28days after 75% majority.
The rest of 899 lines are just for consensus check and for unit tests, but the actual block size change is still one line if we assume there are exactly 0 bad actors. And in my scenario where everyone gets sick of Core and simply want to fork away with >1MB blocks there are 0 bad players in the ecosystem. At least that's how I see a split would take place.
As for core; I like thier roadmap. segwit has benefits to offer but they may be smaller and further away then currently anticipated, in the face of a growing network. Other improvements of the code that are planned are also generally quite good, but without an actual blocksize scaling event its easy to envision a path where blockstream is dedicated to making bitcoin a high-fee settlement layer with massive segwit sideblocks that power sidechains and lightning. Its a good direction, but I disagree with limiting bitcoin in its infancy to a 1mb limit that has gone without incident for years around improved computing and networking, particularly as it makes blockstream's business model more attractive
I firmly beleive in segwit+2mb and i think theres a developing similar consensus. in fact, segwit could make 2mb blocks much simpler by removing the complex validation needs of a small-but-many-signatures transaction.
If we agree that the
segwit brings much more benefits for the long term than a 2MB block then I think that having segwit happen as fast as possible is the correct choice. A 2MB block
now would only benefit the block space, while the segwit brings us so much more!
its quite simple, you can identify your client (such as classic-0.11.2.b1) and you can view node count at
https://coin.dance/nodes (IIRC they filter out nodes if they detect multiple on a single address (ie: someone pretending to run 10 nodes on one computer)). If you are a miner, you can follow BIP009 to include a modified versionbits, or you could simply include a message or code in the coinbase transaction (almost every miner out there does this already, and many even include BIP100 voting tags)
hashrate is pretty much the most secure method of voting as it requires control over bitcoin mining. Of course, only miners can vote this way.
How do you fraud proof if you identify by client version?
How would votes count? How much weight would miners have? Do they have 1 vote per entity?
There are so many questions that I could raise about this voting system that we can drag this for a very long time. I don't think that you could correctly weight every stakeholder in the ecosystem in order to have a voting mechanism in place. I think that we have so much diversity starting from the average Joe who has no idea about what the system is capable or not to the miners who operate large scale mining operations while running on a very thin margins to businesses who offer various services on the existing network. How do you make the difference between them in order to have a correct voting system?