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.uiAmount

Configuration

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)