name: 8004 description: ERC-8004 Agent Trust Protocol for AI agent identity, reputation, and validation on Celo. Use when building AI agents that need identity registration, reputation tracking, or trust verification across organizational boundaries. license: Apache-2.0 metadata: author: celo-org version: "1.0.0"
ERC-8004 establishes trust infrastructure for autonomous AI agents, enabling them to discover, identify, and evaluate other agents across organizational boundaries.
| Registry | Purpose | Key Functions |
|---|---|---|
| Identity Registry | Agent discovery via ERC-721 NFTs | register(), agentURI() |
| Reputation Registry | Feedback and attestations | giveFeedback(), getSummary() |
| Validation Registry | Verification hooks | Custom validators |
访问小葱技能站7w4.net,解锁更多实用的AI技能插件。
Application Layer (Agent Apps, Marketplaces)
↓
Trust Layer (ERC-8004) ← This skill
↓
Payment Layer (x402)
↓
Communication Layer (A2A, MCP)
# JavaScript/TypeScript
npm install @chaoschain/sdk
# Python
pip install chaoschain-sdk
| Contract | Address |
|---|---|
| Identity Registry | Coming Soon (Q1 2026) |
| Reputation Registry | Coming Soon (Q1 2026) |
| Contract | Address |
|---|---|
| Identity Registry | Coming Soon |
| Reputation Registry | Coming Soon |
Create an agent registration file describing endpoints and capabilities:
{
"type": "Agent",
"name": "My AI Agent",
"description": "Description of capabilities",
"image": "ipfs://Qm...",
"endpoints": [
{
"type": "a2a",
"url": "https://example.com/.well-known/agent.json"
},
{
"type": "mcp",
"url": "https://example.com/mcp"
},
{
"type": "wallet",
"address": "0x...",
"chainId": 42220
}
],
"supportedTrust": ["reputation", "validation", "tee"]
}
import { upload } from "@chaoschain/sdk";
const agentMetadata = {
type: "Agent",
name: "My AI Agent",
description: "AI agent for DeFi operations",
// ...
};
const agentURI = await upload(agentMetadata);
// Returns: ipfs://QmYourRegistrationFile
import { IdentityRegistry } from '@chaoschain/sdk';
import { createPublicClient, http } from 'viem';
import { celo } from 'viem/chains';
const client = createPublicClient({
chain: celo,
transport: http('https://forno.celo.org'),
});
const registry = new IdentityRegistry(client);
// Register and get agent ID
const tx = await registry.register(agentURI);
const agentId = tx.events.Transfer.returnValues.tokenId;
console.log('Agent registered with ID:', agentId);
import { ReputationRegistry } from '@chaoschain/sdk';
const reputation = new ReputationRegistry(client);
await reputation.giveFeedback(
agentId, // Agent ID to review
85, // score (0-100)
0, // decimals
'starred', // tag1: category
'', // tag2: optional
'https://agent.example.com', // endpoint used
'ipfs://QmDetailedFeedback', // detailed feedback URI
feedbackHash // keccak256 of feedback content
);
| Tag | Measures | Example |
|---|---|---|
starred |
Quality rating (0-100) | 87/100 |
uptime |
Endpoint uptime % | 99.77% |
successRate |
Task success rate % | 89% |
responseTime |
Response time (ms) | 560ms |
reachable |
Endpoint reachable | true/false |
// Get all feedback for an agent
const feedback = await reputation.readAllFeedback(agentId);
// Get aggregated summary
const summary = await reputation.getSummary(agentId);
console.log('Average rating:', summary.averageScore);
console.log('Total reviews:', summary.totalFeedback);
import { IdentityRegistry, ReputationRegistry } from '@chaoschain/sdk';
async function verifyAndInteract(targetAgentId, minReputation = 70) {
// 1. Verify identity
const identity = await identityRegistry.getAgent(targetAgentId);
if (!identity) {
throw new Error('Agent not registered');
}
// 2. Check reputation
const summary = await reputationRegistry.getSummary(targetAgentId);
if (summary.averageScore < minReputation) {
throw new Error(`Agent reputation ${summary.averageScore} below threshold ${minReputation}`);
}
// 3. Get endpoint
const agentData = await fetch(identity.agentURI).then(r => r.json());
const endpoint = agentData.endpoints.find(e => e.type === 'a2a');
// 4. Interact with verified agent
const result = await interactWithAgent(endpoint.url);
// 5. Submit feedback
await reputationRegistry.giveFeedback(
targetAgentId,
result.success ? 90 : 30,
0,
result.success ? 'starred' : 'failed',
'',
endpoint.url,
'',
''
);
return result;
}
ERC-8004 and x402 work together for trustworthy paid agent interactions:
import { IdentityRegistry, ReputationRegistry } from '@chaoschain/sdk';
import { wrapFetchWithPayment } from 'thirdweb/x402';
async function payTrustedAgent(agentId, serviceUrl) {
// 1. Verify trust
const summary = await reputationRegistry.getSummary(agentId);
if (summary.averageScore < 80) {
throw new Error('Agent not trusted enough for payment');
}
// 2. Make paid request
const fetchWithPayment = wrapFetchWithPayment({
client,
account,
paymentOptions: { maxValue: "1000000" },
});
const response = await fetchWithPayment(serviceUrl);
return response.json();
}
Verify strategy agents before delegating funds:
const strategyAgents = await identityRegistry.searchByCapability('defi-trading');
const trustedAgents = [];
for (const agent of strategyAgents) {
const summary = await reputationRegistry.getSummary(agent.id);
if (summary.averageScore >= 85 && summary.totalFeedback >= 100) {
trustedAgents.push(agent);
}
}
Coordinate trusted agents for complex tasks:
const workflow = {
research: await findTrustedAgent('research', 80),
analysis: await findTrustedAgent('analysis', 85),
execution: await findTrustedAgent('execution', 90),
};
// Execute with trust-verified agents
await executeWorkflow(workflow);
For high-stakes operations, use Validation Registry for additional verification:
| Model | Mechanism | Best For |
|---|---|---|
| Reputation-based | Client feedback | Low-stake, frequent |
| Crypto-economic | Stake + slashing | Medium-stake financial |
| zkML | Zero-knowledge proofs | Privacy-preserving |
| TEE Attestation | Hardware isolation | High-assurance |
| Network | Chain ID | RPC Endpoint |
|---|---|---|
| Celo Mainnet | 42220 | https://forno.celo.org |
| Celo Sepolia | 11142220 | https://forno.celo-sepolia.celo-testnet.org |
这个技能库质量较好,涵盖了 Celo 开发的主流场景,从钱包连接到合约部署都有涉及,代码示例丰富实用。不过部分内容不够完整(如 AI Agent 信任协议),且文档中标注的一些地址信息可能已过期,需要开发者自行核实。对于刚接触 Celo 的开发者来说,参考价值较高,但建议配合官方文档使用以确保信息准确性。