Skip to main content

Contracts

The complete contract reference: what each contract is for, in one line, and where to find it.

Stage 1 is live. The 56 contracts it deployed on Robinhood Chain mainnet (4663) — the only supported network — carry real addresses below, every one of them verified. A row marked stage 2 is not deployed: it has no address, and anything on chain answering to that name is not this protocol.

Stage 1 is contracts only — there is nothing to buy

INVEST total supply is zero. The anchor pool is pinned but holds no liquidity, there are no sell walls, no bond market and no fee flywheel, and the posted self-service lane ships closed. Read Deployment status before reading any other page here as a description of today.

Explorer: https://robinhoodchain.blockscout.com/address/<address>. All 56 are verified on Sourcify (exact match), which Blockscout ingests, so each reads as verified there.

Tokens​

ContractWhat it doesAddress
InvestTokenINVEST, the native token. 9 decimals. Minted only by the Treasury. A plain ERC-20 — no transfer hook, no exemptions; every transfer moves exactly what was sent.0xE1D5a81E74354c44D3610578c90b6542C2DA240a
SharesSHARES, staked INVEST. 9 decimals, rebasing — balances grow each epoch.0x44001dD7Abf94A934A6609f646b43ACdfd4A4FDc
GInvestgINVEST, the non-rebasing governance wrapper. 18 decimals, timestamp voting clock, the only voting token.0xf8B6629E19e3eb54E58082bF0Aed027E0D274b69

Core​

ContractWhat it doesAddress
TreasuryHolds every reserve, marks them in USD through vetted feeds, and is the sole minter of INVEST.0x155516c796f11d703d4b2C360BC10Ace8013c6F8
StakingStakes INVEST into SHARES or gINVEST, runs the epoch rebase, and manages warm-up positions.0x68a000bC77bBd1652451995ac71F528aBA8Faa41
DistributorMints the per-epoch emission to staking, capped at excess reserves.0x3b2Aa7f0Fc8976fF2E6c1903964423a9ef583801
BondDepositoryRuns the bond markets: sells INVEST for reserve assets at a decaying, floored price, with payouts vesting as gINVEST notes. It has no price-above-market check, and at genesis the floor binds well above spot.0x850C1A0a8909EBE9A950864B151f8D63cca6027B
no market exists — stage 2 creates the first
PolicyGuardThe bounded operator path for opening bond markets. Enforces the capacity caps and the price floor.0xB96c82607Bdc419DBA3aB1bdBF4f97eB9fFA9ecF
RedemptionModuleThe redemption backstop: a pro-rata, oracle-independent claim on raw reserve tokens. Its role is frozen and governance cannot revoke it. The anchor pool share is counted in the backing it divides but is structurally barred from the payout, by immutable address, so a basket that names it is refused by name rather than failing obscurely. It has three such slots and uses one: a sell wall needs none, because it is not a reserve at all and a basket naming one is refused for that reason instead.0x36A0732BC2aa70A34a4d99df233237984D4Ff481
ICAuthorityThe role registry every other contract reads to answer "who is governor, guardian, policy, vault".0x7cf95e0815E89b695945aF2120933Fd96E1BFd63
the deployer still holds governor and guardian

Governance​

ContractWhat it doesAddress
ICGovernorThe Boardroom: proposals, gINVEST voting and quorum, on a timestamp clock.0x34904663621Ad9A298fa63B9f8393f0Ac30b5dcF
TimelockControllerQueues and executes passed proposals — and is the Treasury's governor, calling every privileged function directly.0xc3bC0fb48D2812F89896F5455fF48DF9a50a38FF
not yet the Treasury's governor

Launch and the fee flywheel​

