peard_vault
The NFT reserve of real things. Live on devnet, holding one reserve and nothing in it.
peard_vault holds NFTs and nothing else. An NFT here is a deed to a specific batch rather than a registry row for a type, because every variable that decides what a batch is worth lives on the batch: quantity, cost basis, acquisition date, expiry, carry, haircut, appraiser, custodian.
The core values nothing itself. ItemKind is metadata and no instruction branches on it, which is the only way "support every type" stays tractable instead of becoming a growing switch statement inside a deployed program.
Every name, account, argument and error on this page is generated from
target/idl/peard_vault.json, the IDL Anchor emits at build time. It is what the
deployed bytes actually accept, not a recollection of it.
Program id
| Address | 6ps4NbLGcZGW1WWqrp4PsqMCozHied1QGihDzP1A5zv8 |
| Deployed | mainnet-beta and devnet, same address on both, 2026-08-26. Mainnet has no reserves. Devnet has one, and it holds nothing. IDL published on devnet, so an explorer decodes its accounts by name |
| Instructions | 9 |
| Account types | 3 |
| Events | 8 |
| Error codes | 14 |
Instructions
The reserve
Items
Marking
Carry
Accounts
The state this program owns. Field names are as they appear on chain.
Types
Events
| Event | Fields |
|---|---|
AppraisalRejected | item, observed, held, step_bps |
Appraised | item, value_usd, step_bps, carry_owed_usd |
CarrySettled | item, paid_usd, still_owed_usd |
EpochClosed | reserve, epoch, value_usd, items |
ItemDeposited | reserve, item, seq, kind, nft_mint, quantity, cost_basis_usd, expires_ts |
ItemMarked | item, epoch, was, now_value, carry |
ItemRedeemed | item, nft_mint, recipient, value_usd |
ItemWrittenOff | item, cost_basis_usd, custodian |
Errors
| Code | Name | Message |
|---|---|---|
| 6000 | Unauthorized | unauthorized |
| 6001 | BadParam | parameter outside allowed range |
| 6002 | ZeroAmount | amount must be greater than zero |
| 6003 | MathOverflow | math overflow |
| 6004 | ItemFrozen | item is frozen |
| 6005 | ItemNotHeld | item is no longer held |
| 6006 | BadAppraisal | appraisal outside sane bounds |
| 6007 | EpochIncomplete | the epoch still has unmarked items |
| 6008 | AlreadyMarked | item has already been marked this epoch |
| 6009 | ReserveStale | the reserve has not been marked recently enough to be counted |
| 6010 | NotAnNft | an nft is one indivisible unit and this is not one |
| 6011 | NothingOwed | nothing is owed on this item |
| 6012 | CarryVaultEmpty | the carry vault holds nothing to pay with |
| 6013 | CarryOutstanding | carry is still owed on this item |
peard