Documentation

AI stocks

Coinbase issues tokenized stocks on Base under the B20 standard. Six of them cover the companies building the intelligence: NVIDIA, Alphabet, Meta, Microsoft, Amazon and SanDisk. On Inference Markets they do two jobs — a creator can pair a market with one of them, and any holder can ask to be paid their fees in one instead of in the market's coin. They are real assets with real markets, so nothing about them is minted or pegged here.

What a B20 token is

A B20 token is an ERC-20 extension with 8 decimals, backed 1:1 by shares custodied with Alpaca, issued to non-US persons. Holding one and trading it on a secondary market is permissionless. Three rules come with it and they matter:

  • A transfer to a sanctioned address reverts.
  • The issuer can pause TRANSFER for a token.
  • Corporate actions never rewrite balances. A WAD multiplier absorbs splits and dividends, and the Chainlink feed reports price × multiplier, so a split changes the multiplier and leaves every balance and every pool position exactly as it was. The multiplier was 1.0 when we last read it.

Always call these tokens, not shares. A token is a claim on a share through that multiplier, and the two are not the same object.

Symbol Company B20 token Chainlink feed
NVDAc NVIDIA 0xb20000000000000000000078ee7ce2fE4908108C 0x04689a41629776563E6822F76f2e57D148d28513
GOOGLc Alphabet 0xb2000000000000000000002D0BA3164cc74f58B7 0x5bF49E0ffA937CE2FfF033c739aD7C634c4D34F2
METAc Meta 0xb2000000000000000000008bC8786B856E61707C 0x6526aE6797A76123638b863AeE4dD27Ba4E4b27D
MSFTc Microsoft 0xB200000000000000000000Ab99cFa739E253872B 0xeB10A6c9aa7E537aEd766C08c35Dae35B321b18c
AMZNc Amazon 0xb200000000000000000000d9192b6B456483C2E8 0x06A8E4b3aBB3B7543d8396FB2B763d22820cB295
SNDKc SanDisk 0xb200000000000000000000397293Cb8cda9a10c5 0x388b0dC46C0Fb05A74BeE0994fa5b02c6Fcca2eA

How they are priced here

Each stock's Chainlink aggregator is a V3 interface with 8 decimals, a 0.5% deviation threshold and a 24-hour heartbeat, reporting total-return values. The PriceFeed reads latestRoundData from it at the moment a contract asks, scales the answer to 1e18, and treats a round older than 26 hours or a non-positive answer as Stale(). Nothing is pushed and nothing is cached; the price a launch or a sweep sees is the aggregator's current round.

Trades in a stock happen on its Aerodrome Slipstream pool at the pool's price, which drifts from Chainlink over weekends and trading halts. The feed sets the floors — a launch's opening price, the Treasury's minimum-out on a sweep — and the pool sets the fill. When you claim fees converted into a stock, the site quotes the route and passes a minimum-out with your claim, so a fill far from the feed reverts instead of executing.

Where the liquidity is

The stocks' on-chain liquidity on Base sits in Aerodrome Slipstream concentrated pools, tick spacing 10, on an Aerodrome-approved CL factory. The plain Aerodrome v2 pools for the same pairs are empty — the v2 USDC/NVDAc pool held $0.007 when we checked — so the AerodromeAdapter never uses them for a stock. It swaps each stock directly on its Slipstream pool with the Uniswap V3-style swap callback, trusting no router in between. Read on 2026-09-16:

Stock Slipstream USDC pool Depth
NVDAc 0x853F5f1B92b16714Fe6CDA67CAad0856B83C7ab9 about $643k USDC and 7,395 NVDAc
GOOGLc 0xB1987CAD1682841b4b641d50E520777eC5Ab5542 about $1.21M USDC and 1,617 GOOGLc
METAc 0xEAF57753BC382E0324a1D43F72E7027705a2273E about $784k USDC and 1,116 METAc
MSFTc 0x7103eB3c9590d1281f7dc03b2A9EE27C39dF5D54 about $425k USDC and 824 MSFTc
AMZNc 0xd03Bc8C7F2FAedCe2aac81bF0444AEA08Ea06E9b about $392k USDC and 2,309 AMZNc
SNDKc 0x5A8236f575471e7BfCA2C8462a200c28f737246E about $385k USDC and 323 SNDKc

A stock is offered on Inference Markets only when all three of its pieces are configured: the B20 token, its Chainlink feed, and its Slipstream pool. Missing any one, the deploy script skips it — no pair, no payout preference, no route. Depth varies between the six, and a conversion of tens of thousands of dollars into the thinner ones moves their price.

As a pair coin

A market can be paired with a stock. The launchpad reads decimals from the pair token, so a stock-paired market converts the $5,000 opening cap and the $35,000 cap price into 8-decimal units instead of 18, at the feed price at creation. Everything else about the market is the same. Trades into and out of a stock pair go through the AerodromeAdapter to the stock's Slipstream pool, and holders accrue their fee share in that stock, block by block.

As a payout asset

Set your payout preference to a stock with setPayoutPreference on the Distributor, and every claim you make converts your accrued coin into that stock before it lands. The conversion is LaunchRouter.swapCoinForAsset: coin → USDC (through the vault at the index for a synthetic coin, through Aerodrome for a native one) → the stock on its Slipstream pool, all inside your claim transaction, with the minOut you pass. The owner allow-lists which stocks can be chosen; all six are allow-listed by the deploy script. If an allowance is withdrawn after you chose it, your claims fall back to the pair coin rather than reverting.

What "held" means

A B20 transfer can refuse: a sanctions block reverts, and a paused token reverts for everyone. The Distributor does not let that fail your claim. It delivers with a low-level transfer and treats a revert, a false return or a code-less target as a refusal, parking the amount in heldOf(asset, wallet) and emitting PayoutHeld instead.

Held means credited to you and still in the Distributor. Nothing is lost and nothing is returned to the pool. Call claimHeld(asset) once the block clears or the pause lifts and the full amount transfers to you. Your rewards page shows held balances with a claim button.