ContractWhat it doesAddress
PolVaultThe anchor. The protocol's only two-sided position: one full-range position in one pinned, hookless Uniswap V4 pool — 5.00% fee, tick spacing 32,767 — wrapped as a non-transferable share the Treasury holds 100% of. One instance, INVEST/USDG, designed to hold 60% of the supply against the whole seed at an opening price of seed ÷ the anchor's INVEST. It pins and initialises its pool on deployment — the instance below was pinned at $0.138889 per INVEST, the earlier $5,000 sizing, before the seed was resized to $10,000 (see Deployment status) — is seeded once, at stage 2 — which has not run, so it holds nothing — and lets anyone sweep the accrued fee to the collector. It is never bought into on the open market; it is grown, by decree, through PolMigrator.0xC6922da56539703cbEDB30e29e040fE820265613
pool pinned, zero liquidity, not seeded
PolLadder ×4The sell walls. One one-sided INVEST position per pool, in a pinned hookless Uniswap V4 pool at 5.00% and tick spacing 2,048, quoted in RCAT / WYFI / HIMS / DJT and holding 10% of the supply each. It takes no quote leg, so it costs nothing to seed, and it has no share, no price feed and no Treasury registration — a wall is not a reserve. Its inventory is offered from a wall price three times the launch price upward. realise() is the permissionless call that hands a filled wall's stock to the Treasury by plain transfer and re-mints the remainder at a higher wall; it is the only route a wall's sale has to backing, and the wall can only move up.stage 2 — not deployed
PolMigratorThe one contract allowed to add to the anchor position, and only by Boardroom decree. Two lanes, both spending reserves the Treasury already holds: unwind a Treasury-held Uniswap V2 INVEST/USDG LP into the V4 position, or pair Treasury USDG with INVEST minted at the pool's live price behind a price floor the proposal names. Leftover quote returns to the Treasury, leftover INVEST is burned, and the share lands in the Treasury in the same transaction. Holds no funds between transactions. No wall has one, or can: there is no share to mint pro-rata and no quote leg to pair. Its minting lane also passes the excess-reserves gate, which is closed at launch.stage 2 — not deployed
TaxCollectorThe pool-fee collector, and the registry of the pools it collects from. One permissionless call cranks all five positions. Receives fees in six currencies: it sells the INVEST from every pool for USDG under a median-price floor — into the anchor pool only, and a wall is refused by name because it holds no cash — splits everything it holds between the team and the treasury (the treasury's half going to the FeeAllocator desk), and forwards the four stock fees to the Treasury in kind, never sold and never minted against, less the same decaying team share.stage 2 — not deployed
PairOracle ×5The sampled-median price oracle over one protocol-owned pool: sixteen observations, thirty minutes apart, a valid window of 30 minutes to 4 hours. Fail-closed — no valid window, no price. It answers in that pool's own quote, not in dollars; the anchor's is the one anything outside the fee loop reads. A wall's is dormant, not broken, while its pool is out of range — which is every wall, at launch.stage 2 — not deployed
FeeAllocatorThe accumulation desk. The treasury's share of every pool-fee distribution lands here and is split, by weight, across the destinations governance has approved — with a floor under reserve accumulation that only a vote can move. Governance approves each destination and sets the floor; the operator sets the weights inside it; the split itself is permissionless and holds no seat. Registered with the Treasury as a trusted holder, so stablecoin in flight still counts as backing, capped.stage 2 — not deployed
ReserveAccumulatorTurns the accumulation share of the pool fees into a governed basket of reserves, and runs bounded reserve rotations.stage 2 — not deployed
V4SwapExecutorThe Uniswap V4 swap engine the accumulator uses. Holds no funds, no policy and no permissions of its own.stage 2 — not deployed
ReserveListerThe narrowly scoped delegate that lets an operator activate assets governance has already vetted.0x9D177A770F7BeB6e1DBa73Bfc9231af00B443390
PostedSelfServiceLaneTurns "may this asset be listed?" from a vote per asset into a policy governance approves once. It admits an asset only when the asset proves, on-chain, that it is one of Robinhood's own factory-issued stock tokens; it deploys the price feed itself, from fixed code, with governance's timelock as its only administrator; and it hands the lister a record built entirely from the policy. Ships switched off, and closing it again is one governance action.0xcF31925d351abD254A4d9Ef06Db1087fF464c868
seated but closed — no policy armed
PostedRefReaderThe lane's view-only sidecar: it derives the pool a listing reference names rather than accepting a pool address, so a would-be lister can never point a reference at a contract they wrote. Holds no funds and no permissions.0xe831d3B7C154dE22d58C2502311Ccb91cc6E63b1
V4PositionVaultThe Treasury's Uniswap V4 liquidity desk: a bounded, governor-policed position in one pinned hookless pool, funded from reserves and held as a non-transferable share that is valued but never paid out. Refuses a deposit whenever its pricing has drifted from what governance approved, and keeps every exit open regardless. Installed after genesis, one per pool.stage 2 — not deployed
V4PositionValuerThe vault's view-only arithmetic sidecar, deployed by the vault itself: oracle reads, deposit sizing and the oracle-implied valuation. Holds no funds and no permissions.stage 2 — not deployed

Price feed adapters​

Each of these presents an ordinary oracle interface to the Treasury, so the Treasury itself never changes to accommodate a new kind of asset.

ContractWhat it doesAddress
LastPriceFeedWraps an oracle feed so a bounded publication gap — a closed equity market — does not make the asset unpriceable.35 deployed — one per oracle-fed reserve row; addresses below
UniV2TwapFeedA guarded on-chain TWAP for assets with real liquidity but no oracle feed.stage 2 — not deployed
PostedPriceFeedA manually posted mark for assets with neither an oracle nor a usable pool, bounded per post and per day.5 deployed and live — RCAT, WYFI, HIMS, DJT, AMC, each on a 24-hour heartbeat; addresses below
RateComposedFeedComposes an exchange-rate feed with the underlying's USD feed, for wrapped staking assets.stage 2 — not deployed
UniV2FairLpFeedA manipulation-resistant mark for INVEST-paired LP tokens.stage 2 — not deployed
PolPositionFeedThe conservative mark for the anchor share: min(vQuote, sqrt(vINVEST@$1 · vQuote)), with the INVEST leg pinned at the $1.00 backing target and never read at market. One instance, because there is one share. Its quote is USDG, and one whole share is one whole quote token, so it marks at exactly $1.00 at launch. The sell walls have no share and no feed at all.stage 2 — not deployed
PairOracleFeedPresents the anchor pool's median price as an INVEST/USD reference. Used only as the bond price band reference, never as a reserve feed — and never built over a stock-quoted pool, which would let a price the protocol publishes decide how cheaply bonds mint INVEST.stage 2 — not deployed
V4PositionFeedMarks a V4 position vault share at the oracle-implied price of its positions — principal only, never fees, never spot — carrying each leg's own price band and pause flag, and never reading the Treasury. One per vault.stage 2 — not deployed

Deployed price feeds​

Stage 1 deployed 40 feed contracts: the five manually posted marks, and one LastPriceFeed wrapper for each oracle-fed stock and ETF row. All 40 are verified. A feed is only a price; none of them holds an asset, and the Treasury's balance of every asset below is zero.

The five posted marks​

These are the only part of the protocol doing anything today. Each posts a mark on a 24-hour heartbeat, so its reserve row stays fresh. A posted price carries the deepest discount in the protocol and the tightest posting budget — a limit per post, a limit per rolling day, and a hard sanity band — because it is a number somebody types rather than a number an oracle publishes.

AssetTokenPostedPriceFeed
RCAT0xFDE6b5d9BB419B10C23268c74e369AbFF39C04600x0A7691f1E6Cc16fc9320522b5f57Aea37F081a5e
WYFI0x9e7ABD3C9139D14E4c86DcE0e455AAB7A0C2FB3E0xFe9D2D434097B23c2a4a67d32d6b7Bf315495364
HIMS0xCceE82fE024c36fA15E1005edE3E9e4787e23D090x786BB3F1dE141266d23C3bAC13c25561D0a23A8d
DJT0x1D11f0496982706C5e14A514D4E79F2e6BdE45160x9dd703Cf452F1D76524F8fcebDD5aD7802b4b5B1
AMC0x05a3d1Cd21d0C88145E82600E62e7E496e0F222B0x40Ea928f61C4B8E57B95Aa0452D1B2F79291d6D5

RCAT, WYFI, HIMS and DJT are the assets the four sell walls are quoted in — none of which exists yet. AMC is the one name the treasury is listed to buy. All five are registered and enabled reserve rows holding nothing.

The 35 oracle wrappers​

One LastPriceFeed per oracle-fed equity and ETF row. The wrapper is the address the Treasury reads; the underlying is the Chainlink aggregator it wraps. They are not interchangeable — pointing the Treasury at the underlying would drop the staleness allowance that lets a closed equity market still be priced.

AssetLastPriceFeed — what the Treasury readsUnderlying Chainlink feed
AAPL0x795A7fc360d768169E198cC3b24EF304FCF2232D0x6B22A786bAa607d76728168703a39Ea9C99f2cD0
AMD0x9f2dEB21241331Ff298583De2d3F5fb1FbDd789b0x943A29E7ae51A4798823ca9eEd2ed533B2A22C72
AMZN0x7bc8c8C0F0724250E8C758e1aA087Ed679c93A2D0xD5a1508ceD74c084eBf3cBe853e2C968fB2a651C
ASML0xC3FaF8f509Ac7730117b05E82516D3d9cffFC60E0xB4106147E8cce40b7d46124090d373A71b70f87D
BABA0xdBF583F880A03711935Ae7b1CeA0f315E866D0EF0x62Cc8F9b5f56a33c9C8A60c8B92779f523c4E984
CLSK0x8D9c9E1287F81c2be25820210083E4A5fCf5fFfc0x810c12D3a554Bc47fd39597Fe3b3AAC4941F50eF
COIN0x014E8Aa62B069029389e1AC3F7381306A2C77eAb0xA3a468A452940B7D6b69991207B508c609a98Ef2
CRCL0x98DE4088d0F1D413498C30edB7de42eB929B4E190x6652eDf64bA3731C4F2D3ce821A0Fb1f1f6b482a
CRWV0xf70AF077f0c4C557F5546daf9D3EbE4e85c56A810xe1b3aABCAFAd1c94708dc1367dcfF8Aa4407487C
DELL0x7Ba049a858C387c20697f7c9300c373B3F451d740x1C6c8cADBe02E19129c39dDB92281cE4c0bf206b
GME0x8525b6BB6f4cF2d36879b295c24a63f75d92ca6A0x27C71df6A64fB476468EdF256CF72c038baB5B67
GOOGL0x1d3D8d5D7a63a7c22C6f3a310B79539417f506B50xF6f373a037c30F0e5010d854385cA89185AE638b
INTC0xB582a0673A5E529C12E7B35d64C2b5db938970Ea0x3f390C5C24628Ac7C489515402235FeAD71D1913
IONQ0x06AB4923Df694D6605a84cD4BdaD91561C60a4750x22EfeC4919baf55F360E0EDee4AbEB26DE4971eb
META0x7451DFCF45696bd427EDE8d6867B4eeC42d867760x7C38C00C30BEe9378381E7B6135d7283356D71b1
MSFT0x5eaF717A8808Cf32c043C40Df5d66E372f02EB080x45C3C877C15E6BA2EBB19eA114Ea508d14C1Af2E
MSTR0x50B69dE0F6eEe0EDd971B3aD23d80891Be8198FF0x396118bdFB181e6240E74D243F266B061c0edc3D
MU0xEE693A3888EbA8d273fd59F31684D22Cbe4b0af90x425EEFdCf05ed6526C3cE61Af99429A228a6d596
NBIS0xAa48F8A6Cf5E86a2F6d0642891cb58b255340c4e0xE1D87B116Ba0fe898998f1D140339D1fA1E09705
NVDA0x3Cb4054d973D58c32335bFF387FC216f43bECd400x379EC4f7C378F34a1B47E4F3cbeBCbAC3E8E9F15
ORCL0x31E9e6019a79692E2883797aA551A070a6e943200x0e6a64a2B58A6693a531E6c555f3A5d042eEA844
PLTR0xdbAf284A1BC16f08F10ADB611eE8679F59F6d9B80x820ABedFF239034956B7A9d2F0a331f9F075eB4c
RGTI0x16e70Fab6087aBd260587718167B0fd280685c7C0x2A045cF1C49c61c166C036d2f06FA2D2d984f765
RKLB0xC189201a588Be78244166BC90273193DeC843C170x045477BF65Aef6f4F2386ad0164579e48381CC74
SNDK0x287864F5Dc9a1ae6a57e946F486CD928cD822A500xfb133Fa4B7b385802B693a293606682Df47109A3
SPCX0x02A5B6e5854F73F1636E3a1c66f9Da2Bb8A9dE3E0xB265810950ba6c5C0Ff821c9963014a56fD8Bffb
TSLA0xEc260Bf109182DFE1C9aE1b6c553AC57cc205bF90x4A1166a659A55625345e9515b32adECea5547C38
TSM0x6D7989B657A29a50c5c8bDA139e8B947fCb4aaDc0x874cF94aa8eC88Fd9560094dD065f2fB3E41Fc2F
USAR0x1e97e0042933da4FE04bbADB041f83D9d0F17B280xA994d3684e8400A6c8078226925779FdeE682DD9
EWY0x2EbfbD54e939Bbdc1152f85053b6dd81d305C1A00xEFdf54610B62A7753Ec30bDc380847c12D32e1D1
QQQ0x46e8f9c1a20678b4d61Ff2738E575fB68E65238f0x80901d846d5D7B030F26B480776EE3b29374C2ae
SGOV0x44652D629c4E9840FaaB7aBE7A9D2aF0b1706f580xa0DF4ee0fFf975306345875E3548Fcc519577A11
SLV0x525106C266dA28B27e740747C0c86C7aB66278940x209b73908e92Ae021826eD79609845451Ecba2ce
SPY0x2D574e7fdda52e03B272aC7AEAEe51805E8e290e0x319724394D3A0e3669269846abE664Cd621f9f6A
USO0xC2325DdDcA776B0db338ba47826B348230E34d780x75a9c76Ef439e2C7c2E5a34Ab105EcFe3766431c

The remaining 8 registered rows — USDG, WETH, WBTC, cbBTC, USDC, USDT, LINK, wstETH — are read straight from their Chainlink feeds and need no wrapper, because those feeds do not stop publishing when an exchange closes. Their addresses are in Robinhood Chain facts.

Treasury games​

ContractWhat it doesAddress
GameHouseThe bankroll vault games play against: escrows wagers, locks worst-case payouts, settles rounds.stage 2 — not deployed
CoreGameHouseFactoryDeploys and recognises the single canonical house for this treasury.stage 2 — not deployed
CoinFlipA coin flip paying true odds on the rake-net stake.stage 2 — not deployed
DiceRollA variable-probability roll paying true odds on the rake-net stake.stage 2 — not deployed
PrizeDrawA pooled ticket draw. Escrows its own pot; draws no bankroll.stage 2 — not deployed
JackpotA pooled ETH round paid out in a randomly chosen tokenized stock. Escrows its own pot; draws no bankroll.stage 2 — not deployed
LockLotteryThe loss-less daily draw. Lock gINVEST for a week or more — a longer lock earns a higher multiplier — and each day five distinct addresses win a share of the pot, with chance proportional to locked weight. There is no house, no wager and no edge: the prizes are funded by the FeeAllocator out of the protocol's own fee revenue, and no code path sends a locked deposit anywhere but back to the address that locked it. Added after genesis; played in a separate games app.stage 2 — not deployed

Chain constants — Robinhood Chain mainnet 4663​

These already exist on-chain. They are not Investors Center contracts; the protocol is built against them.

Address
USDG — the anchor pool's quote asset and the genesis reserve0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168
RCAT — a sell wall's quote asset0xFDE6b5d9BB419B10C23268c74e369AbFF39C0460
WYFI — a sell wall's quote asset0x9e7ABD3C9139D14E4c86DcE0e455AAB7A0C2FB3E
HIMS — a sell wall's quote asset0xCceE82fE024c36fA15E1005edE3E9e4787e23D09
DJT — a sell wall's quote asset0x1D11f0496982706C5e14A514D4E79F2e6BdE4516
WETH0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73
Uniswap V2 factory0x8bcEaA40B9AcdfAedF85AdF4FF01F5Ad6517937f
Uniswap V2 router0x89e5DB8B5aA49aA85AC63f691524311AEB649eba
Uniswap V3 factory0x1f7d7550B1b028f7571E69A784071F0205FD2EfA
Uniswap V4 PoolManager0x8366a39CC670B4001A1121B8F6A443A643e40951

These are looked up on the same explorer as everything else: https://robinhoodchain.blockscout.com/address/<address>.

Pre-existing shared game infrastructure​

Robinhood Chain already carries a shared game plugin registry and a game-house beacon that predate Investors Center:

ContractAddress
Game plugin registry0x83fDE29C9c38b1300e64C5DBA5E0e465031B109a
Game house implementation0x8fe7C3E52f15b3cAd28ADB40B7b9384C23d03047
Game house beacon0x7727E6c60896893E23e575ECa5e8e88dCb82eA3B
These are not the Investors Center games lane

Any game house or plugin instance already deployed on 4663 is bound to a different treasury and cannot serve this one. The Investors Center lane needs its own house and its own game instances, built against the Investors Center Treasury. Do not treat an address found on-chain as belonging to this protocol unless it is published on this page.

Reserve assets and price feeds​

Stage 1 registered and enabled 48 reserve rows: 43 against oracle feeds, plus five posted rows — the four sell-wall stocks and AMC — against manually posted prices. Every one of them holds nothing; a registered row is a place to count an asset, not the asset. The canonical token and feed addresses for every tokenized stock, ETF and bridged crypto asset on the chain are catalogued in Robinhood Chain facts. How an asset gets there is Reserves and listing.