Mint & Redeem

P10 is minted and redeemed directly against its on-chain Net Asset Value (NAV), with oracle guards and clear limits.

TL;DR

  • Mint = you deposit assets → receive P10 at NAV minus a small fee.

  • Redeem = you return P10 → receive underlying exposure at NAV minus a small fee.

  • Two UX modes (permissionless):

    1. Single-asset “Zap” (most users): pay with BNB/USDT/USDC/XPGN; we route into the target basket using the Flow (best-execution) router, rebate any surplus, and mint P10.

    2. Basket-in/Basket-out (pro users/bots): you provide or receive the exact constituent mix pro-rata to the current weights; no AMM swaps needed.

  • Fees (default): 10 bps to mint, 10 bps to redeem.

  • Guards: on-chain oracle freshness/deviation/TWAP checks; mint pauses automatically if any feed fails, while redeem remains open (pro-user unwind).

  • Testnet (now, 3–4 weeks): synthetic backing with a tight error band; same UX and guards.

  • Mainnet: basket-backed (preferred) or delta-neutral synthetic (governance choice).


The price you pay (NAV per P10)

At a given snapshot SSS (see P10: What it Tracks):

  • Let wiw_iwi​ be the current weight fraction for asset iii (capped free-float market cap, post-redistribution).

  • Let PiP_iPi​ be the on-chain oracle price for asset iii (USD-denominated).

  • Then the NAV per P10 (USD terms) is:

NAVP10=∑i=1Nwi⋅Pi\text{NAV}_{P10} = \sum_{i=1}^{N} w_i \cdot P_iNAVP10​=i=1∑N​wi​⋅Pi​

We publish a discrete composition snapshot periodically (weekly on testnet / monthly on mainnet). Between events, P10 floats with the market; we don’t constantly reweight intraday.

Implementation note: the contracts compute target units-per-P10 qi=wiPiq_i = \frac{w_i}{P_i}qi​=Pi​wi​​ (adjusted for decimals), so the system always knows how much of each asset corresponds to 1 P10 at the current snapshot.


Modes: Single-asset vs Basket

1) Single-asset Mint/Redeem (Zap)

Best for most users.

  • Mint: Pay with BNB / USDT / USDC / XPGN (whitelist can expand). The router atomically swaps into the basket mix using Paragon Flow (batch-auction best execution). You receive P10 at NAV minus the mint fee.

    • Any surplus achieved by Flow (price improvement vs quoted route) is rebated per our Surplus & Rebates split (e.g., 60% to you, 30% to LPs used, 10% to stXPGN lockers).

  • Redeem: You send P10; choose “Pro-rata basket” or “One asset”.

    • One asset = router swaps your pro-rata basket into a single token (BNB/USDT/USDC/XPGN), with Flow surplus rebates applied.

    • Pro-rata basket = you receive each constituent directly, proportionally (no AMM swaps).

Pros: simplest UX, automatic best-execution, surplus rebates. Trade-offs: single-asset variant introduces normal AMM swap costs (but Flow minimizes these and shares the upside).

2) Basket-in / Basket-out

For advanced users, funds, and arbitrageurs.

  • You provide exact constituent amounts matching qiq_iqi​ proportions (within a small tolerance) to mint P10 without any AMM trades.

  • You redeem P10 into exact pro-rata constituent amounts.

  • No “Flow” swaps happen in this path, so there’s no routing slippage; you only pay the mint/redeem fee and gas.

Pros: tightest tracking and cheapest path for large size. Trade-offs: you must source the basket yourself.


Step-by-step (what the contracts do)

Mint flow (single-asset)

  1. Quote: UI fetches NAV from Pricing & Oracles, shows P10 out and fee.

  2. Guards prepared: min-out is derived (NAV − fee − guard buffer).

  3. Approve/Permit: we support ERC-20 approvals and Permit2 (when available).

  4. Batch intent: your swap is submitted to the Flow batcher; solver(s) compete to route at best net price.

  5. Settlement: FlowSettlement validates oracles & min-out, executes swaps, mints P10 to you, splits any surplus (cashback to you + LP + stXPGN).

  6. Events: Minted(user, p10Out, feePaid, surplusRebate) emitted.

Redeem flow (single-asset or basket)

  1. Quote: UI shows expected assets out (basket or chosen token) at NAV minus fee.

  2. Guards prepared: min-out guard enforced per asset (basket) or per route (single-asset).

  3. Approve P10: via ERC-20 approve/permit.

  4. If single-asset: Flow solves best route to your chosen token and rebates surplus.

  5. If basket-out: no swaps; you receive each token in the right proportions.

  6. Events: Redeemed(user, p10In, feePaid, surplusRebate).


