Protocol overview
Stable value

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.

ProgramHYQJwCiBaBaG
GitHub
The peg

1:1 USDC reserve. Always redeemable.

Backing ratio
1:1

Every Cred in circulation has $1 USDC sitting in the reserve_vault PDA. Ratio is queryable on-chain via get_reserve_status.

Wrap USDC
→ Cred

Transfer USDC to reserve, receive equivalent Cred. No fee. Instant.

Unwrap
← USDC

Burn Cred, receive USDC from reserve. No fee. Instant. The exit ramp.

Capture mint
backed

Capture modules mint Cred directly to a vault, but must transfer matching USDC into the reserve in the same transaction.

Capture types

Four currently defined. Governance can add more.

Shopping

Purchase value captured from merchant integrations. The only capture module deployed to mainnet today — see Capture.

Data

Data licensing revenue (future module). User licenses their data to buyers; license fees mint Cred into their vault.

Presence

Verified location / foot-traffic signals (future). Proximity to merchants or events generates micro-captures.

Attention

Opt-in ad viewing (future). Attention time converts to Cred at a market rate.

Reserve transparency

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.

On-chain interface

Five public instructions.

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.