Buying and redeeming
What happens when you press the button, what it costs, and why you can always get out.
You can get a Basket two ways: buy it on a market like any other token, or mint it directly from the protocol. Minting is the one that matters, because it is what keeps the market price honest.
Minting
Pay with one token: ETH, a stablecoin, whatever you hold. In a single transaction the protocol buys each underlying asset at market price and issues you the Basket.
you send ETH
↓ buys each underlying asset through an aggregator
↓ deposits them into the Basket
↓ issues you the token
↓ refunds whatever was not spentYou never touch the underlying assets yourself. Without this you would be doing six swaps, seven approvals and a deposit by hand, with prices moving between each step.
It either completes at the quoted amounts or it reverts entirely. There is no half-finished state where you have paid and received nothing.
Redeeming
The mirror image, and it is always available. The protocol burns your token, takes your exact share of the holdings out, sells each asset, and pays you in the token you asked for.
Nobody approves this. There is no queue, no notice period, and no discretion. It is a function anyone can call, and it works whether or not the person who created the Basket is still around.
What it costs
Three things, and only the first is charged by the Basket:
The Basket's fees. Set by whoever created it, and shown before you confirm. Many charge nothing. See What it costs.
Market cost. Buying the underlying assets moves their price slightly, exactly as buying them yourself would. On the deeper assets this runs a fraction of a percent; on thin ones it is larger, and the quote shows it before you commit.
Gas. On Robinhood Chain this is small. The first CATS mint, two aggregated swaps plus an issuance, cost about ninety cents.
Prices come from the market, not an oracle
Nothing in buying or redeeming reads a price feed. The protocol goes to the market and takes the price it finds.
This matters more than it sounds. Systems that price deposits from an oracle can be exploited when that oracle lags the market: someone deposits at yesterday's price and the difference comes out of existing holders. Basket has no oracle in that path to lag, so the attack has nothing to work with.
Prices are shown for information. Where a Chainlink feed exists the interface reads it, because an oracle beats one pool's spot, and everything else is priced against the live market. It always says which of the two it read. If a price on screen looks stale, it may well be: the equity feeds only update when a price moves half a percent, and they go quiet overnight and at weekends. That affects what you are shown, never what you are charged.
If one route is unavailable
Quotes are sourced from more than one aggregator. They go down independently: during development one of them stopped answering on every chain except Ethereum for over an hour, while the market itself carried on trading normally. When that happens the other one is used, and buying keeps working.