Developer
Integration guide
Everything the interface shows can be reproduced with two RPC calls.
Read-only queries
// reserve balance
POST <RPC_URL> {"method":"getBalance","params":["<BACKING_POOL>"]}
// circulating supply
POST <RPC_URL> {"method":"getTokenSupply","params":["<ASSET_MINT>"]}
// backing per token
P = balance.lamports / 1e9 / supply.uiAmountConfiguration
VITE_SOLANA_NETWORK mainnet-beta | devnet | testnet VITE_SOLANA_RPC_URL RPC endpoint VITE_ASSET_MINT $ASSET SPL mint VITE_BACKING_POOL reserve account VITE_FEE_RECEIVER designated creator-fee destination VITE_PROGRAM_ID redemption program VITE_TREASURY treasury account VITE_TOKEN_DECIMALS default 6 VITE_DEPLOYMENT_ENV production | staging | development VITE_LINK_X | _TELEGRAM | _DISCORD | _GITHUB
With no mint and pool configured, the application runs in demo mode: every value is labelled “Demo data — not live” and redemption stays disabled.
Protocol events
- FeeRouted — eligible SOL forwarded into the reserve.
- Redeemed — payout amount, wallet cumulative redeemed total, resulting reserve.
- EligibilityUpdated — verified purchase, sale or transfer changing an eligible balance.
Transaction example
redeem(amount) ├─ assert caller signature and cooldown elapsed (24h) ├─ E = eligible balance, B = reserve.lamports, S = total supply ├─ gross = floor(E * B / S) ├─ available = max(0, gross - already_redeemed) ├─ assert amount > 0 and amount <= floor(available * 10%) ├─ already_redeemed += amount (never reset, no burn) └─ transfer(reserve → caller, amount)
