Independent audit · Stock Tokens · ERC-8056

a token is not a share : the multiplier is 4.000000000

CRWD's totalSupply() reads 8.8874 tokens. Its uiMultiplier() is 4.000000000, so they count as 35.5497 shares. ASSAY reads both from Robinhood Chain and publishes only what re-fetches byte for byte.

Scroll to assay it

Live board · block 107542044 · 130/130 ✓ re-fetched · swept

How ASSAY checks one number, in five steps

  1. 01 Weigh

    The supply, counted in tokens.

    totalSupply() · 8.8874 tokens · 0x…2ced1000

    Read from CRWD at block 107542133. Every balance on this token is counted the same way: in tokens, not shares.

  2. 02 Read the multiplier

    The multiplier, from the same block.

    uiMultiplier() · 4.000000000 · 0x…9d900000

    Under ERC-8056 a corporate action changes this number and leaves every balance where it was. Skip it, and every share count read from CRWD is off by a factor of 4.000000000.

  3. 03 Strike

    Stamped with its own bytes.

    0x…9d900000 @ 107542133

    Each value is published with the raw bytes it was decoded from and the block it was read at, so anyone can repeat the call and compare. A finding that arrives without them is withheld.

  4. 04 Divide

    Each token counts as four shares.

    8.8874 × 4.000000000 = 35.5497 share-equivalents

    A screen that shows the balance as a share count shows 8.8874 where there are 35.5497. That gap is what ASSAY looks for.

  5. 05 Re-fetch

    Checked again before it is published.

    130 of 130 citations re-fetched from chain state and byte-compared before publication · swept at block 107542044

    The verifier withheld nothing on this sweep. When it does, the wall lists each finding it held back, with the reason.

Who reads it wrongHolder contracts · block 107542044

51 of 52 never read the multiplier.

Of the 64 addresses seen moving the 18 Stock Tokens whose multiplier is more than 0.2% from 1, 52 are contracts. 1 of the 52 we could read references uiMultiplier().

12

could be exposed

They hold at least $106,090 of these tokens with no uiMultiplier() in their logic and no pool or custody fingerprint. Read as share counts, their balances miss 1.23 share-equivalents.

15

never need it

10 AMM pools, 1 pool manager, 1 custody or executor wallet and 3 distributors hold at least $1,484,277. They keep reserves or custody and never report a share count, so going without the multiplier is not an exposure for them.

10 more are too small to hold valuation logic, and 14 held none of these tokens at the block. This shows a missing call, not a mistake, and no contract is named here. 3 findings that would name one are withheld from every public page. The named audit of any address, with its bytecode evidence, is the $0.25 call below.

The full breakdown is on the wall

Use itThree free · two paid, x402 in USDC on Base

check it free. pay for the full answer.

  • Free

    Check a wallet

    Paste any address. Your browser reads balanceOf() beside the share count for every Stock Token whose multiplier is not 1, straight from the chain. Nothing is signed or sent to ASSAY.

  • Free

    The MCP verdict

    Ask whether a position can be valued safely, or whether a contract reads the multiplier. You get the verdict and the reason, over MCP, with no key.

    claude mcp add --transport http assay https://sonar.my.id/assay-mcp/mcp
    # SSE-only clients: claude mcp add --transport sse assay https://sonar.my.id/assay-mcp/sse
  • $0.01

    assay_true_position(symbol, holder)

    One position at one block: the raw balance, uiMultiplier(), the share count and the token's decimals, with the feed price, its age and the USD value.

  • $0.25

    assay_check_contract(address)

    One contract, named: every holding it has of a Stock Token whose multiplier is not 1, the share-equivalents it leaves out, the USD held, and the eth_call citations behind each number.

  • Free

    erc8056-guard on npm

    The TypeScript helper for ERC8056Guard, an ownerless, view-only contract on Robinhood Chain that returns a holder's share count, or a refusal with its reason.

    npm i erc8056-guard viem

Payment settles before the task runs, so check a symbol or an address with the free MCP first. Request bodies and the 402 flow are on the pricing page; the source is on GitHub.

The wallLive board · block 107542044

every finding, with the bytes behind it.

65 findings on the board, 2 critical. 130 of 130 citations re-fetched and byte-compared. Every finding opens to its raw returns, the blocks they were read at, and the command that repeats each read.