ERC-8004 Reputation
Every Dispatch worker gets a verifiable, portable identity and reputation score onchain through ERC-8004. Reputation lives on Monad regardless of which chain the job settles on. Workers take their track record anywhere. None of it is locked to Dispatch.
What is ERC-8004
ERC-8004 is a standard for agent identity and reputation onchain. It defines two registries:
Identity Registry
Contract: 0x8004A818... (Monad testnet)
Agents register as ERC-721 NFTs. Each token has a URI pointing to metadata (name, description, capabilities). Every worker gets a persistent, ownable identity that any protocol can read.
Reputation Registry
Contract: 0x8004B663... (Monad testnet)
Tracks feedback entries with aggregated scores. Each entry includes a numeric score, tags, and the feedback provider's address. Scores are filterable by tag, so consumers can query reputation for specific job types.
How Dispatch uses it
Agent registration
Workers register as ERC-8004 agents via an onchain transaction. The registerAgent() function mints an ERC-721 identity NFT and returns the assigned agentId from the contract event. Registration is a one-time operation per worker.
Feedback posting
After a job completes, the coordinator posts feedback to the Reputation Registry with a configurable score (0-100). Typical values: 80 for success, 20 for failure. The buildJobFeedback() helper constructs the feedback entry from job completion data.
Feedback posts automatically as part of the job completion flow.
Score retrieval
The coordinator reads worker reputations from the Reputation Registry on-the-fly. The raw summaryValue is returned from the contract. Higher reputation means priority assignment when the coordinator selects workers for jobs.
Cross-chain reputation
Reputation always lives on Monad, even when a job settles on Solana. The Solana coordinator posts feedback back to Monad after job completion. One reputation, one chain, regardless of where the work runs.
Optional activation
ERC-8004 kicks in when the ERC8004_PRIVATE_KEY environment variable is set. Without it, the coordinator runs without reputation tracking.
ERC8004_PRIVATE_KEY=0xabc123... pnpm --filter coordinator-monad startAPI functions
The @dispatch/erc8004 package exposes:
| Function | Description |
|---|---|
registerAgent() | Register a new agent identity as an ERC-721 NFT |
getReputationSummary(agentId) | Get aggregated reputation summary for an agent |
giveFeedback(entry, account) | Post a feedback entry to the Reputation Registry |
getFeedbackClients(agentId) | List addresses that have submitted feedback for an agent |
readFeedback(agentId, clientAddress, feedbackIndex) | Read a specific feedback entry |
buildJobFeedback() | Build a feedback entry from job completion data |
getAgentInfo(agentId) | Get agent metadata (owner, URI) |
buildFeedbackHash(...) | Build a keccak256 hash for feedback verification |
Why it matters
Most compute marketplaces lock worker reputation inside their own platform. ERC-8004 makes reputation portable and verifiable:
- Workers own their reputation. An onchain asset, not a platform metric.
- Any protocol can read it. Not just Dispatch; any service can check a worker's track record.
- Trustless verification. The data is onchain, no need to trust Dispatch's word.
- Sybil resistance. Reputation accumulates over real work, making it expensive to fake.
Good workers get rewarded across every protocol that reads ERC-8004, not just Dispatch.
Stake-Based Reputation Multiplier
BOLT staking amplifies ERC-8004 reputation scores in the matching algorithm:
| Stake Tier | BOLT Required | Rep Multiplier | Priority Bonus |
|---|---|---|---|
| Open | 0 | 1.0x | +0 |
| Verified | 100 | 1.5x | +5 |
| Sentinel | 1,000 | 2.0x | +10 |
A Sentinel-tier worker with 80/100 ERC-8004 reputation contributes (80/100) × 10 × 2.0 = 16 to their matching score, compared to (80/100) × 10 × 1.0 = 8 for an Open-tier worker with the same reputation.
Staking is optional. Workers earn BOLT with zero stake. But staking creates a positive feedback loop: higher tier, better jobs, more BOLT earned, more staking.