Skip to content
[M] Method v1

How a Reading Is Made

Where every number comes from and what it cannot tell you. The method is one open file (src/lib/method.ts) that the site and the tests run; anchored snapshots record its version.
step 01

Pick the block: the chain head minus 20 blocks (confirmed). Every balance, position and price below is read at that block.

step 02

Find candidate tokens: the base list (WETH, USDG, USDe), every token traded on the covered venues in the shared pool snapshot, and every token the wallet received in the last ~1.8 hours (Transfer events with the wallet as recipient). The public node refuses a whole-history token search without a token address, so a token outside these sets is not found; the page says so. Ranges that could not be read are counted and make the reading incomplete.

step 03

Read balances: balanceOf for up to 600 candidate tokens in Multicalls at the block, and the native ETH balance. Only non-zero balances are listed.

step 04

Find positions: Uniswap v4 position NFTs from the PositionManager's Transfer events to the wallet over its whole history, each checked with ownerOf at the block; Uniswap v3 and Topaz CL positions listed with tokenOfOwnerByIndex at the block. Up to 40 held positions are valued.

step 05

Value positions: v4 from the PoolManager's storage (price, liquidity, fee growth inside the range) with exact tick math; v3-style from positions() and the pool the factory itself names for the pair, fees from a simulated collect() from the owner.

step 06

Price tokens: ETH and WETH from Chainlink's ETH / USD feed on chain (an answer older than 6 hours is not used), USDG at $1; any other token, stock tokens included, from the deepest pool of the shared snapshot that holds at least $5,000 of a listed token within 2% of its price. Nothing else gets a dollar value.

step 07

Name stock tokens: a token counts as an official Robinhood stock token only when its runtime code is exactly Robinhood's stock-token proxy (code hash), its beacon slot holds Robinhood's beacon, and it has minted supply (only Robinhood's minter role can mint; anyone can deploy the proxy itself with any name). A ticker or a name proves nothing: tokens that copy a stock ticker or name without that proof are marked as lookalikes and shown with their address.

step 08

Compute the five metrics over priced value only, and say how much was left out.

[A] The five metricsbasis points, packed in this order on chain
#MetricLimit typeRule
0Largest asset shareat mostlargest asset value ÷ priced portfolio value; ETH + WETH are one asset; positions count as their two tokens (fees included).
1Largest venue share of LP valueat mostlargest venue's priced position value ÷ all priced position value; 0 when the wallet has no priced position.
2LP value out of rangeat mostpriced value of positions whose range does not contain the current tick ÷ all priced position value.
3Impact of selling the largest holdingat most1 − (received ÷ sold) ÷ pool price, for selling the largest priced balance in one swap, best of up to three simulated pools; unknown when none could take it.
4Stablecoin shareat leastvalue of USDG at 0x5fc5…d168 ÷ priced portfolio value.

A metric is "unknown" (65535 on chain) when any read behind it failed. With an active limit, unknown is reported as unknown, never as within the limit: the site and FinraLedgerNotary.evaluate() apply the same rule.

[B] Exit simulationFinraExitProbe

FinraExitProbe is never deployed. For one eth_call its runtime code is placed at 0x00000000000000000000000000000000f1a7e0b3 with a state override, and it asks each pool to swap 10%, 25%, 50% and 100% of a balance: v3-style pools through swap() with a callback that reverts with the amounts, v4 pools through unlock() → swap() → revert. Every swap is undone inside the call. A per-call secret stops a pool or hook from forging a result; a pool that reverts any other way counts as "cannot fill". Fork tests check that the probe's answer equals a real swap of the same size on the same state.

[C] Contracts readchecked on chain, 13 Nov 2026

Uniswap v4 PoolManager

  • Uniswap v4 0x8366a39cc670b4001a1121b8f6a443a643e40951

v4 PositionManager

  • 0x58daec3116aae6d93017baaea7749052e8a04fa7

v3-style factories

  • Uniswap v3 0x1f7d7550b1b028f7571e69a784071f0205fd2efa
  • Topaz CL 0xaa5865dc3a60b25d305226d66fd573021f0d8ffb
  • v3 e519 0xe51960f1b45f1c9fb6d166e6a884f866fc70433b
  • CL c63d 0xc63d7338c178e805c544b8f897066bd3bbcbe136
  • CL e0c4 0xe0c4ceb92d08ca985bb70fe0a22feb121a9854a8
  • CL 1ac9 0x1ac9db4a2608ba45d6127b1737949b51bb54b7f3
  • CL 5481 0x5481864ddd46a2d798df0925c23b7846e776e5e3

v3-style position managers

  • Uniswap v3 0x73991a25c818bf1f1128deaab1492d45638de0d3
  • Topaz CL 0x522bf4b5c9280bb6bb719f2ce7f514dd63c8c0c5

ETH / USD: Chainlink feed 0x78f3556b67e17df817d51ef5a990cdaf09e8d3a9. Stock-token beacon 0xe10b6f6b275de231345c20d14ab812db62151b00. Multicall3 at 0xcA11…CA11. Robinhood Chain RPC https://rpc.mainnet.chain.robinhood.com.

[D] Limits of this readingread before acting
[E] Plannednot built
[F] Questions

Is Finra Finance connected to the US regulator called FINRA?

Finra Finance is an independent software project on Robinhood Chain. It is not affiliated with, endorsed by or connected to the Financial Industry Regulatory Authority (FINRA) or any regulator, and it is not a broker, dealer or adviser.

Does a low metric mean my portfolio is safe?

No. Finra Finance measures five things about one wallet at one block. It does not judge tokens, teams or contracts, and it never calls anything safe.

Does Finra Finance hold or move funds?

No. It reads the chain. FinraLedgerNotary stores limits and snapshot roots and accepts no funds: no payable function, no owner, no upgrade path. FinraExitProbe is never deployed.

Is FinraLedgerNotary reviewed?

It is new and has not had an independent security review. It holds no funds. Its tests (unit, fuzz, invariant) and a written self-review are in the repository.