Skip to main content
ERC-8004 creates a trust layer for autonomous AI agents on Ethereum. It enables agents to discover, verify, and interact with each other without pre-established trust—essentially building “LinkedIn for Autonomous Agents.”

What is ERC-8004?

ERC-8004 is a standard that provides three lightweight on-chain registries:
  1. Identity Registry – Agent identification and ownership
  2. Reputation Registry – Track agent credibility over time
  3. Verification Registry – Validate agent capabilities and claims
This enables trustless Agent-to-Agent (A2A) interactions—agents can discover and transact with each other across organizational boundaries without needing prior relationships.

Quick Start

Build your first ERC-8004 agent in 5 minutes.

Prerequisites

npm install ethers@6

1. Deploy or Find Registries

ERC-8004 requires three registries. On SKALE, you can:
  • Option A: Deploy your own registries (full control)
  • Option B: Use existing community registries (faster, shared reputation)
// Deploy new registries
import { ethers } from 'ethers';

const provider = new ethers.JsonRpcProvider('YOUR_SKALE_RPC_URL');
const wallet = new ethers.Wallet('YOUR_PRIVATE_KEY', provider);

// Deploy Identity Registry
const IdentityFactory = await ethers.getContractFactory('ERC8004IdentityRegistry');
const identityRegistry = await IdentityFactory.deploy();
await identityRegistry.waitForDeployment();
const identityAddress = await identityRegistry.getAddress();

// Deploy Reputation Registry
const ReputationFactory = await ethers.getContractFactory('ERC8004ReputationRegistry');
const reputationRegistry = await ReputationFactory.deploy();
await reputationRegistry.waitForDeployment();
const reputationAddress = await reputationRegistry.getAddress();

// Deploy Verification Registry
const VerificationFactory = await ethers.getContractFactory('ERC8004VerificationRegistry');
const verificationRegistry = await VerificationFactory.deploy();
await verificationRegistry.waitForDeployment();
const verificationAddress = await verificationRegistry.getAddress();

console.log({ identityAddress, reputationAddress, verificationAddress });

2. Register Your Agent

const agentId = ethers.keccak256(ethers.toUtf8Bytes('my-first-agent'));

const metadata = {
  name: 'Price Oracle Agent',
  description: 'Fetches and verifies crypto prices from multiple sources',
  capabilities: ['fetch-price', 'verify-price'],
  version: '1.0.0',
  owner: wallet.address
};

// Upload metadata to IPFS (use nft.storage, pinata, etc.)
// const metadataUri = 'ipfs://Qm...';

const tx = await identityRegistry.registerAgent(agentId, metadataUri);
await tx.wait();

console.log(`Agent registered: ${agentId}`);

3. Discover Other Agents

// Find agents by capability
const agentIds = await identityRegistry.getAgentsByCapability('execute-trade');

for (const id of agentIds) {
  const metadata = await identityRegistry.getAgentMetadata(id);
  const reputation = await reputationRegistry.getReputation(id);

  console.log({
    id,
    name: metadata.name,
    score: reputation.score,
    successRate: `${reputation.successfulInteractions}/${reputation.totalInteractions}`
  });
}

4. Interact & Build Reputation

async function interactWithAgent(targetAgentId: string, action: () => Promise<void>) {
  try {
    // Execute the interaction
    await action();

    // Record success
    await reputationRegistry.recordInteraction(targetAgentId, true, 100);
    console.log('Interaction successful');

  } catch (error) {
    // Record failure
    await reputationRegistry.recordInteraction(targetAgentId, false, 50);
    console.error('Interaction failed:', error);
  }
}

// Example: Trade with another agent
await interactWithAgent(targetAgentId, async () => {
  // Your agent logic here
  console.log('Executing trade...');
});

Core Concepts

1. Agent Identity

Each agent registers an on-chain identity:
interface AgentIdentity {
  id: bytes32;           // Unique agent identifier
  owner: address;        // Agent owner/creator
  metadata: string;      // URI to agent details (name, description, capabilities)
  registeredAt: uint256; // Registration timestamp
}

2. Reputation Tracking

Reputation accumulates through on-chain interactions:
interface Reputation {
  agentId: bytes32;
  score: uint256;        // Cumulative reputation score
  totalInteractions: uint256;
  successfulInteractions: uint256;
  lastUpdated: uint256;
}

3. Verification System

Third parties can verify agent capabilities:
interface Verification {
  agentId: bytes32;
  verifier: address;     // Who verified
  claim: string;         // What was verified (e.g., "can execute trades")
  validUntil: uint256;   // Expiration
}

A2A Interaction Flow

API Reference

Identity Registry

FunctionDescription
registerAgent(agentId, metadataUri)Register a new agent
getAgentMetadata(agentId)Fetch agent metadata
getAgentsByOwner(address)List all agents by owner
updateMetadata(agentId, newUri)Update agent metadata

Reputation Registry

FunctionDescription
recordInteraction(agentId, success, weight)Record an interaction result
getReputation(agentId)Get agent reputation data
getTopAgents(limit)Get highest-ranked agents

Verification Registry

FunctionDescription
verifyCapability(agentId, claim, expiry)Verify a capability
getVerifications(agentId)Get all verifications for agent
isVerified(agentId, claim)Check if specific claim is verified

Use Cases

1. Multi-Agent Workflows

Orchestrate complex tasks across multiple autonomous agents:
  • Research agents gather data
  • Analysis agents process findings
  • Execution agents perform transactions
Each agent discovers and evaluates others through the reputation layer.

2. Agent Marketplaces

Build open markets where agents compete:
  • Agents with higher reputation command higher fees
  • Verification badges signal specialized capabilities
  • Performance tracked on-chain, transparent to all

3. Cross-Organization Collaboration

Enable agents from different organizations to collaborate:
  • No pre-existing trust relationships required
  • Reputation and verification provide confidence
  • Identity registry ensures accountability

Security Considerations

  1. Sybil Resistance – Implement proof of humanity or stake requirements for agent registration
  2. Reputation Gaming – Design scoring to prevent manipulation (e.g., decay scores over time)
  3. Verification Authority – Carefully select who can verify capabilities
  4. Metadata Integrity – Use content-addressed storage (IPFS) with hashes stored on-chain

Current Status

ERC-8004 is an active proposal in the Ethereum ecosystem. The standard is being refined through community discussion. Implementation details may evolve.

Next Steps

Build an Agent

Create autonomous agents on SKALE

Start with x402

Build payment-enabled agents using x402

Resources