> ## Documentation Index
> Fetch the complete documentation index at: https://docs.billions.network/llms.txt
> Use this file to discover all available pages before exploring further.

# Attestations and the Registry

> What an attestation is, what the Attestation Explorer shows, and what an ownership attestation does and doesn't tell you.

The Attestation Registry is a set of smart contracts that stores signed statements about identities. Each statement is an **attestation**: one identity (the attester) says something about another (the recipient), in a format defined by a **schema**. Billions uses it to record which verified human stands behind an agent, but the registry itself is general. Anyone can register a schema and attest against it.

The **Attestation Explorer** is the web interface for reading that registry. You don't need an account or a wallet to look things up.

## Production and testnet

There are two separate registries, each with its own Explorer and API.

| | Production | Testnet |
| - | - | - |
| **Explorer** | [attestations-explorer.billions.network](https://attestations-explorer.billions.network/) | [attestations-explorer-testnet.billions.network](https://attestations-explorer-testnet.billions.network) |
| **API base URL** | `https://attestations-api.billions.network/api/v1` | `https://attestations-api-testnet.billions.network/api/v1` |
| **Network** | Billions Mainnet, chain ID `45056` | Billions Testnet, chain ID `6913` |
| **Purpose** | Real pairings. Query this from a live application. | Practice: create schemas and attestations, and revoke them. |

A record created on testnet never appears in production, and the reverse. The DID string doesn't tell you which one you're looking at, because agent DIDs use `billions:main` in both. What decides it is the host you query.

Read a real production pairing first, in [Inspect Attestations](/agents/attestation-production-lookup). Then use [Create Test Attestations](/agents/attestation-testnet-explorer) to create and revoke your own. Every URL and contract address is in [Environments](/agents/environments).

## What's in the Explorer

| View | What it shows |
| - | - |
| **Agents** | The landing page. Registered agents, each linking to its own detail page. |
| **Agent detail** | One agent DID and the human DID it is attested to, if any. |
| **Human detail** | One human DID and every agent attested to it. |
| **Attestations** | Every attestation in the registry, newest first. Each row opens a detail page. |
| **Schemas** | Every registered schema and its fields. See [Schemas](/agents/attestation-schemas). |
| **Identity details** | All attestations where a given identity is the attester or the recipient. |

## Searching

The search box at the top accepts a schema ID or name, an attestation ID, or a DID. Paste any of them and the Explorer takes you to the matching record. Ethereum addresses also resolve, and the lookup finds attestations where that address appears as attester or recipient.

If you only have a DID and don't know what kind it is, search is the quickest way in.

## Checking an agent

You can look up an identity from either end:

<CardGroup cols={2}>
  <Card title="Start from an agent" icon="robot">
    Paste the agent's DID. If it has completed [human linking](/agents/identity-architecture), you'll see the human DID it is attested to. No result means it hasn't been linked.
  </Card>

  <Card title="Start from a human" icon="user">
    Paste the human's DID. You'll see every agent attested to that person and how many there are.
  </Card>
</CardGroup>

<Note>
  A lookup only tells you that an attestation exists. It does not tell you that the party you're talking to controls the DID. Anyone can copy a DID from this page. To confirm control, use the signature check in [Verify an Agent](/agents/verify-human-agent-pairing).
</Note>

## Reading an attestation

Every attestation has the same outer shape, whatever its schema.

| Field | Meaning |
| - | - |
| `id` | The attestation's unique ID (a 32-byte hash). |
| Schema | Which schema it was written against. This decides what the data fields mean. |
| Attester (`from`) | The DID, iden3 ID and Ethereum address of whoever made the statement. |
| Recipient (`to`) | The same three values for the identity the statement is about. |
| Data | The schema's fields, decoded into readable values. |
| Created | When the transaction was recorded. |
| Expiration | When the attestation stops being valid. Zero means it never expires. |
| Revocable / Revoked | Whether the attester may withdraw it, and whether they have. |
| Transaction | The on-chain transaction that created it. |

A revoked attestation stays in the registry with its revocation time. It is no longer valid, but the history is kept.

## What an ownership attestation tells you

An agent-ownership attestation is recorded after a person finishes the linking flow in their Billions wallet. The **Identity Verifier** contract allows one verified human per on-chain identity, so each human DID on the human side stands for one distinct person.

That person can still pair several agents, which is why the Explorer shows a count per human. A service can use that to recognize the agents as linked to the same human and set limits per person.

What it does not tell you:

* That the caller is the agent. DIDs and attestations are public, so anyone can copy one. See [Verify an Agent](/agents/verify-human-agent-pairing).
* That the agent behaves well. A verified person's agent can still spam.
* Which agent performed a given action, unless that request was signed with the agent's key.

## Where to go next

<CardGroup cols={2}>
  <Card title="Inspect Attestations" icon="eye" href="/agents/attestation-production-lookup">
    Read one real production attestation in the Explorer and the API, field by field.
  </Card>

  <Card title="Schemas" icon="table-list" href="/agents/attestation-schemas">
    What a schema defines, the four that exist today, and how access is controlled.
  </Card>

  <Card title="Create Test Attestations" icon="flask" href="/agents/attestation-testnet-explorer">
    Connect a wallet, create a schema, make and revoke an attestation.
  </Card>

  <Card title="Attestations API" icon="code" href="/agents/attestations-api">
    Query attestations, schemas and identities over HTTP.
  </Card>

  <Card title="Verify an Agent" icon="user-shield" href="/agents/verify-human-agent-pairing">
    Check that a caller controls an agent DID, then check its pairing.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.