# baskt: A Basket Quote Asset for Token Launches

**Version 0.4 — September 2026**

> Supersedes v0.3. Every parameter left open in v0.3 is now settled and implemented; the sections that
> described unbuilt behaviour have been rewritten to describe what the contracts do. Changes from v0.3 are
> listed in the changelog at the end.

## Abstract

Tokens launched on Robinhood Chain are frequently quoted against a single tokenised stock. The pair then
inherits that stock's price, draws all of its demand from that stock's on-chain supply, and pays that stock's
pool fees on every entry and exit. We propose a basket: a single token backed by fixed quantities of up to ten
stock tokens, minted and redeemed against them by anyone, and used as the quote asset for new launches. A
router converts a stablecoin, or any other token the buyer holds, into the constituents, the constituents into
basket shares, and the shares into the launched token within one transaction. Each launch creates a token of
fixed supply and a Uniswap V3 pool for it that is locked when created, so no party can withdraw its liquidity,
and fixes at that moment how the pool's trading fees are divided between the token's creator, the basket's
curator and the protocol. Measured on mainnet, a basket weighted toward deep, low-fee constituents costs 0.13%
to 0.31% to enter and exit at sizes from $1,000 to $50,000. That cost is set by the depth and fee tier of each
constituent's pool rather than by the number of constituents.

## 1. Introduction

Since Robinhood Chain opened on 1 July 2026, launching a token against a tokenised stock instead of against ETH
has become one of the chain's main uses. On its largest launchpad, about a third of the tokens created between
3 August and 3 September were quoted in a stock token. On 2 September, tokens quoted this way traded $217
million, more than the $127 million traded in the stock tokens themselves.

Quoting in one stock binds three things to it. The token is priced in that stock, so a holder carries the
stock's movements along with the token's own; a token quoted in NVDA is two positions held as one. Every buyer
must first acquire the stock token, so demand for the launched token becomes demand for a fixed on-chain supply
of one stock token, and the pools of one such token have at one point held more than half of its circulating
supply. And every entry and exit passes through that stock's pool, whose depth and fee tier set the cost.
Across the pools measured for this paper, fee tiers ranged from 0.05% to 5%.

Spreading a launch across several stocks needs only a quote asset that holds several stocks while remaining one
token with one price. Splitting a launch into several pools, one per stock, spreads the exposure but gives the
launched token several prices, each set by a different pool. What is needed is a single token, backed by the
stocks it represents, that anyone can create and destroy against them.

In this paper we describe such a token; a router that makes it usable as a quote asset in one transaction; a
launch mechanism whose liquidity cannot be removed; and an incentive for curators to build baskets worth
launching against. We then show, from measurements on mainnet, what determines the cost of using one.

## 2. Stock Tokens

A Robinhood Stock Token is an ERC-20 token, issued by Robinhood Assets (Jersey) Limited, that tracks the price
of a US-listed share or fund. It provides economic exposure to the underlying security. It does not confer
ownership of the security or any right against its issuer. Stock tokens are freely transferable and trade in
Uniswap V3 and V4 pools, mostly against USDG, at fee tiers that differ from one token to another.

A stock token held by a basket is called a constituent.

## 3. Baskets

We define a basket as an ERC-20 token each share of which is backed by a fixed quantity of each of *n*
constituents, where 2 ≤ *n* ≤ 10 and every constituent appears on an allowlist. The basket contract holds the
constituents. Anyone may mint a share by depositing the constituents in the required quantities, and anyone may
redeem a share for them, less the fee described in section 6.

The value of a share is

    V = Σᵢ qᵢ pᵢ

where *qᵢ* is the quantity of constituent *i* per share and *pᵢ* is its price. Shares are issued at an initial
value chosen by the curator, $100 by default. Because the quantities are fixed, each constituent's weight, its
share of the basket's value *wᵢ = qᵢpᵢ / V*, drifts as relative prices move.

Three properties follow from fixing quantities rather than weights, and they are the reason for the choice:

- **Minting and redeeming never read a price.** A deposit is a fixed quantity of each constituent, so the
  operation is arithmetic, not valuation. Baskets therefore keep working when the underlying market is closed
  and cannot be broken by a stale or manipulated feed. Prices are needed only to *display* a basket's value.
