This is a post from bitcoin dev Sjors Provoost on Bitcoin Stackexchange and I repost it here for broader audience:
Some (proposed) protocols use fake public keys to put additional data in the transaction output, when it doesn't fit in the 80 byte OP_RETURN limit.
But why don't they just use the inscription mechanism and put it in the witness?
There's two reasons:
- OP_RETURN is actually cheaper for smaller payloads, see When is OP_RETURN cheaper than OP_FALSE OP_IF? But this is of trivial concern for smart contracts like bridges, which move huge amounts of value around.
- Some protocols require certain data to be available before the transaction is spent. Since the witness is only revealed at spending time, it would be too late. These system care about data availability and are not price sensitive. They want to maximise the chances of getting relayed. So even though a large OP_RETURN is already pretty easy to relay, and even though that's actually cheaper, they're happy to pay a bit more in fees and use fake public keys instead, just to be on the safe side.