Session — stage 0, asset pairing
Closed 13 Sep 2026. What a token can be paired against. Research, then build, behind two
checkpoints, both passed. Project state is in notes/STATUS.md; the durable research is in
notes/references/reality-rtokens.md and robinhood-stock-tokens.md.
Done
- Research: a smart contract can hold a Bitget rToken, conditionally. No allowlist; the gates are a
sanctions list, freezes, a pause and an upgradeable beacon. Proved on chain and on a fork. The
catch: rTokens rebase
balanceOfon splits and zero it on delisting, so a raw rToken breaks the curve and a v4 pool. Every tokenised stock on Arbitrum does some version of this. - Robinhood Chain for comparison: its stock tokens never move
balanceOf, only a UI multiplier, which is why par pairs them raw. Stock-quoted launches are ~1% of par's volume. - Built:
check-boundariesinmake checkand CI — the core andsrc/assetsnever import each other.IQuoteSourceandLaunchFactory.quoteSource— unregistered quotes are asked of a source.BasketFactory— weights in bps against reference units, one basket per composition, a USDT payout slot, enabled and curated flags.
- Proved:
StockPairing.fork.t.solruns real rNVDA through a basket, through Reality's own split and pause, and throughBasketFactorywith real USDT0.BasketLaunch.t.solruns a composed, curated basket end to end locally.make check145/145,make test-fork11/11. FEATURES.mdstage 0: single stock ✔, composed basket ✔, curated basket ✔.
Decided — do not relitigate
- D18 — a token whose
balanceOfrebases is never a quote, only a pro-rata wrapper of it. The developer's call: adapt to Bitget, do not wait for them to change the token. - D19 — stage 0 lives behind the quote seam and is enforced by
check-boundaries, because the developer expects to return to pairing. - D20 — the quote-source seam. The one deliberate core crossing, so pairing never needs another.
- D21 — one basket per composition (answers O13, flagged as likely to change; the factory is upgradeable for that reason) and reference-unit sizing, which enforces D14's 10% floor without an oracle.
- Pauses and weekends make a basket's pool price stale, not its books. Accepted as market risk; a live price would need an oracle. The interface should say "market closed".
- Dividends are parked by the developer. O18 stays open.
Still open in this thread
FEATURES.mdstage 3 still lists "a restricted quote asset graduates through a permissioned pool". The research says rTokens do not need it. The developer has not said whether to drop it.- Multi-stock baskets are proved with mocks only; real rTokens one at a time.
- Nothing wires
BasketFactoryinto a deployment.Deploy.s.solknows neither it norsetQuoteSource. - Questions for Bitget are in
reality-rtokens.md, now optional rather than blocking.