mcpField
E
erc-8004

erc-8004

github.com/tenequm开发4063 次安装1 周前更新
代码仓库

关于 erc-8004

erc-8004 是围绕 ERC-8004 草案 EIP 的技能,介绍如何在 EVM 链上注册、搜索并评价跨组织 AI Agent。内容涵盖三类链上注册表、Agent0 TypeScript SDK 和 OASF 分类体系。

主要功能

  1. 01注册链上 Agent 身份
  2. 02按能力与信任条件搜索
  3. 03提交签名反馈与评价
  4. 04介绍三类智能合约注册表
  5. 05使用 OASF 技能与领域分类

适用场景

  1. 01为 AI Agent 创建链上身份
  2. 02发现提供 MCP 端点的 Agent
  3. 03构建 Agent 评价系统
  4. 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.txt
references/
contracts.md
oasf-taxonomy.md
registration.md
reputation.md
sdk-typescript.md
search-discovery.md
spec.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 NFTIdentityRegistryUpgradeable
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 等)
注册表地址
Identity0x8004A169FB4a3325136EB29fA0ceB6D2e539a432
Reputation0x8004BAa17C55a88189AE136b182e5fdA19dE9b63
Validation0x8004Cb1BF31DAf7788923b405b754f57acEB4272
测试网(Sepolia、Base Sepolia 等)
注册表地址
Identity0x8004A818BFB912233c491871b3d84c89A494BD9e
Reputation0x8004B663056A597Dffe9eCcC1965A193B7388713
Validation0x8004Cb1BF31DAf7788923b405b754f57acEB4272

相同代理地址适用于:Ethereum、Base、Arbitrum、Avalanche、Celo、Gnosis、Linea、Mantle、MegaETH、Optimism、Polygon、Scroll、Taiko、Monad、BSC,以及各测试网。

Reputation System

反馈使用带符号定点数:value(int128)+ valueDecimals(uint8,0-18)。

tag1测量内容示例valuevalueDecimals
starred质量 0-10087/100870
reachable端点是否在线(二进制)true10
uptime在线率 %99.77%99772
successRate成功率 %89%890
responseTime延迟(毫秒)560ms5600

防 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

术语含义
agentRegistryeip155:{chainId}:{contractAddress} - 全局唯一的注册表标识符
agentIdERC-721 tokenId - 链上数字标识符(SDK 中的格式:"chainId:tokenId")
agentURI指向 Agent 注册文件的 URI(IPFS/HTTPS)
agentWallet用于已验证付款地址的保留链上元数据键(EIP-712/ERC-1271)
feedbackIndexclientAddress 对 agentId 提交反馈次数的从 1 开始计数器
supportedTrust数组:"reputation"、"crypto-economic"、"tee-attestation"
x402Support表示是否支持 Coinbase x402 HTTP 付款协议的布尔标志
OASFOpen Agentic Schema Framework - 标准化的 Agent 技能/领域分类体系
MCPModel Context Protocol - 工具、提示词、资源、补全
A2AAgent2Agent - 通过 AgentCards 进行身份验证和技能声明、任务编排

Reference Index

参考资料内容
spec.md完整的 ERC-8004 规范(EIP 文本)
contracts.md智能合约接口、存储布局、部署
sdk-typescript.mdAgent0 TypeScript SDK 完整 API
registration.md注册文件格式、四条黄金规则、域名验证
reputation.md反馈系统、链下文件、值编码、聚合
search-discovery.mdAgent 搜索、子图查询、多链发现
oasf-taxonomy.md完整的 OASF v0.8.0 分类体系:全部 136 项技能和 204 个领域及其 slug

Official Resources

评论

支持 Markdown