Buy, sell & redeem
There are two ways in and out of a basket: one-click zap (using the USDG stablecoin) and in-kind (using the underlying tokens directly). Zap is convenient; in-kind always works.
Before you start
- Connect a wallet on Robinhood Chain (chain id 4663). The app auto-switches/adds the network.
- For personalized features you'll sign in with SIWE (a gasless signature).
- The first time you try to transact, you accept a one-time risk attestation (per wallet). This gates transactions, not browsing.
Buying with one-click (zap in)
Best when you just want exposure and hold USDG.
- On a basket's page, choose Buy, enter a USDG amount, and set your slippage tolerance (default 0.5%).
- The app requests a quote from
POST /v1/zap/quote. The backend splits your USDG across the constituents by on-chain value, finds the best swap route per leg, and returns a ready transaction plusexpectedSharesand aminSharesfloor. - Approve USDG for the HoodZapRouter if needed, then submit. In one transaction the router swaps your USDG into every constituent, deposits them into the basket, and mints shares to you. Leftover USDG is swept back.
The minSharesOut floor is enforced on-chain by the basket — if the market moves past your slippage, the transaction reverts rather than filling at a bad price. Quotes expire after ~5 seconds; refresh if it lapses.
One-click buy is only offered when every constituent has a usable swap route. Baskets with a thin/illiquid constituent show as in-kind only.
Buying in-kind
Best when you already hold the underlying tokens, or when a basket isn't zappable.
- Choose the in-kind (advanced) flow. The app shows the exact units of each constituent required for the shares you want, in the vault's current ratio.
- Approve each token for the basket, then call
mintInKind(sharesOut, to). - You receive
sharesOutshares minus the entry fee.
In-kind mint is oracle-free — it works even when price feeds are stale.
Selling / redeeming
Redeem in-kind
Burn shares and receive your proportional slice of every constituent back.
- Call
redeemInKind(sharesIn, to). You receive each constituent minus the exit fee's share. - This path is permissionless and can never be paused — it's the vault's solvency guarantee. It never depends on an oracle.
Zap out to USDG
Burn shares and get USDG in one transaction.
- Request a
direction: "out"quote (theusdgAmountfield carries your share amount here). Approve the router for your shares, then submitzapOut. - The router redeems in-kind, swaps every constituent to USDG, and enforces your
minUsdgOutfloor on-chain.
Fees you'll pay
| Fee | Typical | Charged |
|---|---|---|
| Entry | ≤ 3% | when you buy (zap or in-kind) |
| Exit | ≤ 1% | when you redeem |
| Management | ≤ 3%/yr | streamed continuously via dilution while you hold |
Each fee is split 90% to the basket's creator, 10% to the protocol. Exact fees are shown on every basket and previewed before you confirm.
If the backend is degraded
The API can be down or price feeds stale while the chain is fine. In that case one-click zaps may be unavailable, but in-kind mint and redeem still work — they're pure on-chain calls. The app marks stale NAV clearly and steers you to in-kind.