Part IV · Protocol
The vault
Each basket is an asynchronous, USDG-denominated vault holding a multi-asset portfolio. The request/claim lifecycle follows ERC-7540; the vault is not a certified ERC-7540 implementation and doesn't claim to be.
- Async by design:
requestDeposit/requestRedeemqueue; settlement happens at execution windows at realized execution prices: depositors get the NAV their capital actually bought, eliminating oracle-latency arbitrage entirely. Requests are cancellable right up until the window settles. - Pending escrow: queued deposits are excluded from
totalAssets()until shares mint. - Inflation-attack hardened: virtual-share offsets plus a factory seed deposit of dead shares in the creation transaction.
- Internal ledgers: NAV and policy math read internally tracked balances, never
balanceOf(); token donations can't distort accounting (reconciled via permissionedskim()). - In-kind redemption: burns shares and transfers a pro-rata slice of every held asset. No oracle call exists in this code path: it works when every price feed on the chain is dead. Un-pausable by strategists; guardian-delayable only during a declared exploit, ≤72h, then force-unlocks.
- Wind-down mode: if a held token is discontinued (issuer tender, delisting), the guardian may trigger liquidate-to-USDG-only trading, after which cash redemptions open and the vault sunsets. Risk-off only, consistent with the no-extraction invariant.