Right now, we have BIP-34 that enforces committing block height in coinbase input script.
Could we add more to it? I’ve been told it could risk breaking miner software.
What else is there? Bitcoin miners already add an OP_RETURN for SegWit, so can we just add something the same way? Because we know it wouldn’t break anything since they already have to do that for BTC.
Do we just add any fields we need verbatim, or do we just hash it all together and commit something like:
OP_RETURN <version> <hash>
Then we can just keep bumping the version and adding to what gets hashed if we need to commit to more data or ever change the hash function.
What could we be adding here?
- UTXO commitments
- Block sizes commitments (so ABLA state can be verified without having past blocks)
- Past header commitments (so light wallets can be even lighter)
Elsewhere I was suggesting to require the commitments OP_RETURN to be the last output so we could have compressed proofs
Today I found an old issue where Bitcoin Core folks were considering to make the same requirement for SegWit and for the same reason, what they called “midstate compression”. They gave up, because it looks like that would break some mining gear
Unlike them, we’re doing hard forks anyway, so maybe we could just add a little commitments blob as a leaf into our main merkle tree? To serve as an extended and future-extensible header.