Yeah I’m fine with that tradeoff, because I think it forces us to confront the more fundamental question of what is a block?
We are told SegWit was a soft fork because legacy nodes can continue following the chain while seeing only the non-witness bits; sure. But then we are simultaneously told that a SegWit node which does not retain the witness cannot serve a “full block.”
Both statements need to be examined together. If witness data is part of the “full block,” then SegWit expanded the physical block beyond Satoshi’s 1 MB boundary; thus a “hard fork” thru a soft fork. Nodes literally receive and store more block data >1MB. Calling those additional bits “discounted” changes their accounting weight to avoid the hard fork; it does not change their physical size. On my finite memory SSD, 1 bit = 1 bit. No amount of fiat logic can change the physical truth of memory.
If witness data is not part of the Nakamoto block, if the 1 MB non-witness block is complete enough for legacy consensus, then what exactly is witness? It is additional consensus logic and data anchored to that block, which newer nodes choose to understand and validate.
Either SegWit expanded the block, or it defined logically necessary information outside the original Nakamoto block boundary, thus redefining what the 1MB must also contain.
SegWit is a hard fork in logic, not consensus; thus is equivalent to a hard fork of consensus. It was ingeniously constructed to remain a consensus soft fork from the perspective of old nodes, but it changed the what newer nodes mean by a complete block. A soft fork that redefines the boundary of a block to explicitly break blocksize consensus. The old node says the ≤1 MB object is sufficient to follow its Bitcoin consensus; the new node says additional witness information is necessary for full validation and calls the witness-inclusive object the full block.
So what did we actually win in the blocksize war? I call bullshit that we won. Your point literally proves the blocksize changed size to serve full blocks.
If “winning” meant preserving the physical 1 MB block boundary, then why must a modern archival node store more than 1 MB per block to serve what we now call full blocks? If the answer is that witness doesn’t count the same because it receives a weight discount, then we haven’t preserved the physical boundary, we’ve changed the definition of the boundary by literal fiat (decree). My node is agnostic to the witness or non-witness serialization of bits physically.
I cannot make everyone else answer that question the way I do. But on my machine the answer can be objective.
1 bit = 1 bit
L0+L1< 1MB
If that means I no longer serve every witness-inclusive historical block that another SegWit node calls “full,” I accept the tradeoff. That disagreement over what constitutes a “full block” is precisely the experiment.
Consensus can declare witness bits discounted, but physics cannot. No amount of fiat can change the truth. So maybe it’s time for Blocksize War II, this time the plebs actually count the bits. Constrain L0+L1<1MB; give L0 first claim on Satoshi’s blockspace, and make L1 fight for what remains through fees and efficiency. 1 bit = 1 bit. 1 MB = 1 MB.
Verify, don’t discount. If enough plebs do this, it will hilariously start breaking SegWit and that is the point. We were told the small blockers won, yet apparently serving a “full block” now requires serving >1 MB. Fine: run your own node, define the physical boundary on your own SSD, and let’s finally find out who actually won the blocksize war.
Let’s see what transactions survive the 1MB block and who didn’t pay enough fees. You can’t force me to subsidize access to 1MB blockspace by arbitrarily defining additional memory outside of the blocks necessary to serve full blocks…..