Fees, rebates & where they go

  • Mint fee: 10 bps of P10 value.

  • Redeem fee: 10 bps of P10 value.

  • Routing costs: normal AMM fees on single-asset paths; minimized via Flow.

  • Surplus rebates (Flow): e.g., 60% trader / 30% LPs of used hops / 10% stXPGN lockers (configurable by governance).

  • Protocol take: a small slice of captured surplus can be reserved for Treasury/Shield if governance chooses (e.g., 5%).

Fees fund Treasury/Shield, development, and real yield for lockers via surplus share. Exact splits live in Tokenomics.


Oracle & safety guards (always on)

Before any mint/redeem settles:

  • Freshness: each constituent price feed must be newer than a chain-specific threshold (e.g., < 60s).

  • Deviation: primary vs secondary (Chainlink vs Pyth/Redstone) must be within max deviation (e.g., 1.5–2.5%).

  • TWAP cross-check: on-chain DEX TWAP must not diverge beyond a bound.

  • Circuit breakers: if any check fails, mint pauses (no new P10), redeem remains open.

  • Snapshot lock: if a new composition snapshot is pending activation, mints settle against the current snapshot until the timelock ends.

See Pricing & Oracles for exact parameters.


Limits & caps

  • Per-tx mint cap: lower of $50k or 0.5% of supply (tunable; tighter on testnet).

  • Daily mint cap: 2% of supply (rolling 24h).

  • Min mint/redeem: small USD equivalent floor (e.g., $50) to avoid dust.

  • Pause reasons: stale oracles, extreme deviation, supply cap, governance emergency; redeem stays open unless chain halts.

Full policy in Risk & Limits.


Testnet vs Mainnet behavior

Testnet (current 3–4 weeks)

  • Synthetic P10: A backing account tracks a basket proxy within a ±3% error band (published).

  • Same UX: single-asset mint/redeem, basket option, Flow routing & surplus rebates, all guards active.

  • Faster cadence: weekly reconstitution/rebalance snapshots.

  • Goal: battle-test quotes, guards, surplus accounting, and UI/SDK.

Mainnet (phase 2+)

  • Basket-backed (preferred): contracts custody the canonical BNB-chain representations of the Top 10; permissionless arb via basket-in/out.

  • OR Delta-neutral synthetic (hedged) if governance chooses; requires extra transparency (oracle attestations, hedging proofs).


How peg is kept close (why price ≈ NAV)

  • Permissionless mint/redeem at NAV ± fee creates arbitrage bands.

  • If DEX price of P10 > NAV: arb mints P10 and sells on DEX → price falls to NAV.

  • If DEX price of P10 < NAV: arb buys P10 on DEX and redeems for basket value → price rises to NAV.

  • Flow’s best-execution reduces friction, tightening the band further.


Developer notes (interfaces & events)

Core methods (names illustrative; final ABIs in the repo):

  • quoteMintSingle(assetIn, amountIn) -> p10Out, minOut, fee, routePreview

  • mintSingle(assetIn, amountIn, minP10Out, recipient)

  • quoteRedeemSingle(p10In, assetOut) -> amountOut, minOut, fee, routePreview

  • redeemSingle(p10In, assetOut, minAmountOut, recipient)

  • mintBasketExact(amounts[]) / redeemBasketProRata(p10In)

  • Events: SnapshotProposed, SnapshotActivated, MintPaused(reason), Minted, Redeemed, SurplusSplit.

All mint paths consume the current snapshot id; a new snapshot is time-locked before activation.


UX tips (what users will see)

  • “Oracle OK” badge (freshness/deviation/TWAP checks).

  • “Expected surplus rebate” on single-asset routes.

  • Clear min-out shown before they sign.

  • Choice of “Simple (one token)” or “Pro (basket)” tabs.

  • Etherscan links + event receipts (Minted/Redeemed/SurplusSplit).


Disclaimers

  • P10 does not include stablecoins; it tracks Top 10 non-stables by free-float mcap with caps and risk filters.

  • Membership and weights change at each snapshot; published ahead with time-lock.

  • In severe oracle incidents or chain issues, mint pauses; redeem remains open whenever technically possible.


  • P10: What it Tracks – eligibility, weighting, cadence

  • Pricing & Oracles – feeds, guards, and parameters

  • Risk & Limits – caps, pauses, and emergency actions

  • Surplus & Rebates – how Flow rebates are calculated and shared

Last updated