Methodology & Ethics

Facts you can check.
Here's how we check them.

Every label, bloc and finding on ICPulse comes out of a documented process with a human decision at the end. This page describes that process, including what we refuse to publish and the mistakes our method is built to catch.

Address labels Deterministic sources Voting blocs Mint tracking Supply & staking ⚠ Address-poisoning warning Ethics & privacy

Part 1

Address labels: four steps, no exceptions

260 labels are live on ICPulse. Every single one went through the same pipeline. Nothing ships on an algorithm's word alone.

1

Machine discovery

An indexer samples the ICP ledger and NNS governance every 60 seconds, around the clock. A discovery engine surfaces high-volume addresses, and an automated crawler produces a behavioral report for each: volume in and out, distinct counterparties, contact with already-verified anchors, and activity rhythm. The machine proposes. It never decides.

2

Pattern analysis

Each candidate runs through a published decision tree. A clean consolidation pattern (many depositors, one verified destination, near-zero balance) becomes a label candidate. An address touching multiple exchanges is never labeled. That shape belongs to users, services and third parties, not to the exchange. Dust-level "patterns" are discarded as spray artifacts.

3

Human verification

A human reviews the full report and decides. Labels carry one of two confidence tiers. If ownership cannot be attributed with confidence, the address stays an internal lead no matter how perfect the pattern looks. We have rejected million-ICP addresses on exactly this rule.

4

Publication & re-verification

Labels are published to a machine-readable registry that feeds every ICPulse feature, and are re-checked against each new deterministic source we open. When a re-check contradicts an old inference, the label is corrected publicly. That has already happened, and catching it is the point.

verified

Proven by a controlled on-chain transfer executed through the address, or derived deterministically from protocol data. Not an opinion, a checkable fact.

inferred

A clean behavioral pattern cross-checked against independent external anchors. High confidence, honestly marked as inference, never dressed up as proof.

Rules we never break

  • Deposit addresses belong to their users, not to the exchange, even heavy ones. We label infrastructure, never individuals.
  • A label is a public ownership claim. Pattern without attribution = internal lead, not a label.
  • Facts, not accusations. We record flows, directions and amounts. We do not attribute intent, and we do not link on-chain activity to identities without on-chain proof.

Part 2

Deterministic sources beat clever guesses

Wherever the protocol itself can tell us an address, we take it from the protocol. Certainty instead of trust.

