Appearance
Tokenized stocks
Tokenized US equities in swap, bridge and the launchpad: how they are registered, priced and shown.
Registry: Token.assetClass = 'equity' + Token.equity{ticker, issuer, underlyingName, instrument, calendar, mintRedeem247} · Seeder: bz-backend/scripts/seed-tokenized-stocks.js
Why no aggregator work was needed
The 26 swap providers forward token addresses, so an equity routes like any ERC-20 once the swap controller can resolve it from Mongo. The seeder is the gate: an unseeded equity 404s "From token not found" before any provider runs.
Issuers the seeder recognises
| Issuer | Chains | How it is recognised |
|---|---|---|
| xStocks (Backed/Kraken) | Ethereum, BNB, Solana | name … xStock + symbol TICKERx |
| Ondo | Ethereum, BNB, Solana | name (Ondo Tokenized) + symbol TICKERon; 24/7 mint/redeem |
| Backed | Base, Arbitrum, Polygon | name Backed … + symbol bTICKER / wbTICKER |
| Robinhood | Robinhood Chain 4663 | bare ticker + bare company name; accepted by two-factor agreement with tickers other issuers already proved, or an unambiguously corporate name |
| Coinbase (B20) | Base | 0xb200… address prefix and symbol TICKERc and 8 decimals and a corporate name. The prefix alone is shared by cbHYPE, cbZEC and memecoins |
Dinari dShares are KYC-allowlisted at the token level and are not seeded.
Pricing
Equities have no CoinMarketCap id. Prices come from, in order: a Chainlink total-return feed where one exists (Base 13, Robinhood 35; v1/launchpad/data/chainlink-equity-feeds.json), else the quote-implied median across aggregators keyed by contract address (services/quotePrice.service.js). Feeds hold the last print outside US hours; the UI shows the session badge (utils/marketSession.ts, mirrored server-side in v1/launchpad/marketSession.js).
Gotchas
- The crypto list must filter
assetClass: { $ne: 'equity' }, never=== 'crypto': pre-existing docs have no field. - After
--apply, clear the token cache on the VM; a local run clears an in-memory store. - Ethereum (1) and Solana (102) hold most equities but are hidden (
Network.show: false).