Trust · verifiable rules

Methodology

What the tools actually do, the heuristics behind the Brief, and where the limits are. Stated plainly, because the whole point is to be verifiable rather than authoritative.

Radar

The radar fetches the list of recent blocks from mempool.space/api/blocks, then downloads the full transaction summary of each covered block via /api/v1/block/{hash}/summary — every transaction, not a sample. It keeps the ones whose total output value is at or above the chosen threshold (10, 50, 100, or 500 BTC) and fetches BTC/USD from CoinGecko for the approximate dollar column. Each block is scanned once; a poll every minute checks whether a new block arrived. Everything runs in your browser, in memory only.

For each displayed row the radar also fetches the transaction detail and checks its input and output addresses against the open label directory — exact match only, the same rule the Brief uses. The BTC column is the sum of outputs, so it includes change returning to the sender; read reading large transactions before quoting numbers. Not trading signals.

Brief heuristics

Given a transaction id, we fetch mempool.space/api/tx/{txid} and apply structural rules:

Pattern Rule (simplified) Typical certainty Known failure modes
Labeled touch Exact address match; if output sum ≥50 BTC then probably when two+ entities or ≥200 BTC, else possibly. Labeled and <50 BTC → possibly. This rule is checked first. Probably / possibly Stale tags; dust to a famous script; label on one output among hundreds
Consolidation No prior rule; more than 3 inputs and exactly 1 output Possibly Internal shuffles; CoinJoin-like txs that happen to collapse; unlabeled destination
Distribution No prior rule; 1 input and more than 4 outputs High uncertainty Dust to famous addresses; change misread as payout
Simple transfer No prior rule; exactly 1 input and 1 output (not 1→2 change) High uncertainty Still no identity; 1→2 payment+change falls through to unlabeled
Unlabeled / other Everything else, including typical 1→2 spends and many-to-many High uncertainty CoinJoin-like equal outputs; complex scripts

Those rows are the shipped rules in classifyMovement — not an aspirational marketing table. Certainty is structural. A “probably” never means “this is a sale” or “this address is owned by X in court.” The summary carries the qualifier in English and lists decision logic step by step. See worked cases on Examples.

Worked example (logic only)

txid: 61b5cc645177843e8514e18a19faf162a19247c8bb4f25519b57c166e9df302c

  1. Fetch tx → 147 inputs, 1 output.
  2. Classify shape → consolidation (many → one).
  3. Sum input values → ~22,024 BTC total moved.
  4. Match labels on inputs → Bitfinex (high confidence) on input side.
  5. Emit summary with probably — structural match strong; intent not stated.

Worked example (distribution + noisy label)

txid: 900d114ebb2cd6f9daae5f4474a0f7dce9292d51c5478810fa21939c19fb885f

  1. Fetch tx → 1 input, 402 outputs, ~0.64 BTC total.
  2. A single output matches the Mt. Gox hack stolen-funds address in labels.json.
  3. Labeled-touch rule fires, but size is small → certainty stays possibly.
  4. Correct structural flag; wrong narrative if you write “Mt. Gox moved funds.” Someone dusted a famous script.
  5. This is why we show side (out) and refuse to upgrade dust into a whale story.

Explorer: mempool.space ↗. Narrative: Examples §2.

Labels

The directory is exact-address-match against a manually curated list. Each entry records a category, a confidence level, and a public source. It is intentionally small and conservative. We do not cluster addresses or infer ownership. Contribution criteria: Labels page and Contact.

Limits, honestly

  • Real ownership and intent are not knowable from public chain data alone.
  • Address reuse and exchange internals mean labels can be stale or partial.
  • The dollar values are approximate and depend on a live price feed that can fail.
  • The radar covers only the most recent blocks (about the last 80 minutes) — it is a window, not an archive.
  • A transaction's output total includes change; "X BTC moved" on-chain is an upper bound on what changed hands.
  • None of this is financial advice or trading signals.

Sources

mempool.space REST API, CoinGecko simple price, and the per-entry sources cited in the label directory. Code is open on GitHub. API availability is not guaranteed.