Skip to content
PRIX

Method

How PRIX reaches a verdict, and how to check it yourself.

How verdicts work

PRIX tests six claims about NEAR. Each claim has one metric and two thresholds, written in a public file before the data was read: one for Supported, one for Not supported. Anything between them is Mixed.

Once a day, a job reads public sources (RHEA, NEAR RPC, NearBlocks, FastNEAR, NEAR Intents), writes everything it read into one snapshot file and hashes it with sha256. The verdicts are computed from that file alone, by plain code with no language model involved, so anyone with the file gets the same answer.

If a claim does not have enough data, PRIX says “Not enough data yet” and shows how much is missing. Missing values read “Not reported” and are never estimated.

Thresholds

Version 1, DRAFT, not locked. Lock commit: not set yet. Once locked, any change becomes a new version and old and new verdicts are shown side by side.

thresholds/v1.yaml · sha256 e1d514b39deeafbf… · what changed from earlier rules

Pre-registered thresholds for each claim
ClaimMetricSupportedNot supported
H1
Spearman rho of 7d-MA daily active accounts vs 7d-MA NEAR price, 180d
abs(rho) < 0.30 AND 30d avg active accounts growth >= 0%rho >= 0.60
H2
intents_custody_usd / rhea_clean_tvl_usd, daily, last 30d
ratio >= 2.0 on >= 80% of daysratio < 1.0 on > 50% of days
H3
count of non-NEAR, non-wNEAR tokens with $100k price impact <= 1.0% (RHEA router + Intents dry-run quotes, best of both)
>= 5 tokens<= 1 token
H4
volume from non-rejected, non-flagged pools / total reported volume, 30d
>= 80%< 60%
H5
net Intents flow (deposits - withdrawals), 7d and 30d, plus 30d TVL change
30d net > 0 AND 7d net > 0 AND 30d clean TVL change > 030d net < 0 AND 7d net < 0
H6
Intents custody and daily intents.near txns vs pre-incident 7d median
both >= 90% of baseline within 30d of incident_dateeither < 70% of baseline at day 30

Evidence grades

  • Grade Aread directly from the chain (RPC or contract view).
  • Grade Bread from an indexer or public API (RHEA indexer, NearBlocks, FastNEAR) and recomputed by PRIX.
  • Grade Cderived or modelled from grade A or B data.

H3 drops to grade C when a passing token’s depth comes only from pool reserve math rather than a router quote.

Data sources

Data sources and when the published snapshot last fetched them
SourceUsed forLast fetched
RHEA indexer
AMM pools & reserves (list-top-pools), token prices & metadata, 24h volume per DCL pool, pool detail, recent swaps & liquidity events, protocol totals
2026-11-14 07:37 UTC
RHEA data service
Daily protocol TVL (AMM + lending), daily per-pool TVL & volume, 24h volume variation
2026-11-14 07:37 UTC
RHEA Smart Router
Read-only route quotes used to measure price impact. Nothing is executed.
2026-11-14 07:37 UTC
NEAR RPC (FastNEAR free)
dclv2.ref-labs.near list_pools (DCL reserves), ft_total_supply per token
live (cached 10 min)
FastNEAR API
Top 100 holders per token; token balances of intents.near
live (cached 10 min)
NearBlocks API v3
Daily txns/active accounts/price; receipt → transaction → signer; account creation; NEAR Intents MINT/BURN events
2026-11-14 07:37 UTC
NEAR Intents 1Click
Independent price for cross-checking RHEA prices; sizing of the BTC/ETH/SOL quote legs
2026-11-14 07:37 UTC
NEAR Intents 1Click quotes
POST /v0/quote with dry:true for the depth matrix. Dry quotes carry no deposit address; nothing is ever sent.
2026-11-14 07:37 UTC
NEAR archival RPC (FastNEAR)
ft_balance_of(intents.near) at the first block of each UTC day since 2026-09-19 (H6 custody quantity index)
2026-11-14 07:37 UTC
NearBlocks intents.near stats
Daily intents.near transactions (H6)
2026-11-14 07:37 UTC
Incident reporting
The 2026-10-01 NEAR Intents exploit date (also CoinDesk, 2026-10-01)
cited, not fetched

