expire a proof
Every proof has a timer. When it runs out with no verify, anyone can expire the proof. The deposit goes to the protocol treasury. The cleanup crew.
Proofs can't live forever. Without a limit, dead proofs would pile up on chain. So every proof gets a timer at creation, and the ceiling is 30 days. Ask for more and the program rejects the transaction with ExpiryTooFar.
how the timer works
The timer is a timestamp, not a countdown you can pause. Before it, the program rejects expire with ProofNotExpired. After it, expire is open season:
- Anyone can call it. No permission needed. That includes locked proofs from chapter 7. This is on purpose, so a deposit never gets stuck.
- The account closes, and its deposit goes to the protocol treasury. Not the beneficiary. Not the caller.
- The program still mints a metaproof receipt, same as verify. The record survives.
Notice who doesn't get paid. The caller. You even pay the rent for the receipt. Expiring is a public service, not a payday. Around here a bot called the reaper does most of it.
the lesson
Verify before the timer runs out. Verified means the beneficiary got the deposit back. Expired means the treasury took it. Same closed account, different destination for your SOL.
reading the status words
This explorer uses four status words. They mean exactly this:
| status | meaning |
|---|---|
| pending | alive, timer still running. verify me. |
| lapsed | timer done, but still on chain. ready for anyone to call expire. |
| verified | closed the happy way. deposit went to the beneficiary. |
| closed | the expire call ran. deposit went to the treasury. |