● Live on-chain On-Chain Token Integrity Tokenized Equities

Backed, or Just Named

Thirteen contracts on Base forged five of Coinbase's tokenized-equity tickers and recorded $393,805 of volume before they stopped. Coinbase says the genuine tokens beside them are backed one-for-one. Neither the name nor the bytecode tells the two apart. One on-chain check narrows it, and it is worth being exact about how far.

Andrew Maury
Andrew Maury
Case Study Measured 2026-09-09
13
Forged contracts, 5 tickers
$393,805
Volume recorded
~30 min
Typical contract lifetime

The Challenge

In Money Stuff on 9 September 2026, Matt Levine set out a taxonomy for tokenized stocks. A token carrying a company's name, he observes, can be one of exactly four things. It can be stock, issued on-chain by the company itself. It can be an SPV: "I buy 1,000 AMC shares, I put them in a pot, and I issue exactly 1,000 tokens against that pot." It can be a swap, an IOU for the asset's return. Or it can be nothing: "I issue 1,000 tokens each representing one AMC share, and you buy them, and I don't owe you anything. They're just, like, crypto tokens with the name ‘AMC’ on them." He notes that the fourth is out of fashion in equity tokenization, "though it is a very traditional approach in crypto generally."

Levine is writing about Robinhood, whose tokens Robinhood describes, in a statement he quotes, as "backed 1:1 by the corresponding underlying equity." By his taxonomy a token like that is the second kind. That classification is mine, applied to his categories; he is not describing the contracts below, and this piece borrows his ladder and nothing else.

What the taxonomy leaves open is the question a holder actually has. Four categories are named, but nothing in that column says how someone holding a token would work out which of the four they hold. That question has a partial on-chain answer.

What measurement can and cannot settle

A rung is a claim about the world off the chain. Whether shares are sitting in a custodian's account is not visible from a contract, so on-chain data cannot confirm the first three rungs. No amount of reading state proves a pot exists.

It can do the opposite. On-chain data can show that nothing is behind a token, which rules out the first three and leaves only the fourth. The check is cheap and it runs in one direction. What follows is a namespace where running it separates the second rung from the fourth inside a single set of search results.

What We Found

Everything below comes from two sources. Contract state (name, symbol, decimals, totalSupply, eth_getCode) was read directly from Base over RPC on 3 September 2026 and again on 9 September. Volume comes from one execution of a query over Dune's decoded dex.trades table for Base, window 1 July to 3 September 2026, run on 3 September; those figures are leg sums, which count each leg of a route and are an upper bound on the collapsed per-trade figure.

Coinbase publishes a list of thirteen B20 tokenized-equity contracts on Base. On 3 September, four of them had traded: NVDAc, AAPLc, METAc and GOOGLc, tracking NVIDIA, Apple, Meta and Alphabet. By 9 September ten of the thirteen carried supply, so the asset class is being issued faster than this page is being written. In the window the four traded $241,972,775, which is 0.167% of all Base DEX volume in the same window. Aerodrome Slipstream carried 86.46% of it.

Alongside them, in the same window, thirteen impostor contracts forged five of those tickers: NVDAc, AAPLc, METAc, GOOGLc and COINc. Together they recorded $393,804.68. Ten of the thirteen ran a uniform pattern: roughly half an hour of life, between 58 and 71 distinct taker addresses, then nothing. The three COINc contracts ran differently, each with a single taker, two of them recording $138,882 between them in consecutive half-hours.

COINc is worth a sentence on its own. Coinbase's COINc contract is on the published list, but as of 9 September its supply is zero; the genuine token has not been issued. The three COINc forgeries recorded $138,882 against a real token that did not yet exist. Nothing in this dataset is a cleaner example of Levine's fourth rung.

The address shape is not an identifier

Coinbase's B20 contracts share an 88-bit address prefix, 0xb200000000000000000000, which Base documents as the standard's address convention. It reads like a namespace badge. Eighty-eight bits is not something a forger mines, and nobody had to: the prefix comes with the deployment path, and 7,532 distinct tokens on Base carry it. The first pass at measuring this asset class matched on the prefix, and the highest-volume NVDAc, AAPLc and METAc rows it returned were forgeries. A prefix check does not need to be defeated. It clears the impostors for free.

The name does not separate them either

The obvious fallback is to read name() and compare it with the company. That clears the forgeries that match and flags only the ones that do not bother.

Two of the thirteen return a name() of NVIDIA Corporation, byte-identical to Coinbase's own contract. Four use Meta Platform Inc., one character away from the real Meta Platforms Inc. Four more return the bare ticker. A name check passes the two exact matches and catches the four that were never going to pass anything.

And neither does the bytecode

