Hey everyone,
This is an idea that I had about Segwit and Gregory's proposal from yesterday that I wanted to run by everyone on this list. I'm not at all sure what this would mean for non-upgraded nodes on the network and would like feedback on that. This is not a formal BIP as it's a modification to a previously submitted one, but I'm happy to formalize it if it would help.
---------------------------------------- Motivation
One of the interesting aspects of Gregory Maxwell’s proposal is that it only precludes the covert version of ASICBoost. He specifically left the overt version alone.
Overt ASICBoost requires grinding on the version bits of the Block header instead of the Merkle Root. This is likely more efficient than the Merkle Root grinding (aka covert ASICBoost) and requires way less resources (much less RAM, SHA256 calculations, no tx shuffling, etc).
If we combine Gregory Maxwell’s proposal with BIP-141 (Segwit) and add a slight modification, this should, in theory, make ASICBoost a lot more useful to miners and appeal to their financial interests.
The Modification
Currently, the version bits (currently 4 bytes, or 32 bits) in the header are used for BIP9 signaling. We change the version bits to a nonce-space so the miners can use it for overt ASICBoost. The 32-bits are now moved over to the Coinbase transaction as part of the witness commitment. The witness commitment goes from 38 bytes to 42 bytes, with the last 4 bytes being used as the version bits in the block header previously. The witness commitment becomes required as per Gregory Maxwell’s proposal.
Reasoning
First, this brings ASICBoost out into the open. Covert ASICBoost becomes much more costly and overt ASICBoost is now encouraged.
Second, we can make this change relatively quickly. Most of the Segwit testing stays valid and this change can be deployed relatively quickly.
Note on SPV clients
Currently Segwit stores the witness commitment in the Coinbase tx, so lightweight clients will need to get the Coinbase tx + Merkle proof to validate segwit transactions anyway. Putting block version information in the Coinbase tx will not impose an extra burden on upgraded light clients.