- **Rounding always favours the basket.** Deposits round up and payouts round down, so the contract can never
  pay out more than it holds.
- **Nothing can be upgraded, paused, or withdrawn by an owner.** A basket has no owner. Its constituents and
  their quantities are fixed at creation.

The allowlist exists to stop a counterfeit token being passed off as a real one inside a basket; it is synced
from the issuer's published catalogue of 194 tokens.

A basket is created by a curator, who chooses its constituents and their initial weights and posts a bond of
0.005 ETH. The bond is returned when the first token is launched against the basket. If the curator's address
cannot receive ETH at that moment, the launch still proceeds and the bond remains claimable.

**Prices, where they are shown.** Of the 194 allowlisted tokens, 35 have a Chainlink USD feed on chain; the
rest are priced from the issuer's public quote API for display. This affects only what the interface shows,
never what the contracts do.

## 4. Routing

A launched token is quoted in basket shares, but a buyer does not need to hold any. A router performs the
conversion within one transaction:

1. For each constituent, it buys the required quantity from the cheapest available Uniswap V3 or V4 pool.
2. It deposits the constituents in the basket and mints shares.
3. It exchanges the shares for the launched token in that token's pool.

A sale runs the same steps in reverse. The token is sold for shares, the shares are redeemed, and the
constituents are sold for whatever the seller wants to receive.

The buyer chooses what they spend. The router accepts any ERC-20, not only the stablecoin: a constituent that
cannot be reached from it in a single swap is routed through a hub, and the router holds the hub's allowance
only for the duration of that transaction. Everything left over at the end of the path is returned in the same
transaction.

Because every constituent already trades, a basket needs no liquidity of its own and can serve as a quote asset
from the block in which it is created. The router ignores pools that execute custom hook code, since such a
pool can return a valid quote and then revert when the trade executes.

The route is chosen off-chain and executed on-chain against a fixed set of approved venues, within the
slippage limit the buyer sets.

## 5. Launches

A token is launched against a basket through the Doppler Airlock contract, by way of a launcher contract that
enforces the terms below. The launch mints the token's entire supply once, one billion units; the token
contract has no function for minting more.

**The entire supply is sold.** No fraction is reserved for the creator and none is burned. Four fifths of the
supply is spread across a range of prices as a set of concentrated-liquidity positions, so that purchases push
the price upward through the positions in the manner of a bonding curve. The remaining fifth sits in a single
position from the end of that range upward, so the pool retains depth if the token trades beyond it. The
launcher verifies after creation that nothing was left undeployed, and refuses the launch otherwise.

The range is chosen by the creator as an opening and an ending market capitalisation, $10,000 and $1,000,000 by
default. The ending figure is where the dense part of the curve stops, not a ceiling on the price.

The pool is locked at the moment it is created. Its positions cannot be withdrawn by the creator, by the
protocol or by the operator of the Airlock. Apart from trading, the only operation the pool admits is the
collection of fees. **There is no graduation and no migration:** a token trades in the pool it was launched
into for as long as it trades. There is no fee to launch. Launched tokens carry no governance module.

Every token launched this way has an address ending in `ba5c`. The salt is mined off-chain and the launcher
rejects any token whose address does not match, so the marking is a guarantee rather than a convention.

A launch that would open at an inverted price is refused rather than executed.

## 6. Incentive

Two fees fund the protocol and its curators.

**The basket fee** is 5 basis points of shares on every mint and every redemption, half to the basket's curator
and half to the protocol. It is charged in shares, so fee shares are backed exactly like everyone else's, and it
is enforced by the basket contract itself. It therefore applies to any use of a basket, including launches made
on other platforms.

**The pool fee** is 1% of every trade in a launched token. It accrues in whatever asset the trader pays with,
basket shares on purchases and the launched token on sales, and stays in the pool until someone collects it
with an explicit call, which anyone may make. Collected fees are divided in proportions written into the pool
at launch, which no party can change afterwards. The owner of the Airlock receives 5%, the minimum the Doppler
contracts require. The remainder is divided between the creator, the curator of the quote basket and the
protocol in the proportions 75 / 10 / 15.

