Redeeming
Unwind a basket into its constituents. Always available, no fee.
Redemption is the product's core trust guarantee: no state of the contract (no pause, no cap, no guardian action) can ever block a redeem. A dedicated test in the suite redeems while minting is paused and the supply cap is below total supply, and it must always pass.
In the app
Enter an amount on the basket's redeem tab, preview the constituent amounts you'll receive, confirm one transaction. No approval is needed (you're burning your own tokens), and there is no redeem fee.
Prefer to exit to a single asset? Use zap-redeem to burn and sell everything for USDG or ETH in one transaction.
From a contract or script
IBasketToken basket = IBasketToken(0xe1c1ADAD813736427B334e798fd2EbC7d2C7A9DF); // MAG7
// preview what 1.0 MAG7 unwinds into
(address[] memory tokens, uint256[] memory amounts) = basket.backingOf(1e18);
basket.redeem(1e18, msg.sender);- Payouts are
floor(amount × units[i] / 1e18)per constituent; rounding favors the vault by at most 1 wei per token. redeemburns from the caller and sends constituents toto.- Emits
Redeemed(sender, to, basketAmount).
The one thing that can interrupt redemption
Redemption transfers the underlying tokens, so it depends on those tokens being transferable. Robinhood Stock Tokens are issuer-controlled: if the issuer freezes or pauses a constituent, redeeming the whole basket reverts until the freeze lifts, because redemption is all-or-nothing by design (there is deliberately no partial-redeem escape hatch; it would complicate the contract's invariants).
This is issuer risk, inherited and not removable: it applies to holding the Stock Tokens directly just as much as through a basket. It is the main reason deposits are capped and the dominant item in Risks. (HOOD6's chain-native constituents have no issuer and no freeze function.)