Fetch times are from snapshot 2026-11-14; live pages (Tokens, Capital) refetch every 10 minutes.

Re-run it yourself

Three commands. The last one refetches every source, rebuilds the snapshot in memory and compares it with the published one.

git clone https://github.com/emmatechyy/prix && cd prix
pnpm install --frozen-lockfile
pnpm verify

Add --claim H4 to print one claim’s figures, or --offline to check only the hash and the verdicts.

API

Public, read-only, CORS open. Every snapshot-backed response carries source_hash, the sha256 of the snapshot it came from. Full description: /api/v1/openapi.json.

curl -s https://prix-orcin.vercel.app/api/v1/thesis
  • /api/v1/thesis verdicts H1–H6
  • /api/v1/history?claim=H4 one claim across all snapshots
  • /api/v1/depth depth matrix rows
  • /api/v1/integrity TVL with and without the pools we didn’t count
  • /api/v1/snapshots/<date> a published snapshot file
  • /api/v1/index, /flows, /whales, /launches live views

Limits and neutrality

RHEA is both a data source and a subject of the thesis. PRIX therefore never takes RHEA’s headline numbers on trust: it recomputes TVL pool by pool, leaves out pools it cannot price, and checks RHEA prices against NEAR Intents. PRIX has no commercial relationship with RHEA or NEAR Intents.

The 2026-10-01 NEAR Intents incident date comes from the team’s own statement and press reports (NEAR Intents (@near_intents) on X, Alex Shevchenko (NEAR Intents GM), postmortem on X, CoinDesk, The Block); where they disagree on timing or amount, PRIX shows the range.

  • H2 needs 30 daily snapshots; there is no honest backfill, so it reads “Not enough data yet” until the window fills.
  • H5 flows are read page by page from NearBlocks; only hours actually read count as coverage, and nothing is scaled up.
  • 1Click quotes without a partner key carry a flat 0.2% app fee, reported on its own; slippage is measured net of it.
  • Holdings outside RHEA (other exchanges) are not covered. FastNEAR returns the top 100 holders only.

Changelog

  1. 2026-11-14 Frontend: four destinations (Verdicts, Tokens, Capital, Method), threshold rails, evidence panels, light and dark themes. Old addresses redirect permanently.
  2. 2026-11-14 Methodology 2.1: H4 measures volume share from verified pools out of all live pools, with wash flags; H5 needs 80% coverage of both windows before any verdict; 1Click slippage is net of the flat app fee; every depth row names its router and version; snapshots move to the data branch.
  3. 2026-11-13 Thresholds v1 written down as a DRAFT (not locked). First self-contained daily snapshot with sha256, verdict engine for H1–H6, depth matrix, public API with source_hash.

Definitions behind the index

The rules behind Tokens and Capital: what PRIX refuses to count, how the score is built, and the curated labels.

Integrity rules — what PRIX refuses to count

PRIX recomputes every pool's value as Σ reserve × RHEA price from on-chain reserves (AMM reserves from the RHEA indexer, DCL reserves read directly from dclv2.ref-labs.near). A pool is excluded from every metric if any rule trips:

  • One side of the pool has no price — one token has no RHEA price.
  • The two sides differ in value by more than 3× — a constant-product (50/50) pool whose two sides differ by more than 3×. Equal value is an invariant of these pools, so a gap means one price is wrong.
  • Priced against a token with no reliable price — neither side is a base asset (NEAR, stablecoins, liquid-staked NEAR, curated bridged majors). Two thinly traded tokens can price each other at any level.
  • Claims more than half of RHEA’s whole TVL — a single pool claims more than 50% of RHEA's whole reported TVL.
  • Under $1,000 of liquidity — pools under $1,000 are ignored (not rejected).

Prices are cross-checked against NEAR Intents 1Click; gaps above 5% are flagged. Protocol TVL history drops days above 3× the 90-day median. Intents custody drops any asset worth more than 10× the next one.

PRIX Index score