Per unit of trading volume in a launched token, the parties receive:

| Party | Share of a 1% pool fee | Per dollar traded |
|---|---|---|
| Creator | 71.25% | 0.7125% |
| Protocol | 14.25% | 0.1425% |
| Curator | 9.5% | 0.095% |
| Airlock owner | 5% | 0.05% |

The curator additionally receives 2.5 basis points on every mint and redemption, and so on the fraction of
volume that passes through the router rather than trading against shares already held.

The launcher builds this division itself and refuses to launch with any other, so a token listed as a baskt
launch pays the curator by construction. The curator is paid for being chosen: a basket earns nothing until
tokens are launched against it and traded, and its bond is not returned until the first launch, so a basket
nobody uses costs its curator the bond.

## 7. Weights

Consider a purchase of value *M* into a basket with weights *wᵢ*. Let *φᵢ* be the fee tier of the pool used for
constituent *i*, and *Lᵢ* the liquidity within that pool's active price range, measured in the quote asset. To
first order, the cost of entering and then exiting, as a fraction of *M*, is

    C(M) ≈ 2 Σᵢ wᵢ φᵢ + 2M Σᵢ wᵢ² / Lᵢ

The first term is pool fees, paid once in each direction and independent of size. The second is price impact,
which grows linearly with size. A constituent enters the fee term in proportion to its weight, and the impact
term in proportion to the square of its weight divided by its depth.

Minimising *C(M)* subject to Σ *wᵢ* = 1 and *wᵢ* ≥ 0 gives

    wᵢ ∝ Lᵢ (λ − 2φᵢ)

for a constant *λ* fixed by the constraint, with *wᵢ* = 0 wherever the bracket is negative. Weight should rise
with depth and fall with fee tier. For small purchases the fee term dominates and the optimum concentrates in
the lowest-fee constituents; for large ones it approaches weighting by depth. The approximation fails once a leg
exhausts the liquidity in its active range, beyond which cost rises abruptly rather than linearly.

**This is guidance, not a rule the contracts enforce.** Depth is not stable: over three days of measurement,
the deepest pool for one constituent fell to roughly a ninth of its earlier size while another's roughly
doubled. A cap written into a basket at creation would be stale within days, and a basket cannot be
rebalanced. The interface instead computes each basket's capacity, the largest purchase whose entry and exit
together cost less than 1%, from current pool state, and warns when a proposed weight places cost in a thin or
expensive constituent. Curators remain free to ignore the warning; buyers can see the resulting capacity.

## 8. Measurements

We measured the cost of entering and exiting baskets on Robinhood Chain mainnet between blocks 58,741,600 and
58,756,064 on 9 September 2026. Costs were quoted on mainnet through the route planner described in section 4,
paying in USDG; gas was measured by executing the same routes on forks of mainnet. Cost is the difference
between the USDG paid or received and the basket's value at the measurement block, taken separately for entry
and exit from the same pool state and summed. It includes the constituents' pool fees and price impact, and
excludes the launched token's pool fee and the basket fee. Constituents were added in order of pool depth, with
weights proportional to each constituent's USDG pool depth.

| n | Constituent added | $1,000 | $10,000 | $50,000 |
|---|---|---|---|---|
| 1 | TSM | 0.91% | 1.41% | 2.81% |
| 2 | SKHY | 0.96% | 1.53% | 2.74% |
| 3 | INDA | 0.81% | 1.27% | 2.15% |
| 5 | NBIS, EWY | 0.89% | 1.33% | 2.14% |
| 8 | NVDA, AAPL, SPY | 0.14% | 0.20% | 0.28% |
| 10 | MSFT, GOOGL | 0.13% | 0.21% | 0.31% |

With the first five constituents weighted equally, the cost rose to 1.02%, 2.45% and 6.16% at the same three
sizes.

