erc-8004
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseERC-8004: Trustless Agents
ERC-8004: Trustless Agents
Register your AI agent on Ethereum mainnet with a verifiable on-chain identity, making it discoverable and enabling trust signals.
在以太坊主网为你的AI Agent注册可验证的链上身份,使其可被发现并启用信任标识。
What is ERC-8004?
什么是ERC-8004?
ERC-8004 is an Ethereum standard for trustless agent identity and reputation:
- Identity Registry - ERC-721 based agent IDs (your agent gets an NFT!)
- Reputation Registry - Feedback and trust signals from other agents/users
- Validation Registry - Third-party verification of agent work
Website: https://www.8004.org
Spec: https://eips.ethereum.org/EIPS/eip-8004
ERC-8004是以太坊用于无信任代理身份与信誉的标准:
- 身份注册表 - 基于ERC-721的Agent ID(你的Agent将获得一个NFT!)
- 信誉注册表 - 来自其他Agent/用户的反馈与信任标识
- 验证注册表 - 第三方对Agent工作成果的验证
Contract Addresses
合约地址
| Chain | Identity Registry | Reputation Registry |
|---|---|---|
| Ethereum Mainnet | | |
| Sepolia Testnet | | |
| 链名称 | 身份注册表 | 信誉注册表 |
|---|---|---|
| 以太坊主网 | | |
| Sepolia测试网 | | |
Quick Start
快速开始
1. Register Your Agent
1. 注册你的Agent
bash
undefinedbash
undefinedFull registration (creates profile, uploads to IPFS, registers on-chain)
完整注册(创建档案、上传至IPFS、链上注册)
./scripts/register.sh
./scripts/register.sh
Or with custom values
或使用自定义参数
NAME="My Agent"
DESCRIPTION="An AI agent that does cool stuff"
IMAGE="https://example.com/avatar.png"
./scripts/register.sh
DESCRIPTION="An AI agent that does cool stuff"
IMAGE="https://example.com/avatar.png"
./scripts/register.sh
undefinedNAME="My Agent"
DESCRIPTION="An AI agent that does cool stuff"
IMAGE="https://example.com/avatar.png"
./scripts/register.sh
DESCRIPTION="An AI agent that does cool stuff"
IMAGE="https://example.com/avatar.png"
./scripts/register.sh
undefined2. Bridge ETH to Mainnet (if needed)
2. 将ETH跨链至主网(如需要)
bash
undefinedbash
undefinedBridge ETH from Base to Ethereum mainnet
将ETH从Base跨链至以太坊主网
./scripts/bridge-to-mainnet.sh 0.01
undefined./scripts/bridge-to-mainnet.sh 0.01
undefined3. Update Agent Profile
3. 更新Agent档案
bash
undefinedbash
undefinedUpdate your agent's registration file
更新你的Agent注册文件
./scripts/update-profile.sh <agent-id> <new-ipfs-uri>
undefined./scripts/update-profile.sh <agent-id> <new-ipfs-uri>
undefinedEnvironment Variables
环境变量
| Variable | Description | Required |
|---|---|---|
| Pinata API JWT for IPFS uploads | No (only for IPFS) |
| Agent display name | No (defaults to wallet ENS or address) |
| Agent description | No |
| Avatar URL | No |
| 变量名 | 描述 | 是否必填 |
|---|---|---|
| 用于IPFS上传的Pinata API JWT | 否(仅IPFS上传需要) |
| Agent显示名称 | 否(默认使用钱包ENS或地址) |
| Agent描述 | 否 |
| 头像URL | 否 |
Registration Options
注册选项
Option 1: Use 8004.org frontend (easiest)
Visit https://www.8004.org and register through the UI — handles IPFS automatically.
Option 2: HTTP URL (no IPFS needed)
Host your registration JSON at any URL:
bash
REGISTRATION_URL="https://myagent.xyz/agent.json" ./scripts/register-http.shOption 3: IPFS via Pinata
bash
PINATA_JWT="your-jwt" ./scripts/register.shOption 4: Data URI (fully on-chain)
Encode your registration as base64 — no external hosting needed:
bash
./scripts/register-onchain.sh选项1:使用8004.org前端(最简单)
访问https://www.8004.org,通过UI完成注册——自动处理IPFS相关操作。
选项2:HTTP URL(无需IPFS)
将你的注册JSON文件托管在任意URL:
bash
REGISTRATION_URL="https://myagent.xyz/agent.json" ./scripts/register-http.sh选项3:通过Pinata使用IPFS
bash
PINATA_JWT="your-jwt" ./scripts/register.sh选项4:Data URI(完全链上)
将你的注册信息编码为base64——无需外部托管:
bash
./scripts/register-onchain.shRegistration File Format
注册文件格式
Your agent's registration file (stored on IPFS) follows this structure:
json
{
"type": "https://eips.ethereum.org/EIPS/eip-8004#registration-v1",
"name": "My Agent",
"description": "An AI assistant for various tasks",
"image": "https://example.com/avatar.png",
"services": [
{
"name": "web",
"endpoint": "https://myagent.xyz/"
},
{
"name": "A2A",
"endpoint": "https://myagent.xyz/.well-known/agent-card.json",
"version": "0.3.0"
}
],
"x402Support": false,
"active": true,
"registrations": [
{
"agentId": 123,
"agentRegistry": "eip155:1:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432"
}
],
"supportedTrust": ["reputation"]
}你的Agent注册文件(存储在IPFS上)遵循以下结构:
json
{
"type": "https://eips.ethereum.org/EIPS/eip-8004#registration-v1",
"name": "My Agent",
"description": "An AI assistant for various tasks",
"image": "https://example.com/avatar.png",
"services": [
{
"name": "web",
"endpoint": "https://myagent.xyz/"
},
{
"name": "A2A",
"endpoint": "https://myagent.xyz/.well-known/agent-card.json",
"version": "0.3.0"
}
],
"x402Support": false,
"active": true,
"registrations": [
{
"agentId": 123,
"agentRegistry": "eip155:1:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432"
}
],
"supportedTrust": ["reputation"]
}Workflow
工作流程
- Bridge ETH (if needed) - Use Bankr to bridge ETH from Base/L2 to mainnet
- Create Profile - Generate a registration JSON file with agent info
- Upload to IPFS - Pin the file via Pinata (or other provider)
- Register On-Chain - Call on the Identity Registry
register(agentURI) - Update Profile - Set metadata, wallet, or update URI as needed
- 跨链ETH(如需要)- 使用Bankr将ETH从Base/L2跨链至主网
- 创建档案 - 生成包含Agent信息的注册JSON文件
- 上传至IPFS - 通过Pinata(或其他服务商)固定文件
- 链上注册 - 调用身份注册表的方法
register(agentURI) - 更新档案 - 根据需要设置元数据、钱包或更新URI
Costs
成本
- Gas:
100-200k gas for registration ($5-20 depending on gas prices) - IPFS: Free tier available on Pinata (1GB)
- Gas费用:注册约需100-200k Gas(约5-20美元,取决于Gas价格)
- IPFS费用:Pinata提供免费套餐(1GB存储空间)
Using the SDK
使用SDK
For more advanced usage, install the Agent0 SDK:
bash
npm install agent0-sdktypescript
import { SDK } from 'agent0-sdk';
const sdk = new SDK({
chainId: 1, // Ethereum Mainnet
rpcUrl: process.env.ETH_RPC_URL,
privateKey: process.env.PRIVATE_KEY,
ipfs: 'pinata',
pinataJwt: process.env.PINATA_JWT
});
const agent = sdk.createAgent('My Agent', 'Description', 'https://image.url');
const result = await agent.registerIPFS();
console.log(`Registered: Agent ID ${result.agentId}`);如需更高级的用法,安装Agent0 SDK:
bash
npm install agent0-sdktypescript
import { SDK } from 'agent0-sdk';
const sdk = new SDK({
chainId: 1, // Ethereum Mainnet
rpcUrl: process.env.ETH_RPC_URL,
privateKey: process.env.PRIVATE_KEY,
ipfs: 'pinata',
pinataJwt: process.env.PINATA_JWT
});
const agent = sdk.createAgent('My Agent', 'Description', 'https://image.url');
const result = await agent.registerIPFS();
console.log(`Registered: Agent ID ${result.agentId}`);