To clarify my post the reason i focused on miners before was that I got told off once for talking only about nodes! What I mean is all the nodes might be happy with bigger blocks but if the majority of miners refuse to build on them then they will just get orphaned off, so although the nodes have the power of veto, its the miners that instigate the change in consensus.
I think we are saying the same thing though essentially! That the network decides what consensus is by *being* that consensus, in the form of the longest chain.
if miners refuse to build bigger blocks.. then even nodes with 2mb limit.. will still accept blocks of 0.2mb, 0.5mb, 0.99mb.. because its not a rule of over 1mb but less than2mb.. its its a rule of anything from 0 to 2mb.
nodes with 2mb limit wont throw any blocks out.. yet segwit would..
so the consensus would be if segwit had 95% users.. blocks would be all under 1mb and both segwit and 2mb nodes would happily talk to each other. where if 2mb node accidentally accepted a >1mb block.. it would eventually get orphaned off once they resync to consensus..
but if segwit only had 5% consensus.. and miners finally decided to go with large block due to 95% large block consensus.. then segwit would end up throwing away lots of blocks, and because segwit is throwing away lots of blocks and being left behind where they cant sync with consensus because consensus holds large blocks.. then segwit will need to adapt by finally upping the limit to be part of it again.
there isnt an altcoin.. there is only blockheight.. and whoever has the heighest height wins where the loser will forever be screaming to the next block to resync to and then rejecting it, ending up not resyncing and left at the curbside.
EG majority of nodes are 2mb running alongside segwit. where some miners are outputting blocks >1mb
13:56:02 miner A: height 400,000 size0.9mb segwit & 2mb implementations both accept
13:56:05 miner B: height 400,000 size0.9mb segwit & 2mb implementations both reject (sorry you lose, your not fast enough)
14:06:02 miner C: height 400,001 size1.025 2mb implementations accept, but segwit rejects
14:06:05 miner B: height 400,001 size0.99mb segwit accepts
14:16:02 miner B: height 400,002 size0.99mb segwit accepts, 2mb implementation accepts and orphans minerC 400,001 as its not part of miner B's block chain
14:16:05 miner A: height 400,002 size0.99mb segwit & 2mb implementations both reject (sorry you lose, your not fast enough)
14:26:02 miner C: height 400,003 size1.025 2mb implementations accept, but segwit rejects
14:26:05 miner B: height 400,003 size0.99mb segwit accepts but 2mb implementations reject (not fast enough)
14:36:02 miner C: height 400,004 size1.025 2mb implementations accept, but segwit rejects
14:36:05 miner B: height 400,004 size0.99mb segwit accepts but 2mb implementations reject (not fast enough)
14:46:02 miner B: height 400,005 size0.99mb segwit accepts, 2mb implementation accepts and orphans minerC 400,004 and 003 as its not part of miner B's block chain
14:46:05 miner A: height 400,005 size0.99mb segwit & 2mb implementations both reject (sorry you lose, your not fast enough)
this would leave miners knowing that because there is no consensus.. sooner or later thier >1mb blocks will get orphaned.. so they stay inline with <1mb just to get some wins that will hold..
now imagine the consensus IS with large blocks
13:56:02 miner A: height 400,000 size0.9mb segwit & 2mb implementations both accept
13:56:05 miner B: height 400,000 size1.025mb segwit & 2mb implementations both reject (sorry you lose, your not fast enough)
14:06:02 miner C: height 400,001 size1.025 2mb implementations accept, but segwit rejects
14:06:05 miner B: height 400,001 size1.025 segwit rejects
14:16:02 miner B: height 400,002 1.025 segwit rejects, 2mb implementation accepts
14:16:05 miner A: height 400,002 size0.99mb segwit & 2mb implementations both reject
segwit rejects because miner A block history has other blocks of 1.025 in the past so segwit rejects it on principle. and 2mb nodes reject because its not solved first
14:26:02 miner C: height 400,003 size1.025 2mb implementations accept, but segwit rejects
14:26:05 miner B: height 400,003 size0.99mb segwit & 2mb implementations both reject
segwit rejects because miner B block history has other blocks of 1.025 in the past so segwit rejects it on principle. and 2mb nodes reject because its not solved first
14:36:02 miner C: height 400,004 size1.025 2mb implementations accept, but segwit rejects
14:36:05 miner B: height 400,004 size0.99mb segwit & 2mb implementations both reject
segwit rejects because miner B block history has other blocks of 1.025 in the past so segwit rejects it on principle. and 2mb nodes reject because its not solved first
14:46:02 miner B: height 400,005 size0.99mb 2mb implementation accepts but segwit reject s
segwit rejects because miner B block history has other blocks of 1.025 in the past so segwit rejects it on principle.
14:46:05 miner A: height 400,005 size0.99mb segwit & 2mb implementations both reject
segwit rejects because miner A block history has other blocks of 1.025 in the past so segwit rejects it on principle. and 2mb nodes reject because its not solved first
so now 2mb implementation is at height 005.. but segwit is left unable to sync and stuck at 000, and because segwit is only 5% of consensus no one cares..
but sgwit has a plan.. they can either die out by not bing able to transact as they cant get blocks anymore.. or they can up the limit and be able to sync..
again its not about creation of altcoins.. its about syncing.. depending on consensus, there want be 2 coins.. there will be either a temporary for that eventually gets orphaned.. forcing miners to stay inline to prevent orphans.. or the flip side.. the loser cant sync as they reject blocks that dont fit their rules.. leaving them in the past
in short.
if segwit wins the consensus 19 implementations are not rendered useless but are just passing the parcel of unknown data. requiring alot of code changes to become full validators again
if 2mb wins the consensus 19 implementations continue to work and segwit is rendered useless.. stuck and unable to get new blocks and not playing pass the parcel but instead left sat in the corner doing nothing.. but.. requiring only changing a 1 into a 2 on one line of code to be part of the chain again.(much easier to implement)
to be honest id rather have 20 different implementations that are ready for change that can all happily still accept blocks, even if those blocks are all sub 1mb.. allowing them to be ready for any surprises next year... rather than to force people into using segwit which not only limits choice but also means the 19 implementations are relaying transactions that are 'magically' treated as valid, but may actually be nefarios transactions.. basically passing the parcel that can contain a bomb and not realise it because they are no longer full validation nodes..where the only full validation node is segwit. the single and only choice..
the logical solution for both parties is both have 2mb.. and both can work happily together. then later in a few months or year.. then miners make bigger blocks because they know there wont be orphans