The drop between five and eight constituents is not an effect of count. The three constituents added at that
step trade in deep pools with a 0.05% fee tier, and at eight constituents they carry about 85% of the basket's
weight. The second row shows the converse. Adding a moderately deep constituent with a 0.888% fee tier raised
the cost at $1,000 and $10,000, where fees dominate, and lowered it slightly at $50,000, where impact does.
Both results are what section 7 predicts. Computed from the $10,000 round trips and each constituent's fee
tier, pool fees make up 57% to 78% of the cost, depending on the basket, and equal weighting was the most
expensive arrangement at every size. By the same reasoning, a single constituent in a deep, low-fee pool would
also be cheap to enter and exit. What the table measures is the effect of composition.

Each additional constituent adds about 0.5 million gas to an entry and exit. At the gas price observed during
measurement, a five-constituent round trip cost $1.13 in gas.

**What it costs to move a launched token up its curve.** On the default range, measured against live pools:
about $10,600 of buying reaches a $100,000 market capitalisation, about $99,000 reaches $500,000, and about
$290,000 completes the curve at $1,000,000, at which point 79% of the supply has been sold. Beyond the curve
the remaining fifth of the supply is thinner, so the price rises faster.

## 9. Conclusion

We have described a quote asset for token launches that holds several stocks without splitting a launch across
several markets. A basket is one token, backed by fixed quantities of its constituents and created or destroyed
against them by anyone, so a token launched against it has one pair and one price. Minting and redeeming read
no price, so a basket cannot be broken by a feed. A router makes it usable from a stablecoin, or from whatever
the buyer already holds, in a single transaction. Launches deploy the entire supply into pools that are locked
when created, with the division of fees fixed at the same moment, so neither the liquidity nor the terms can be
changed later. Curators are paid only when their baskets are chosen. The cost of using a basket is set by the
depth and fee tier of its constituents' pools, not by their number.

## Parameters

| Parameter | Value |
|---|---|
| Constituents per basket | 2 to 10 |
| Basket fee | 5 bps of shares each way, split half curator / half protocol |
| Curator bond | 0.005 ETH, refunded on the first launch |
| Launch supply | 1,000,000,000, entirely sold |
| Creator reservation | none |
| Pool fee | 1% |
| Supply on the curve / in the tail | 80% / 20% |
| Default market cap range | $10,000 to $1,000,000 |
| Pool fee split | Airlock owner 5%, then creator 75 / curator 10 / protocol 15 |
| Launched token address | ends in `ba5c` |
| Launch fee | none |

## Changes from v0.3

- **Creator reservation removed.** v0.3 allowed a fraction α of supply to be reserved. The entire supply is now
  sold into the pool, and the launcher rejects a launch that would leave any of it undeployed. v0.3's
  arrangement also burned part of the supply in practice; it no longer does.
- **Fee split settled** at 75 / 10 / 15 of the 95% that remains after the Airlock owner's share, and enforced
  on-chain by a launcher contract rather than left to whoever launches.
- **Basket fee settled** at a fixed 5 bps split between curator and protocol, replacing a curator-chosen fee of
  up to 1%. Being enforced by the basket contract, it cannot be routed around.
- **Curve share stated:** 80% of supply on the curve, 20% in a tail above it.
- **Section 7 rewritten** as guidance with a live capacity measure, rather than a cap the protocol enforces.
- **Section 9 of v0.3, on a protocol token, is removed** until that token has a defined function.
- **Token addresses** now end in `ba5c`.
- **Routing** now accepts any input token, not only the stablecoin.
- Section 8's method is stated accurately: quoted on mainnet, executed on forks for gas. The block range is
  corrected to 58,741,600–58,756,064, and the pool-fee share of cost is described as computed rather than
  measured.
- Wording corrections throughout: the initial share value is a default rather than a rule; fees go to the
  curator's fee recipient as at launch; the router plans a route before the transaction and executes it within
  the buyer's slippage limit; the hook-pool opt-in described in v0.3 does not exist.

## References

1. H. Adams, N. Zinsmeister, M. Salem, R. Keefer and D. Robinson, "Uniswap v3 Core", 2021.
2. Uniswap Labs, "Uniswap v4 Core".
3. Chainlink, "Data Feeds", docs.chain.link.
4. Whetstone Research, "Doppler", github.com/whetstoneresearch/doppler and docs.doppler.lol.
5. Robinhood, "Stock Tokens", Robinhood Chain documentation.
