Cred
1 Cred = $1. Mint on capture, burn on exit, always 1:1 USDC in reserve.
Cred is the unit of account for Loop's capture economy. It's an elastic-supply stable token pegged 1:1 to USD via a USDC reserve vault. Users mint Cred by wrapping USDC directly. Authorized capture modules mint Cred when value is captured on behalf of a user — but they must fund the USDC backing themselves, so the peg never drifts.
HYQJwC…iBaBaG1:1 USDC reserve. Always redeemable.
Every Cred in circulation has $1 USDC sitting in the reserve_vault PDA. Ratio is queryable on-chain via get_reserve_status.
Transfer USDC to reserve, receive equivalent Cred. No fee. Instant.
Burn Cred, receive USDC from reserve. No fee. Instant. The exit ramp.
Capture modules mint Cred directly to a vault, but must transfer matching USDC into the reserve in the same transaction.
Four currently defined. Governance can add more.
Purchase value captured from merchant integrations. The only capture module deployed to mainnet today — see Capture.
Data licensing revenue (future module). User licenses their data to buyers; license fees mint Cred into their vault.
Verified location / foot-traffic signals (future). Proximity to merchants or events generates micro-captures.
Opt-in ad viewing (future). Attention time converts to Cred at a market rate.
Anyone can verify the backing is real.
The get_reserve_status instruction returns four numbers and emits them as an event:
- usdc_reserve — actual USDC held
- cred_supply — total Cred minted minus burned
- backing_ratio — basis points, 10000 = 100%
- total_minted / total_burned — lifetime counters
The ratio must stay at 10000. Any deviation is a protocol bug and blocks new capture mints until reconciled.
Five public instructions.
initialize()One-time setup. Creates the cred_config PDA and the reserve_vault token account.
wrap(amount: u64)Take USDC from user, deposit to reserve, mint Cred to user. 1:1, no fee.
unwrap(amount: u64)Burn user's Cred, return USDC from reserve. 1:1, no fee.
capture_mint(amount: u64, capture_type: CaptureType)Authorized capture modules only. Requires funding matching USDC backing in the same tx.
register_capture_module(capture_type: CaptureType, module_name: String)Protocol authority only. Authorizes a module to mint Cred of a specific capture type.