ReserveVault
The pre-funded payout — locked USDC that absorbs the worst case.
CDN6S5DKUCC4O33L3RGTTO4LYNJVPLPIYYZTUANPJJZYAHZCR32O4WFB
The vault is what makes a bound different from a promise. The money is deposited before the certificate means anything, and cannot be withdrawn while the certificate is live.
Functions
| Function | Auth | Notes |
|---|---|---|
initialize(operator, challenge_manager, token, unlock_at) | once | unlock_at is the certificate expiry |
deposit(amount) | operator | Locks the reserve |
get_balance() -> i128 | view | The actual locked balance — the on-chain truth |
release_to_victim(victim, amount) | ChallengeManager only | The compensation path |
release_to_operator() | operator | Reverts reserve_still_locked if now < unlock_at |
Why get_balance is the important one
It is a public view, so anyone — the auditor before attesting, the counterparty before transacting, a challenger looking for fraud — can read the real number for free and compare it to the certificate's claim. No trusted reporter sits between the money and the reader.
Scope
One vault serves one operator with a single balance; there is no per-certificate segregation in the current deployment. An operator running several certificates backs them from one pot, so read the balance rather than assuming a certificate has exclusive claim to it. Trust model lists this among the known limits.