Universe: non-stablecoin tokens with ≥ $50,000 of verified liquidity, top 24 by liquidity. Score = weighted mean of available pillars (0–100):

  • Depth (30%) — impact i = 1 − USDC out ÷ $10,000 for a $10,000 sell quoted by the RHEA Smart Router (fees included). score = 100 × clamp((log10 0.10 − log10 i) ÷ (log10 0.10 − log10 0.003)): ≤0.3% → 100, ≥10% → 0. If the router has no route, PRIX uses exact constant-product math on the deepest verified AMM pool: i = 1 − (1 − fee) × X ÷ (X + 10,000) with X the token-side reserve in USD. DCL-only tokens without a route: not reported.
  • Activity (25%) — 24h USD volume across the token's verified pools. score = 100 × clamp((log10 vol − 3) ÷ 5): $1k → 0, $100M → 100. Capped at 50 if turnover (volume ÷ paired TVL) exceeds 5×/day or if round trips exceed 30% of sampled volume.
  • Distribution (20%) — share of float (supply minus custody contracts) held by the 10 largest non-custody accounts among the top 100 (FastNEAR), with supply from ft_total_supply. score = 100 × clamp((0.9 − s) ÷ 0.7): ≤20% → 100, ≥90% → 0.
  • Flow (25%) — 50 + 25·p + 15·clamp(ΔTVL7d ÷ 25%) + 10·clamp(vol7d ÷ vol30d − 1), where p = (bought − sold) ÷ (bought + sold) in the last 50 swaps of the token's deepest verified pool.

Confidence = sum of weights with data. Tokens below 50% are listed but not ranked.

Signals and heuristics

  • Round trip — a buy and a sell of the same token within 10 minutes whose USD sizes are within 2% (each ≥ $50). It is a pattern, not proof of wash trading.
  • Volume spike — 7-day average daily volume more than 2× the prior 30-day average.
  • Whale — any swap or liquidity move ≥ $10,000, sampled from the latest 50 swaps in the 16 busiest verified pools and the latest liquidity events in the 14 deepest. Swap size uses the smaller leg. The 18 largest swaps and 20 newest LP moves are traced receipt → transaction → signer.
  • Intents flows — intents.near token events from NearBlocks, paged newest-first with a stored cursor: each run pages back from now to the newest instant already read, and unread stretches are kept as gaps that later runs resume. MINT = deposit, BURN = withdrawal, valued at the price recorded on each event. Coverage = hours of the window actually read ÷ hours in the window; H5 needs ≥ 80% of both the 7d and 30d windows before it gives any verdict. Nothing is scaled up to cover what was not read.
  • H4 volume from verified pools — numerator: 30-day volume of pools that are not rejected and not wash-flagged; denominator: 30-day volume of every live pool (≥ $1k TVL), rejected and flagged included. Wash flags: mean daily volume above 2× the pool's TVL, or ≥ 10% of all volume while more than 5× its share of TVL (verified pools). These are signals, not proof: concentrated-liquidity pools turn over their TVL faster by design.

Launch radar score

Candidates: the non-base token of the 80 highest-id AMM pools and the 120 most recently listed DCL pools with ≥ $1k verified liquidity; the deepest 16 are scored.

  • Liquidity (35%): 100 × clamp((log10 TVL − 3) ÷ 3) — $1k → 0, $1M → 100.
  • Distribution (25%): as in the index.
  • Activity (20%): 100 × clamp((log10 vol24h − 2) ÷ 4).
  • Maturity (20%): token account age ÷ 30 days, capped at 100.

Curated labels

Custody accounts (excluded from holder concentration): intents.near, v2.ref-finance.near, dclv2.ref-labs.near, contract.main.burrow.near, omni.bridge.near, aurora, factory.bridge.near, e-11.bridge.near, token.sweat, meta-pool.near, linear-protocol.near, lst.rhealab.near, staking.rhealab.near, xtoken.rhealab.near, xtoken.ref-finance.near, boostfarm.ref-labs.near, v2.ref-farming.near, orderly-network.near, asset-manager.orderly-network.near, veax.near, app.nearcrowd.near, dex-aggregator.intear.near, v2-pool-creator.justhoot.near, plus account names matching pool/vault/launchpad/bridge/lockup/farm/staking.

Sectors: curated for well-known contracts; otherwise by suffix — .omft.near → Omni-bridged; launchpad factories (meme-launchpad, justhoot, nearlytrade, tkn.near, meme-cooking, batgirlfun) → Launchpad / meme; .factory.bridge.near → Bridged; anything else → Unclassified.