Dispatch
Core Concepts

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 start

API functions

The @dispatch/erc8004 package exposes:

FunctionDescription
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 TierBOLT RequiredRep MultiplierPriority Bonus
Open01.0x+0
Verified1001.5x+5
Sentinel1,0002.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.