关于 erc-8004
erc-8004 是围绕 ERC-8004 草案 EIP 的技能,介绍如何在 EVM 链上注册、搜索并评价跨组织 AI Agent。内容涵盖三类链上注册表、Agent0 TypeScript SDK 和 OASF 分类体系。
主要功能
- 01注册链上 Agent 身份
- 02按能力与信任条件搜索
- 03提交签名反馈与评价
- 04介绍三类智能合约注册表
- 05使用 OASF 技能与领域分类
适用场景
- 01为 AI Agent 创建链上身份
- 02发现提供 MCP 端点的 Agent
- 03构建 Agent 评价系统
- 04集成 ERC-8004 合约或 SDK
MCP 相关
说明如何在 Agent 注册文件中公布 MCP 端点和工具,并介绍通过 Agent0 SDK 搜索支持 MCP 的 Agent。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ tenequm/ skills --skill erc-8004安装后在 Claude Code 中输入/erc-8004确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSE.txtreferences/contracts.mdoasf-taxonomy.mdregistration.mdreputation.mdsdk-typescript.mdsearch-discovery.mdspec.md详细介绍
ERC-8004:无需信任的 Agent
ERC-8004 是一份 Draft EIP,旨在无需预先建立信任,即可跨组织边界发现、选择并与 AI Agent 交互。它定义了三个链上注册表,这些注册表作为每条 EVM 链上的单例部署。
作者: Marco De Rossi(MetaMask)、Davide Crapis(EF)、Jordan Ellis(Google)、Erik Reppel(Coinbase)
完整规范: references/spec.md
何时使用此技能
- 在链上注册 AI Agent(ERC-721 身份)
- 构建或查询 Agent 声誉/反馈系统
- 根据能力、信任模型或端点搜索和发现 Agent
- 使用 Agent0 TypeScript SDK(
agent0-sdk) - 实现 ERC-8004 智能合约集成
- 设置 Agent 钱包、MCP/A2A 端点或 OASF 分类体系
核心架构
三个轻量级注册表,均以 UUPS 可升级单例的形式部署:
| 注册表 | 用途 | 合约 |
|---|---|---|
| Identity | 用于 Agent 身份和注册文件的 ERC-721 NFT | IdentityRegistryUpgradeable |
| Reputation | 已签名的定点反馈信号和链下详情文件 | ReputationRegistryUpgradeable |
| Validation | 第三方验证者证明(质押、zkML、TEE) | ValidationRegistryUpgradeable |
Agent 身份 = agentRegistry(字符串 eip155:{chainId}:{contractAddress})+ agentId(ERC-721 tokenId)。
每个 Agent 的 agentURI 都指向一个 JSON 注册文件,其中包含名称、描述、端点(MCP、A2A、ENS、DID、钱包)、OASF 技能/领域、信任模型以及 x402 支持信息。
参见: references/contracts.md,了解完整的合约接口和地址。
使用 Agent0 SDK(TypeScript)快速入门
npm install agent0-sdk
注册 Agent
RPC_URL、PRIVATE_KEY 和 PINATA_JWT 在此技能的 metadata.openclaw.envVars 中声明。开发时请使用一次性/测试网密钥;进行任何主网操作时,请使用硬件钱包或权限受限的签名器。
import { SDK } from 'agent0-sdk';
const sdk = new SDK({
chainId: 84532, // Base Sepolia
rpcUrl: process.env.RPC_URL,
privateKey: process.env.PRIVATE_KEY,
ipfs: 'pinata',
pinataJwt: process.env.PINATA_JWT,
});
const agent = sdk.createAgent(
'MyAgent',
'An AI agent that analyzes crypto markets',
'https://example.com/agent-image.png'
);
// Configure endpoints and capabilities
await agent.setMCP('https://mcp.example.com', '2025-06-18', true); // auto-fetches tools
await agent.setA2A('https://example.com/.well-known/agent-card.json', '0.3.0', true);
agent.setENS('myagent.eth');
agent.setActive(true);
agent.setX402Support(true);
agent.setTrust(true, false, false); // reputation only
// Add OASF taxonomy
agent.addSkill('natural_language_processing/natural_language_generation/summarization', true);
agent.addDomain('finance_and_business/investment_services', true);
// Register on-chain (mints NFT + uploads to IPFS).
// Sends a real transaction signed with PRIVATE_KEY - confirm chainId, signer, and balance before running.
const tx = await agent.registerIPFS();
const { result } = await tx.waitConfirmed();
console.log(`Registered: ${result.agentId}`); // e.g. "84532:42"
搜索 Agent
const sdk = new SDK({ chainId: 84532, rpcUrl: process.env.RPC_URL });
// Search by capabilities
const agents = await sdk.searchAgents({
hasMCP: true,
active: true,
x402support: true,
mcpTools: ['financial_analyzer'],
supportedTrust: ['reputation'],
});
// Get a specific agent
const agent = await sdk.getAgent('84532:42');
// Semantic search
const results = await sdk.searchAgents(
{ keyword: 'crypto market analysis' },
{ sort: ['semanticScore:desc'] }
);
提供反馈
// Prepare optional off-chain feedback file
const feedbackFile = await sdk.prepareFeedbackFile({
text: 'Accurate market analysis',
capability: 'tools',
name: 'financial_analyzer',
proofOfPayment: { txHash: '0x...', chainId: '8453', fromAddress: '0x...', toAddress: '0x...' },
});
// Submit feedback (value=85 out of 100). On-chain tx; same caveats as `registerIPFS()` above.
const tx = await sdk.giveFeedback('84532:42', 85, 'starred', '', '', feedbackFile);
await tx.waitConfirmed();
// Read reputation summary
const summary = await sdk.getReputationSummary('84532:42');
console.log(`Average: ${summary.averageValue}, Count: ${summary.count}`);
参见: references/sdk-typescript.md,了解完整的 SDK API 参考。
注册文件格式
每个 Agent 的 agentURI 都解析为以下 JSON 结构:
{
"type": "https://eips.ethereum.org/EIPS/eip-8004#registration-v1",
"name": "MyAgent",
"description": "What it does, pricing, interaction methods",
"image": "https://example.com/agent.png",
"services": [
{ "name": "MCP", "endpoint": "https://mcp.example.com", "version": "2025-06-18", "mcpTools": ["tool1"] },
{ "name": "A2A", "endpoint": "https://example.com/.well-known/agent-card.json", "version": "0.3.0" },
{ "name": "OASF", "endpoint": "https://github.com/agntcy/oasf/", "version": "v0.8.0",
"skills": ["natural_language_processing/summarization"],
"domains": ["finance_and_business/investment_services"] },
{ "name": "ENS", "endpoint": "myagent.eth", "version": "v1" },
{ "name": "agentWallet", "endpoint": "eip155:8453:0x..." }
],
"registrations": [
{ "agentId": 42, "agentRegistry": "eip155:84532:0x8004A818BFB912233c491871b3d84c89A494BD9e" }
],
"supportedTrust": ["reputation", "crypto-economic", "tee-attestation"],
"active": true,
"x402Support": true
}
registrations 字段建立了双向加密链接:NFT 指向此文件,而此文件也指回该 NFT。这使得能够通过 /.well-known/agent-registration.json 验证端点域名。
参见: references/registration.md,了解最佳实践(四条黄金法则)和完整字段参考。
合约地址
所有注册表均通过 CREATE2(SAFE Singleton Factory)部署到确定性的靓号地址:
主网(Ethereum、Base、Polygon、Arbitrum、Optimism 等)
| 注册表 | 地址 |
|---|---|
| Identity | 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 |
| Reputation | 0x8004BAa17C55a88189AE136b182e5fdA19dE9b63 |
| Validation | 0x8004Cb1BF31DAf7788923b405b754f57acEB4272 |
测试网(Sepolia、Base Sepolia 等)
| 注册表 | 地址 |
|---|---|
| Identity | 0x8004A818BFB912233c491871b3d84c89A494BD9e |
| Reputation | 0x8004B663056A597Dffe9eCcC1965A193B7388713 |
| Validation | 0x8004Cb1BF31DAf7788923b405b754f57acEB4272 |
相同代理地址适用于:Ethereum、Base、Arbitrum、Avalanche、Celo、Gnosis、Linea、Mantle、MegaETH、Optimism、Polygon、Scroll、Taiko、Monad、BSC,以及各测试网。
Reputation System
反馈使用带符号定点数:value(int128)+ valueDecimals(uint8,0-18)。
| tag1 | 测量内容 | 示例 | value | valueDecimals |
|---|---|---|---|---|
starred | 质量 0-100 | 87/100 | 87 | 0 |
reachable | 端点是否在线(二进制) | true | 1 | 0 |
uptime | 在线率 % | 99.77% | 9977 | 2 |
successRate | 成功率 % | 89% | 89 | 0 |
responseTime | 延迟(毫秒) | 560ms | 560 | 0 |
防 Sybil:getSummary() 要求 clientAddresses 数组非空(调用方必须提供可信的评价者列表)。拒绝自我反馈(Agent 所有者/运营者不得对自己的 Agent 提交反馈)。
参见: references/reputation.md,了解完整的反馈系统、链下文件格式和聚合详情。
OASF Taxonomy (v0.8.0)
Open Agentic Schema Framework 为 Agent 分类提供标准化技能(136 项)和领域(204 项)。
顶级技能类别: natural_language_processing、images_computer_vision、audio、analytical_skills、multi_modal、agent_orchestration、advanced_reasoning_planning、data_engineering、security_privacy、evaluation_monitoring、devops_mlops、governance_compliance、tool_interaction、retrieval_augmented_generation、tabular_text
顶级领域类别: technology、finance_and_business、healthcare、legal、education、life_science、agriculture、energy、environmental_science、government、manufacturing、transportation 等。
使用斜杠分隔的路径:agent.addSkill('natural_language_processing/natural_language_generation/summarization', true)。
Key Concepts
| 术语 | 含义 |
|---|---|
agentRegistry | eip155:{chainId}:{contractAddress} - 全局唯一的注册表标识符 |
agentId | ERC-721 tokenId - 链上数字标识符(SDK 中的格式:"chainId:tokenId") |
agentURI | 指向 Agent 注册文件的 URI(IPFS/HTTPS) |
agentWallet | 用于已验证付款地址的保留链上元数据键(EIP-712/ERC-1271) |
feedbackIndex | clientAddress 对 agentId 提交反馈次数的从 1 开始计数器 |
supportedTrust | 数组:"reputation"、"crypto-economic"、"tee-attestation" |
x402Support | 表示是否支持 Coinbase x402 HTTP 付款协议的布尔标志 |
| OASF | Open Agentic Schema Framework - 标准化的 Agent 技能/领域分类体系 |
| MCP | Model Context Protocol - 工具、提示词、资源、补全 |
| A2A | Agent2Agent - 通过 AgentCards 进行身份验证和技能声明、任务编排 |
Reference Index
| 参考资料 | 内容 |
|---|---|
| spec.md | 完整的 ERC-8004 规范(EIP 文本) |
| contracts.md | 智能合约接口、存储布局、部署 |
| sdk-typescript.md | Agent0 TypeScript SDK 完整 API |
| registration.md | 注册文件格式、四条黄金规则、域名验证 |
| reputation.md | 反馈系统、链下文件、值编码、聚合 |
| search-discovery.md | Agent 搜索、子图查询、多链发现 |
| oasf-taxonomy.md | 完整的 OASF v0.8.0 分类体系:全部 136 项技能和 204 个领域及其 slug |
Official Resources
- EIP 讨论:https://ethereum-magicians.org/t/erc-8004-trustless-agents/25098
- 合约:https://github.com/erc-8004/erc-8004-contracts
- 最佳实践:https://github.com/erc-8004/best-practices
- SDK 文档:https://sdk.ag0.xyz
- SDK 文档源码:https://github.com/agent0lab/agent0-sdk-docs
- TypeScript SDK:https://github.com/agent0lab/agent0-ts
- Python SDK:https://github.com/agent0lab/agent0-py
- 子图:https://github.com/agent0lab/subgraph
- OASF:https://github.com/agntcy/oasf