Bytecode fingerprinting is the technique that cracked the mainnet impersonator fleet, where 1,005 contracts shared one byte-identical 5,150-byte runtime. It returns nothing here. eth_getCode at every address in this namespace, genuine and forged alike, is the single reserved byte 0xef. Whatever machinery on Base answers eth_call for these addresses, it is not per-contract runtime, so there is no code to hash and no fingerprint to compare. The mechanism was not investigated; the negative result is what matters for detection.

How We Detect It

One check remains, and it is the one that reads the backing rather than the branding. Coinbase's contracts carry 8 decimals and a supply denominated in shares. Every impostor carries 18 decimals and exactly 1,000,000,000 units.

-- Base mainnet, read 2026-09-09 (morning, UTC-7)
-- canonical NVDAc
decimals()    = 8
totalSupply() = 15,473.08          -- a share count

-- forged NVDAc, same prefix, same name() string
decimals()    = 18
totalSupply() = 1,000,000,000.00   -- a round number, chosen not derived

The intuition runs backwards. A supply of one billion at 18 decimals is not a forgery signature; it is the ordinary default in this namespace. Five unrelated tokens on the same prefix, picked by hand on 3 September, are all 18 decimals and four of the five carry exactly one billion. The impostors look normal. Coinbase's tokens look unusual, because 8 decimals and a share count are what one-for-one backing forces on you. The test only works if you already know what the genuine article looks like, which means the issuer's published contract list is the thing actually separating them, and the supply shape is a way to notice when a row does not match it.

The stronger signal: the supply moves

A static reading is a snapshot, and a forger can copy a share-shaped number for the cost of one deployment. A claim backed one-for-one has to be minted when someone deposits and burned when someone redeems, so its supply moves. Reading the same contracts six days apart:

Token Supply 2026-09-03 Supply 2026-09-09 Change
NVDAc (canonical)12,640.0815,473.08up
AAPLc (canonical)5,773.037,276.36up
METAc (canonical)2,978.892,130.54down
GOOGLc (canonical)not recorded7,976.14(no 09-03 reading)
All 13 impostors1,000,000,000.001,000,000,000.00none

By the evening of 9 September the canonical figures had moved again: NVDAc to 15,537.08, GOOGLc to 8,046.14, and AAPLc down to 6,702.59. A number that goes down is the useful one, because a decrease is what redemption looks like from outside, and a fixed-supply forgery cannot show one without actually burning tokens.

It is important not to overstate this. A forger with a mint-and-burn function can simulate movement, so drift is evidence of an active issuer process rather than of custody. What it does is raise the cost of forgery from a one-time deployment to an ongoing one. In this dataset none of the thirteen paid it: every impostor sat at exactly one billion across both readings. That is the same shape of result as the name check, forgers who did not bother, at a higher price. It rules out the empty case and is consistent with the second rung, which is the most that reading a chain delivers.

What This Does Not Show

It does not verify Coinbase's custody. Everything above is consistent with one-for-one backing and rules out the empty case. Confirming that shares sit in an account is an audit question, not an on-chain one, and nothing here touches it.

It does not establish who was on the other side of the $393,805. "Taker" here means a distinct address that took the other side of a swap in the decoded trade data. Whether those addresses were independent of the deployers was not measured, and the uniform ~30-minute, ~60-taker lifecycle is consistent with automated new-token sniping. So the $393,805 is volume the pools recorded, not demonstrated third-party demand, and nothing here claims anyone was harmed. The finding is that the forgeries were indistinguishable by the checks most people would run; whether anyone ran one is unknown.

The window is 1 July to 3 September 2026, and volumes are leg sums. The thirteen impostors are the ones that appeared in that window; nothing rules out others before or since.

Supply figures drift, and that is the point of the section that uses them. The 3 September canonical readings had all moved by the morning of 9 September and again by the evening. Every figure here is a timestamped reading, not a standing fact.

The separate Ethereum mainnet fleet shares a playbook with these contracts. Whether it shares an operator was not looked for.

What It Proves to a Client

Three intuitive checks on this namespace all fail. The address prefix is shared by 7,532 tokens and costs nothing to obtain. The name is copyable and was copied byte-for-byte. The bytecode is a single reserved byte for everyone. Three plausible verification strategies, each returning a confident wrong answer.

The check that works reads what is behind the token and watches whether that number behaves like a claim on something. It cannot confirm the claim. It can rule out its absence, and in this case it did, for ten of Coinbase's contracts and none of the thirteen forgeries. That is the same discipline as the rest of the work in this studio, whether the subject is fabricated liquidity, execution quality or attribution: read the underlying state, key on identifiers rather than labels, and say what a measurement cannot show as plainly as what it can.

Have hard data to make useful?

Rantum is a senior data science & ML studio. We turn messy, fragmented, and adversarial data into models, APIs, and products that ship, on-chain and beyond.

Work with us