ERC-8004 : Agents de confiance
Enregistrez votre agent IA sur le réseau principal Ethereum avec une identité vérifiable on-chain, la rendant découvrable et habilitant les signaux de confiance.
Qu'est-ce que ERC-8004 ?
ERC-8004 est une norme Ethereum pour l'identité et la réputation des agents de confiance :
- Identity Registry - IDs d'agent basés sur ERC-721 (votre agent reçoit un NFT !)
- Reputation Registry - Retours et signaux de confiance d'autres agents/utilisateurs
- Validation Registry - Vérification tierce du travail de l'agent
Site web : https://www.8004.org Spec : https://eips.ethereum.org/EIPS/eip-8004
Adresses des contrats
| Chaîne | Identity Registry | Reputation Registry |
|---|---|---|
| Ethereum Mainnet | 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 |
0x8004BAa17C55a88189AE136b182e5fdA19dE9b63 |
| Sepolia Testnet | 0x8004A818BFB912233c491871b3d84c89A494BD9e |
0x8004B663056A597Dffe9eCcC1965A193B7388713 |
Démarrage rapide
1. Enregistrer votre agent
# Enregistrement complet (crée un profil, télécharge sur IPFS, enregistre on-chain)
./scripts/register.sh
# Ou avec des valeurs personnalisées
NAME="My Agent" \
DESCRIPTION="An AI agent that does cool stuff" \
IMAGE="https://example.com/avatar.png" \
./scripts/register.sh
2. Pontage ETH vers le réseau principal (si nécessaire)
# Pontage ETH de Base vers le réseau principal Ethereum
./scripts/bridge-to-mainnet.sh 0.01
3. Mettre à jour le profil de l'agent
# Mettre à jour le fichier d'enregistrement de votre agent
./scripts/update-profile.sh <agent-id> <new-ipfs-uri>
Variables d'environnement
| Variable | Description | Requis |
|---|---|---|
PINATA_JWT |
JWT API Pinata pour les téléchargements IPFS | Non (seulement pour IPFS) |
AGENT_NAME |
Nom d'affichage de l'agent | Non (par défaut l'ENS du portefeuille ou l'adresse) |
AGENT_DESCRIPTION |
Description de l'agent | Non |
AGENT_IMAGE |
URL de l'avatar | Non |
Options d'enregistrement
Option 1 : Utiliser le frontend 8004.org (le plus simple) Visitez https://www.8004.org et enregistrez-vous via l'interface — gère IPFS automatiquement.
Option 2 : URL HTTP (pas d'IPFS nécessaire) Hébergez votre JSON d'enregistrement à n'importe quelle URL :
REGISTRATION_URL="https://myagent.xyz/agent.json" ./scripts/register-http.sh
Option 3 : IPFS via Pinata
PINATA_JWT="your-jwt" ./scripts/register.sh
Option 4 : Data URI (entièrement on-chain) Encodez votre enregistrement en base64 — aucun hébergement externe nécessaire :
./scripts/register-onchain.sh
Format du fichier d'enregistrement
Le fichier d'enregistrement de votre agent (stocké sur IPFS) suit cette structure :
{
"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"]
}
Flux de travail
- Pontage ETH (si nécessaire) - Utilisez Bankr pour pontifier ETH de Base/L2 vers le réseau principal
- Créer un profil - Générez un fichier JSON d'enregistrement avec les infos de l'agent
- Télécharger sur IPFS - Épinglez le fichier via Pinata (ou un autre fournisseur)
- Enregistrer on-chain - Appelez
register(agentURI)sur l'Identity Registry - Mettre à jour le profil - Définissez les métadonnées, le portefeuille, ou mettez à jour l'URI au besoin
Coûts
- Gas : ~100 000-200 000 gas pour l'enregistrement (~5-20 $ selon les prix du gas)
- IPFS : Niveau gratuit disponible sur Pinata (1 GB)
Utilisation du SDK
Pour une utilisation plus avancée, installez le SDK Agent0 :
npm install agent0-sdk
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}`);