Controversy aside, I thought how luke-jr went about making this change was incredibly sophisticated.
He adds a counter that considers bytes after the OP_FALSE OP_IF in a script* as "datacarrier" bytes.
Why I think this is sophisticated:
the concept of 'datacarrier' bytes is not new to bitcoin. In one light he's 'updating' the existing semantics for new ways people have figured out to add data to the chain.
What I like about the design: it's elegant because it hooks into an existing paradigm in the codebase, in a way that's arguably (emphasis on arguably here) correct. Like yeah, that's a reasonable position to take.
He then adds a check that rejects txs with inputs with scripts that are above the 'datacarriersize' limit. This is also quite clever. I think that most nodes already have this number set, and so pushing this change out would have a dramatic impact on uh, let's just say a certain class of transactions, almost immediately as nodes upgraded.
fwiw I strongly agree with Peter Todd that this is sub-optimal from a protocol design perspective, as it will encourage "motivated blockspace buyers" to find other, out of band, ways to get their transactions mined. https://github.com/bitcoin/bitcoin/pull/28408#issuecomment-1735079576
*and also data added via OP_PUSH / OP_DROP
mempoolfullrbf
debate my colleagues calculated that about 5% of nodes adopting it would suffice for the majority of non-signaling replacements to make it to miners.The Bitcoin network if very different to the Lightning Network in so far that fewer than half the nodes are running on the latest version. In this case specifically, inscribers and miners would have an incentive to simply not upgrade. The main effects of upgrading about half of the nodes to this would be that that block propagation slows down, because many nodes have not seen all transactions in advance and that feerate estimates would be low on those nodes.
-datacarriersize
. Yes, you can't prevent miners from mining Inscriptions, but same applies to largerOP_RETURN
s too.