● Live On-Chain Entity Resolution Data Engineering

Naming the "Unknown Proxy"

On-chain entity resolution: turning anonymous, high-volume Unknown Proxy (0x…) contracts into named entities with a cheapest-first labeling ladder across a dozen sources, spanning Ethereum, Base, Arbitrum, and Optimism.

Andrew Maury
Andrew Maury
Case Study
12+
Label sources
4
Chains resolved
172K+
Contracts attributed

The Challenge

ClearTrace attributes DEX volume to the frontend that originated each trade. But attribution has a stubborn tail: the highest-volume contracts often resolve to nothing more useful than Unknown Proxy (0x…). Those anonymous entries are the flow that matters most: institutional desks, custom enterprise frontends, and wallet-native swap extensions. A single unnamed proxy can sit near the top of a chain's volume table and quietly distort the entire picture of who is actually transacting.

No single data source names them all. Etherscan misses verifications that Sourcify holds. A proxy hides the implementation that carries its real identity. The same router, redeployed byte-for-byte across four chains, looks like four unrelated unknowns. Paid entity APIs would name a chunk of it, but running them across every unknown, on every sync, burns credits fast. The hard part is resolving each address to the best available label without paying for answers a free source already holds.

What We Built

A resolution ladder. For each unknown contract, ClearTrace walks a fixed sequence of sources ordered cheapest-and-most-authoritative first, stopping at the first real name. Roughly a dozen rungs, from a free eth_call to paid entity APIs tried last, with the order itself doing most of the work: by the time an address reaches a paid source, the free rungs have already named the vast majority of volume.

The ladder, cheapest first

Cross-chain identity

Two facts collapse a lot of duplicate unknowns into single known entities. First, teams deploy byte-identical routers across chains, so ClearTrace fingerprints each contract as a SHA-256 of its runtime bytecode with the Solidity CBOR metadata trailer stripped. That trailer differs between otherwise-identical builds, so removing it lets one labeled instance name its twins everywhere. Second, the same key controls an address on every EVM chain, so a mainnet ENS primary name identifies a wallet cross-chain. The pipeline also recognizes EIP-7702 delegated EOAs by their 0xef0100 designator and labels them through their delegate, so a delegated wallet never masquerades as a high-volume "Unknown Proxy" whale.

Refusing to guess

A wrong label is worse than an honest "Unknown." Every rung is filtered against a blocklist of meaningless names: generic activity tags like "High Activity," and proxy wrapper class names like TransparentUpgradeableProxy or ERC1967Proxy that describe the shape of a contract, not its owner. Masking those forces the ladder to fall through to a rung that resolves the actual implementation instead of propagating a name that says nothing. Each label also carries a confidence tier and is re-checked on a fixed interval, so a name from a weaker rung is replaced when a more authoritative source later resolves the same address.

Spending the effort where the volume is

Unknown volume is heavily concentrated in a few large addresses, so the pipeline ranks unresolved contracts globally by attributed volume and resolves the top of that list each sync, rather than sweeping every address round-robin. It is the cheapest way to move the most attributed volume from "Unknown" to named per run. In a recent snapshot of the label store, 259 of the resolved contracts carried entity names, and about 89% of those (231 of 259) were named by the free and structural rungs before any live paid lookup to Arkham, Nansen, or the batched Dune call.

-- Rank still-unnamed contracts by the volume they carry, across all chains,
-- so the resolution ladder spends its effort (and any paid rungs) on the
-- addresses that actually distort attribution.
SELECT
    resolved_contract_name,
    blockchain,
    total_volume_usd
FROM dune_attribution
WHERE (resolved_contract_name LIKE 'Unknown%'
       OR resolved_contract_name GLOB '0x[0-9a-fA-F]*')
  AND blockchain IS NOT NULL
ORDER BY total_volume_usd DESC
LIMIT 100;

What It Shows

Entity resolution on deliberately adversarial identity: flow that is unlabeled, proxied, redeployed across chains, or actively structured not to be measured. When off-the-shelf labels run out, ClearTrace resolves identity from the on-chain facts themselves: bytecode fingerprints, proxy storage slots, deployer graphs, and registry calls. It is the same Rantum through-line as the attribution engine it feeds: finding signal others can't, and doing it with cost discipline and a refusal to invent an answer.

What It Proves to a Client

That we can build an identity and attribution layer no single vendor sells. Any one vendor names part of the on-chain world; the value is in the ladder that combines authoritative, free, and paid sources in the right order, resolves structurally when none of them answer, and knows when to stop. For a foundation, grant program, or protocol team, that is the difference between "a large unknown near the top of the table" and a named entity you can actually reason about. It runs today inside ClearTrace's live dashboard and public API.

Have hard data to make useful?

Rantum is a senior data science & ML studio. We turn messy, fragmented, and adversarial data into models, APIs, and products that ship — on-chain and beyond.

Work with us