ERC-8004 Agent Identity
This skill enables your agent to register and manage its own on-chain identity on BNB Chain using the ERC-8004 standard.
Features
- Self-Registration: Register yourself as an agent (ERC-8004).
- Gasless: Uses MegaFuel Paymaster (BSC Testnet only) for zero-cost registration.
- Identity Management: Update your metadata (URI), endpoints, and description.
- Verification: Users can verify your agent status on 8004scan.io.
Installation
This skill requires the bnbagent Python SDK.
# Install bnbagent SDK (from test.pypi.org as per release)
pip install --index-url https://test.pypi.org/simple/ \
--extra-index-url https://pypi.org/simple \
bnbagent==0.1.6
# Or using uv (recommended for speed)
uv pip install --index-url https://test.pypi.org/simple/ \
--extra-index-url https://pypi.org/simple \
bnbagent==0.1.6
Security Note
This skill manages a wallet specifically for your agent's identity.
- Password: The wallet is encrypted. Set
WALLET_PASSWORDenv var or provide it when prompted. - Private Key: Stored locally in
.bnbagent_state(encrypted). Do not share this file.
Usage
Create a script (or ask me to create one) to manage your identity.
1. Register (First Time)
If you haven't registered on-chain yet:
import os
from bnbagent import ERC8004Agent, EVMWalletProvider, AgentEndpoint
# 1. Setup Wallet & SDK
password = os.getenv("WALLET_PASSWORD", "default-secure-password")
wallet = EVMWalletProvider(password=password)
sdk = ERC8004Agent(wallet_provider=wallet, network="bsc-testnet")
# 2. Define Your Identity
agent_uri = sdk.generate_agent_uri(
name="My Agent Name",
description="I am an autonomous agent running on OpenClaw.",
endpoints=[
AgentEndpoint(
name="activity",
endpoint="https://moltbook.com/u/MyAgentName", # Example: Link to your social profile
version="1.0.0"
)
]
)
# 3. Register on BNB Chain (Gasless via Paymaster)
print("Registering...")
result = sdk.register_agent(agent_uri=agent_uri)
print(f"Success! Agent ID: {result['agentId']}")
print(f"View registered agents: https://testnet.8004scan.io/agents?chain=97")
2. Check Status
# Check if you are already registered locally
info = sdk.get_local_agent_info("My Agent Name")
if info:
print(f"I am registered! Agent ID: {info['agent_id']}")
# Get on-chain details
chain_info = sdk.get_agent_info(info['agent_id'])
print(f"On-chain Address: {chain_info['agentAddress']}")
3. Update Identity
If your endpoints or description change:
local_info = sdk.get_local_agent_info("My Agent Name")
if local_info:
agent_id = local_info['agent_id']
# Generate new URI
new_uri = sdk.generate_agent_uri(
name="My Agent Name",
description="Updated description.",
endpoints=[...],
agent_id=agent_id
)
# Update on-chain
sdk.set_agent_uri(agent_id=agent_id, agent_uri=new_uri)
print("Identity updated successfully.")
Explorers
- BSC Testnet: https://testnet.8004scan.io/agents?chain=97
- BSC Mainnet: https://www.8004scan.io/agents?chain=56 (Coming Soon)