Token information and listings
Tokenized stocks launch similarly to any ERC-20 token: name, symbol, and icon come from the usual sources, along with a few notable B20 specifics. Standard ERC-20 methods and events are supported natively.- Onchain:
name,symbol,decimals, andcontractURI(ERC-7572 metadata). - Offchain: logos are also available from the canonical token list and market-data aggregators.
- Tokens should be identified by address rather than ticker or symbol. Metadata is mutable onchain and should be indexed accordingly.
- Discover new tokens by watching the
B20Createdevent.
What B20 adds beyond ERC-20
Multipliers
An underlying real-world asset may undergo events that change the redemption ratio of a B20 token. For tokenized stocks, these events include dividends or stock splits, which must be passed along to the holder of the B20 tokenized equity onchain. The multiplier variable instantly updates the redemption ratio of a B20 token based on any corporate actions that occur. Asset-level events are reflected by updating the multiplier. For example, after a dividend on a tokenized equity, the multiplier increases to1.02, representing that 1 B20 token is redeemable for 1.02 shares of the equity.
At this time, for tokenized stocks, cash dividends are converted to shares of the underlying equity and reflected via a multiplier update rather than distributed as cash to the B20 holder. This allows B20 holder balances to automatically reflect corporate actions without changing their balance of the B20 token.
Multiplier updates come in two forms:
- Scheduled (ERC-8056): set a future-dated change with
updateUIMultiplier, which gives advance onchain notice. Use this for routine corporate actions. - Instant (deprecated):
updateMultiplierapplies immediately and clears any pending scheduled change. It is a retained emergency failsafe; prefer the scheduled path. - Cancellation: clear a pending scheduled update with
cancelUIMultiplierUpdate.
raw is the number of B20 units and scaled is the quantity of stocks redeemable:
Policies
To comply with any regulatory requirements that apply to a particular asset, policies that manage allowlists and blocklists may be implemented. Policies determine whether a transfer is allowed or rejected. The B20 contract provides theisAuthorized(policyID, account) function, which you can use to determine whether a specific account is allowed to transfer funds.
approve() function is not policy gated. Checking whether a quantity of funds is approved to be transferred does not guarantee that the funds aren’t blocked by a policy.Pauses
Onchain pauses are unlikely, but be aware that B20s allow specific functions within a contract to be paused. Monitor these to maintain an accurate understanding of whether funds can be transferred at a given point in time.Announcements
Sensitive operations are wrapped in onchain announcement events:announce emits Announcement (id, description, uri), then EndAnnouncement. Integrators index these to catch corporate actions as they execute.
Two design points:
- Announcements can be atomically bundled with the token change they describe (for example, the multiplier update for a stock split), keeping onchain records clean.
- Descriptions are intentionally human-readable onchain to support public reporting requirements.
updateMultiplier (OPERATOR_ROLE) execute immediately when the role holder calls; the B20 standard has no built-in timelock. The Announcement and EndAnnouncement events are public notice, not an enforced delay. Any timelock or multisig is applied by the issuer at the governance layer.
Extra metadata
Issuers can store arbitrary key/value data onchain viaextraMetadata(key) (for example, security identifiers such as ISIN and CUSIP).
Name and symbol
Name and symbol are updatable onchain (updateName, updateSymbol), so the token can track offchain changes to the underlying without redeploying.
Memos
transferWithMemo and transferFromWithMemo attach a bytes32 reference to an individual transfer (emitted as a Memo event), for annotating transfers with offchain data for reconciliation and reporting.
Supply cap
An optional supply cap bounds total supply, mitigating over-minting from operational errors or a compromise.Compliance
Holding and trading on the secondary market is permissionless. KYC only happens during mint and redeem flows taken by Authorized Participants (APs).- Onchain policies can block specific addresses, such as sanctioned addresses; a blocked transfer reverts (see Policies above).
- Minting and redeeming the underlying shares is a separate, restricted issuer flow, as it is restricted to APs.
Price feeds
A tokenized stock’s price is available from both onchain and offchain sources. In every case, the price is derived from the same relationship: the underlying equity’s market price scaled by the token’s multiplier.WAD_PRECISION() to read the scale (it returns 1e18).
Onchain
Chainlink is the onchain price option at launch. Each tokenized equity has a Chainlink feed that runs 24/5, holds the last close on weekends and holidays, and freezes during corporate actions. Feeds implement the standard Chainlink V3 aggregator interface and are read through the proxy, exactly like a crypto price feed; read the latest value withlatestRoundData().
Unlike standard market-rate feeds, Coinbase feeds report Total Return Values rather than raw equity prices, so the price reflects the underlying’s total return including corporate-action adjustments. Chainlink uses this same approach for other tokenized-equity issuers, including Ondo and Robinhood. The underlying price is sourced from Chainlink’s equity price feeds (traditional market data), not from onchain or DEX trading of the token; the token’s DEX price does not feed the oracle.
The feed reads the multiplier and a pause flag from Coinbase’s onchain oracle registry, a single contract (separate from the tokens) that returns both values for a token in one call:
- Normal (
paused = false): the feed publishes underlying price × multiplier. - Paused (
paused = true): the feed stops publishing and holds the last known good value.
- Mint and redeem pause offchain, but the token is not paused onchain, so transfers are not blocked.
- The feed freezes (the registry pause flag is set) and its price goes stale.
- Because the feed is total-return, there is no price discontinuity: the multiplier and underlying price move in opposite directions and cancel (a 10:1 split drops the price ~10x and raises the multiplier ~10x).
- Fail-safe: the feed resumes only after Coinbase confirms the underlying price and multiplier both reflect the new values. If one updates before the other, the feed stays frozen at the pre-pause price rather than publishing a half-applied value.
latestRoundData() on the proxy address below. All feeds return 8 decimals, cover US equities (24/5 market hours), and update on a 0.5% price deviation or a 24-hour heartbeat. Values are total-return; apply the pause and staleness handling above.
Offchain
Offchain price data can be sourced from providers such as CoinGecko, CoinMarketCap, or RWA. These aggregators track the token’s live market price from the DEXs where the B20 trades, which runs 24/7 whenever the secondary market is active. Two common patterns are used to determine value:- Directly reading the token’s market price from a provider that tracks the B20 asset.
- Reading the underlying reference price and applying the multiplier calculation manually.
Historical data
For historical OHLC and time-series data, use market-data providers or query Chainlink round history byroundId.
Since prices are total-return (multiplier-adjusted), reconstruct the series consistently by applying the multiplier history (MultiplierUpdated events, emitted by both scheduled and instant multiplier changes) if starting from raw share prices.
Contract addresses
Additional resources
Disclaimer
Coinbase tokenized stocks are only available to persons in eligible jurisdictions outside of the U.S.
Inclusion of any third-party protocol or venue is for developer reference only and is not an endorsement, partnership, or warranty. Confirm addresses, feeds, and the token list against official sources before integrating.
Base is open-source, permissionless blockchain infrastructure. Each B20 token is deployed and configured by its issuer, who sets and controls all token parameters and administrative permissions; Base does not configure, administer, or control tokens deployed on the protocol.