Programs
peard
Denomination and settlement. The registry of pairables, the reward ledger, and the fulfilment valve.
peard owns denomination and settlement and owns nothing of the pool. It holds the registry of pairables, one market per launched token, one position per holder, and the burn-to-ship valve. There is no AMM in it and no oracle in any trading path.
Every name, account, argument and error on this page is generated from
target/idl/peard.json, the IDL Anchor emits at build time. It is what the
deployed bytes actually accept, not a recollection of it.
Program id
| Address | 7uwT6YPFpAVESKHpA6fBeTh7mQNdsYXr8jSp1nkwpHqR |
| Deployed | mainnet-beta and devnet, same address on both. Mainnet since 2026-08-26: Global initialised against Circle USDC, 121 pairables registered, every one of them priced at zero until a relayer runs |
| Instructions | 26 |
| Account types | 5 |
| Events | 14 |
| Error codes | 40 |
Instructions
Global and governance
The registry
Markets
Fees and the vault
Positions and claims
Fulfilment
Accounts
The state this program owns. Field names are as they appear on chain.
Types
Events
| Event | Fields |
|---|---|
BackingSet | market, backing, max_age_secs |
BackingSynced | market, value_usd, as_of |
BreakerTripped | pairable, observed, twap, dev_bps |
Claimed | market, owner, units, usdc, price, coverage |
FeesDeposited | market, usdc, protocol_cut, units, price |
FulfillmentRequested | market, owner, seq, units, quoted_usd, commitment |
FulfillmentSettled | market, owner, seq, shipped, units, quoted_usd |
InboxConverted | market, converter, usdc, asset, price, bounty_bps |
MarketCreated | market, pairable, token_mint, quote_mint, quote_mode, creator |
PairableRegistered | pairable, id, unit_label, resolver, grade, asset_mint |
PoolSet | market, pool, kind |
PositionSynced | market, owner, earning_balance, units_owed |
PricePushed | pairable, raw, twap, sources, ts |
RolledOver | market, from, to, final_price, new_price, factor, units_outstanding |
Errors
| Code | Name | Message |
|---|---|---|
| 6000 | Unauthorized | unauthorized |
| 6001 | Frozen | pairable is frozen |
| 6002 | PushTooSoon | oracle push too soon after previous push |
| 6003 | BadPrice | price observation outside sane bounds |
| 6004 | NoPrice | no price available yet |
| 6005 | PriceStale | price is stale |
| 6006 | ZeroAmount | amount must be greater than zero |
| 6007 | BadIdentifier | identifier is empty or too long |
| 6008 | BadParam | parameter outside allowed range |
| 6009 | MathOverflow | math overflow |
| 6010 | NothingToClaim | nothing accrued to claim |
| 6011 | NothingToSweep | vault holds nothing unaccounted to sweep |
| 6012 | ClaimTooLarge | claim exceeds units owed |
| 6013 | InsufficientVault | reward vault cannot cover this payout |
| 6014 | WrongTokenAccount | token account does not match the position owner or market mint |
| 6015 | WrongQuoteMint | market quote mint does not match the vault |
| 6016 | FulfillmentDisabled | fulfillment is not enabled for this pairable |
| 6017 | RequestTooLarge | request exceeds the per-request ceiling |
| 6018 | BudgetExhausted | epoch fulfillment budget exhausted |
| 6019 | NotRequested | fulfillment request is not in the requested state |
| 6020 | GradeUnsupported | soft-grade pairables are not supported yet |
| 6021 | GradeAssetMismatch | hard grade requires an asset mint, and an asset mint requires hard grade |
| 6022 | WrongAssetMint | native quote mode requires the pairable's own asset mint |
| 6023 | NativeNeedsHardGrade | native quote mode requires a hard-grade pairable |
| 6024 | WrongUsdMint | denominated markets must quote in the configured dollar mint |
| 6025 | FulfillmentNeedsDenominated | fulfillment is only available on denominated markets |
| 6026 | RequestTooSmall | request is below the minimum worth shipping |
| 6027 | RequestNotExpired | request has not reached its expiry yet |
| 6028 | PairableExpired | pairable has expired and no longer takes pushes |
| 6029 | PairableNotExpired | pairable has not expired yet |
| 6030 | TerminalIsSettle | terminal policy is settle, so there is nothing to roll onto |
| 6031 | SuccessorMismatch | roll terminal requires a successor, and a successor requires roll |
| 6032 | WrongSuccessor | successor pairable does not match the one registered |
| 6033 | SuccessorNotLive | successor is not live enough to roll onto |
| 6034 | RollFactorInsane | roll factor is outside the sane band; needs governance |
| 6035 | WrongBacking | backing account is not the one this market names, or is not a backing account |
| 6036 | ConvertNeedsNative | inbox conversion only applies to native markets |
| 6037 | ConvertDust | conversion is too small to price without rounding to nothing |
| 6038 | InboxTooSmall | inbox does not hold that much |
| 6039 | ConvertShortfall | the vault received less asset than the offer demands |
peard