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

# ERC-8004

> Cross-chain agent identity and reputation analytics

The `crosschain.agents` schema provides analytics for the ERC-8004 on-chain agent identity and reputation standard across 6 mainnets (Ethereum, Base, Polygon, Scroll, BSC, Gnosis). ERC-8004 enables trustless agent registration, metadata management, and peer-to-peer reputation feedback — all fully on-chain.

## Available Tables

| Table                                                     | Description                                                            |
| --------------------------------------------------------- | ---------------------------------------------------------------------- |
| [erc8004\_events](/historical-data/agents/erc8004/events) | Unified event log for all ERC-8004 protocol activity across all chains |

## Data Schema

Crosschain view (union of all 6 mainnets):

```
crosschain.agents.erc8004_events
```

Per-chain tables:

```
ethereum.agents.erc8004_events
base.agents.erc8004_events
polygon.agents.erc8004_events
scroll.agents.erc8004_events
bsc.agents.erc8004_events
gnosis.agents.erc8004_events
```

Testnet tables:

```
ethereum_sepolia.agents.erc8004_events
base_sepolia.agents.erc8004_events
scroll_sepolia.agents.erc8004_events
```

## Key Concepts

### Identity Registry

Agents register on-chain via an Identity Registry contract, receiving an NFT-based agent ID. Registration emits a `Registered` event with the agent's creator and wallet address. Agents can update their URI (`URIUpdated`) and set arbitrary metadata key-value pairs (`MetadataSet`).

### Reputation Registry

A separate Reputation Registry contract handles peer-to-peer feedback. Any address can submit scored feedback (0-100) for an agent (`NewFeedback`), which can later be revoked (`FeedbackRevoked`). Agents can append responses to feedback (`ResponseAppended`).

### extra\_fields

All event-specific decoded parameters are stored in a single `extra_fields` VARIANT (JSON) column. Access fields using Snowflake's semi-structured syntax:

```sql theme={null}
-- Feedback score
extra_fields:value::INT AS score

-- Rater address
extra_fields:clientAddress::STRING AS rater

-- Feedback tags
extra_fields:tag1::STRING AS tag1
```

### Supported Chains

| Chain    | Primary Activity            |
| -------- | --------------------------- |
| BSC      | Highest registration volume |
| Base     | Highest feedback volume     |
| Ethereum | Core deployment             |
| Polygon  | Active registrations        |
| Scroll   | Active registrations        |
| Gnosis   | Active registrations        |

## Sample Query

```sql theme={null}
-- Daily agent registrations and feedback volume
SELECT
    DATE_TRUNC('day', block_timestamp)::DATE AS dt,
    COUNT(CASE WHEN event_name = 'Registered' THEN 1 END) AS registrations,
    COUNT(CASE WHEN event_name = 'NewFeedback' THEN 1 END) AS feedback_count
FROM crosschain.agents.erc8004_events
WHERE block_timestamp >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY ALL
ORDER BY dt;
```
