This won’t work, sadly. It’s a bit of a chicken-and-egg problem and headers are unique in that they cannot be “commited-to” on the blockchain itself. What do I mean by that?
Think about what a commitment on the blockchain means:
It means that some piece of data X, can be trusted, because there is PoW backing it. Therefore that piece of data, X, is difficult to forge. To know X is real, you can lookup a block, and if you see X on the block (say X is a tx, or a uxo, or a cashtoken, or something like some future UTXO commitment)… you know that X is real because you do the following:
- You validate all headers leading up to the block containing X by downloading the headers and validating PoW.
- You either obtain the block containing X itself, or obtain a merkle proof for the txn where X appears in that block (to save b/w).
All of this necessarily requires that you see all the headers to validate PoW in the first place.
Putting a header commitment H in a block is not going to help you at all.
To know that header commitment H is valid, you need to validate all PoW leading up to the block containing H.
To do that… you need to download all the headers anyway and verify they link up and PoW is valid. Which is the very thing you were trying to not have to do in the first place with this proposal!
So it’s a chicken-and-egg problem.
In summary: This information doesn’t belong on the blockchain, because it cannot be verified without downloading all headers in the first place – the very thing this CHIP tries to optimize away!
This information might be useful to some SPV wallet but it can be obtained from an oracle anyway or from a hard-coded checkpoint in the wallet. It would have exactly the same security properties if done that way as it would have if put it on the blockchain.
It’s a unique chicken-and-egg problem to headers specifically – since they are the backbone of bitcoin and are the 1 thing that must be validated to know anything else is real. Therefore any header commitment in Bitcoin cannot work… sadly.