metaproofs
When a proof closes, the program leaves a small permanent receipt in its place. That receipt is the metaproof. The proof of the proof.
Chapters 3 and 4 both end the same way. The proof account closes, and something small gets left behind. This chapter is about that something.
what a metaproof is
A metaproof is another proof account, the smallest size, with three settings fixed by the program:
- It belongs to the vault. Its beneficiary is the protocol vault address, not a person. That's how the program knows it's a receipt.
- It never expires. Its expiry is
i64::MAX, the largest value the field can hold, so expire can never run on it. - Its data is the attestation from the verify or expire call that made it. So the receipt lives at the address derived from that attestation, and anyone who knows the attestation can find the receipt.
So the full life of a proof reads in order. Someone proved a thing. Someone handled it. A permanent receipt says so.
no receipts for receipts
Can you verify a metaproof? Yes. Anyone can. The vault gets the deposit back and the receipt account closes. But closing a vault-owned proof does not mint another receipt. If it did, every receipt would spawn a receipt, forever, like standing between two mirrors. The program stops the chain at one.
metaproofs in this explorer
The proofs list shows both kinds, regular proofs and their receipts. A receipt is any row whose beneficiary is the vault and whose expiry is i64::MAX. Open any closed proof and the history section shows the whole chain: created, then verified or expired, with the receipt's address.