Skip to main content
Kleros runs four production curation registries built on Curate V2. Each registry curates a specific type of data; disputed entries are resolved by Kleros Court. Together they form the core data layer used by wallets, block explorers, and token lists to display trusted metadata for contracts and tokens.

Address Tags Registry

The Address Tags Registry maps a (address, chain) pair to a short descriptive tag string. It is the primary source for “what is this contract?” labels shown in wallets and explorers.

Item Schema

Each registered item encodes the following columns:

Subgraph Access

The registry is indexed by an Envio-hosted subgraph (private deployment). Query pattern:
  • Addresses must be lowercase in where filters
  • Filter by chain_id in props to narrow to a specific network
  • Items with ClearingRequested are still active - include them in “active tags” queries

Resolution Rules

  • One tag per address per chain. A second registration for the same (address, chainId) pair triggers a conflict; the curated item with more stake backing is preferred.
  • ATQ vs ATR conflict: If an address has a tag from both the ATQ meta-registry and the Address Tags Registry, the ATR entry takes priority (it is individually curated and challenged).

Tokens Registry

The Tokens Registry curates ERC-20 token metadata. It is the source for Kleros-maintained token lists used by Uniswap, MetaMask, Ledger, and others.

Item Schema

Subgraph Access

Same Envio-hosted subgraph pattern as ATR. Query by registryAddress for the Tokens registry contract.

Token List Output

The Tokens registry generates a standard Token List JSON at build time. Consumers fetch the static file rather than querying the subgraph directly:

CDN Registry (Contract Domain Names)

The CDN Registry maps contract addresses to web domains. It provides a reverse-lookup: given a contract address, find the project’s authoritative domain.

Item Schema

Subgraph Access

Same Envio-hosted subgraph pattern. CDN is smaller than ATR; the full set can typically be fetched in a single query.

Use Cases

  • Wallet phishing detection: check whether the domain a dApp claims matches the CDN entry for the contract being called
  • Block explorer “verified project” badges
  • Reverse DNS resolution for contract addresses

ATQ Registry (Address Tag Query)

The ATQ registry is a meta-registry: instead of curating individual address tags, it curates NPM packages that each generate batches of address tags when run. This allows large-scale tag generation (thousands of addresses) without requiring individual curation submissions per address.
ATQ is not queryable on-the-fly via subgraph. To generate address tags from ATQ, you must download and run each registered NPM package locally. There is no API that returns ATQ-derived tags for a specific address in real time.

Item Schema

Workflow

  1. A data provider publishes an NPM package that exports a function returning Array<{address, chainId, tag, ...}>
  2. They submit the package to the ATQ registry via Curate
  3. Consumers clone all registered packages, run them, and merge the results into a combined address tag dataset
  4. The merged dataset is cached and served statically

Data Model


Data Models

Full normalized data models for each registry:

curate_address_tag

curate_token

curate_cdn

curate_atq_package


Consumers

The following products and services consume data from Kleros registries: Consumers typically fetch a pre-built static export (JSON file) rather than querying the subgraph at runtime, to avoid exposing API keys in client-side code.

Architecture

Level 1 - System Context

Level 2 - Container View


Known Limitations


Adding Data to a Registry

To contribute address tags, tokens, or domain names:
  1. Go to curate.kleros.io and select the registry
  2. Review the registry policy (linked from the registry page)
  3. Submit your item and pay the deposit
  4. Wait for the challenge period to expire (typically 3–7 days)
For bulk submissions via ATQ:
  1. Create an NPM package exporting an async function returning an array of {address, chainId, tag} objects
  2. Publish it to NPM
  3. Register it in the ATQ registry on Curate
Contact the Kleros team via Discord or integrations@kleros.io if you need registry contract addresses, Envio subgraph endpoints, or assistance with bulk ATQ submissions.