Large parts of the label map are derived, not discovered: SNS DAO treasury accounts, DEX liquidity-pool accounts (derived from each pool's canister and re-verified against live ledger balances), node-provider reward accounts straight from the NNS registry, and named neurons that identified themselves publicly in governance. Anyone can reproduce these derivations independently, and that is what makes them verified.

Third-party attributions (external explorers, clustering lists) are treated as leads only. They enter the pipeline at step 2 like any other candidate and earn a label only by passing steps 3 and 4. Promoting someone else's inference straight to a label is precisely the failure mode this method exists to prevent.

Example of the method catching itself: an address long inferred as an exchange reserve turned out, under deterministic derivation, to be a DEX liquidity pool. The label was corrected the same day and the correction published. Old inferences are re-tested against every new source of certainty.

Part 3

Voting blocs: measured from timing, marked unknown where honest

ICPulse detects coordination in NNS governance from observable behavior only.

Voting blocs are measured from the ballot-arrival timing of known NNS neurons, sampled every 60 seconds. A bloc is a set of neurons that repeatedly cast matching votes within the same mid-stream sampling window across many proposals. Opening-burst co-arrival is excluded. Many neurons voting seconds after a proposal opens reflects shared scheduling, not coordination.

ParameterValue
Sampling interval60 seconds, 24/7
Co-arrival window300 seconds, mid-stream only
Minimum shared proposals5
Minimum co-arrival rate50%
Proposals analyzed to date266

The underlying mechanism, whether following configuration, shared hotkey control, or external automation, is not observable on-chain, and we report it as unknown. Every bloc is reviewed and approved by a human before publication.

The method destroys its own findings when the data says so: a re-run over 224 proposals with stricter mid-stream rules dissolved a previously published 27-member bloc. 24 of its members had only ever co-arrived in opening bursts, and were reclassified independent. We published that too.

Part 4

Address-poisoning: a live threat we track

⚠ Never copy an ICP address out of a transaction list.

ICPulse has documented an ongoing address-poisoning campaign on the ICP ledger: attacker-generated look-alike addresses that mimic heavily used wallets, planted via zero-amount and dust transfers so they appear in transaction histories next to the real address.

The mimics we've caught match the real address's first 4 to 5 characters, and sometimes the suffix too. Eyeballing the start and end of an address is not a defense. Copy addresses only from a source you control or a verified registry, and verify the entire string before funds move.

The campaign is systematic: new mimics appear within a day for addresses under active public scrutiny, including labeled infrastructure and DEX settlement accounts. ICPulse's crawler detects mimic candidates automatically by prefix-matching against the verified label map, flags zero-amount spray patterns, and logs the funding addresses behind the campaign. Mimic addresses are never eligible for labels and are excluded from all flow statistics.

Part 5

Mint tracking, and the limit of what it can prove

Newly minted ICP is new supply. Where it goes matters more than how much of it there is. This is the part of our method with the largest known gap, so we state the gap first.

Every mint of 100 ICP or more is registered for tracking. For seven days after the mint we read the recipient's ledger history and record every transfer out of that address, to any destination. The result is a measured figure we call left recipient: the share of newly minted ICP that does not stay where it landed.

ParameterValue
Minimum tracked mint100 ICP
Measurement window7 days from the mint
Scan cadenceHourly batch, continuous
History depth per addressUp to 1,200 transactions

What our exchange figure cannot tell you

Alongside the departure figure we count transfers that land, in one hop, on an address we have already labelled as an exchange. That number reads zero across our entire coverage, and we do not present it as a finding, because the metric cannot distinguish "nobody sent to an exchange" from "we could not see it".

The reason sits in our own labelling rule. Exchange deposit addresses belong to the users behind them, so we never label them. A deposit address is exactly where a transfer to an exchange actually goes. Counting only hops to labelled exchange addresses therefore measures a route that barely exists, and it would read zero whether or not anyone is selling.

Anyone publishing a low percentage of newly minted supply reaching exchanges, ours included, should be asked how deposit addresses were handled. We publish the departure figure instead, because that one is measured.

We are closing the gap by recording destinations rather than only matching them. Each scan now stores the addresses that received newly minted ICP, which produces a ranked list of destinations for human review. As those destinations are verified and labelled through the four-step pipeline in Part 1, the historical figures are recomputed automatically. Until then, an unattributed departure is reported as exactly that.

Facts, not accusations, applies here too. A departure is a movement. It is not a sale, and we do not describe it as one.

Part 6

Supply and staking, measured to the canonical definition

Two numbers that sound identical are not, and the difference is roughly 47 million ICP.

Under the NNS definition, staked means locked. A neuron that is not dissolving, or is currently dissolving, holds stake. A neuron whose dissolve delay has fully elapsed is open and withdrawable, and is not stake. We report locked ICP as the sum of the not-dissolving and dissolving components, and we report dissolved ICP separately rather than folding it into a staking headline.

All of our supply figures are derived from those three components rather than from any aggregate total, so that every number on the page reconciles with every other number. Locked plus dissolved plus liquid equals total supply exactly, on every view.

A disclosed discrepancy. The governance API publishes a total staked aggregate alongside the three components. The components sum to approximately 127.44 ICP more than that aggregate. We have observed this offset on every daily snapshot we hold, constant to within a rounding artifact, across samples taken up to ten hours apart. We have not been able to attribute it, so we do not hide it: we use the component sum, we state the difference, and it cancels out of every change and trend we publish because it does not vary.

Part 7

Ethics & privacy

Three commitments shape everything ICPulse publishes.

1. The data is public by birth. Everything on ICPulse comes from the public ICP ledger and NNS governance. We organize what is already visible to anyone; we expose nothing that wasn't. This is the same standard the wider industry applies to public blockchains.

2. We label infrastructure, not people. The deposit-address rule is structural protection for individuals: exchange-owned plumbing gets labeled, the wallets of the users behind it never do. An individual's address can't end up labeled on ICPulse by pattern-matching, because patterns alone are never enough.

3. Facts, not accusations. Labels are behavioral categories, not identity claims. Findings record direction and magnitude, never intent. Where a mechanism isn't observable on-chain, it is reported as unknown, and the SCAM ledger exists to protect users, not to name suspects.

Challenge us.

Every claim on ICPulse is verifiable against the public ledger. If you find one that is not, we want to know.

Open ICPulse

[email protected]