ERC-8183 Agentic Commerce: Escrow, Evaluators, Disputes, and Payment Risk
ERC-8183 defines a minimal on-chain commerce primitive for jobs between clients and providers, with an ERC-20 budget held in escrow and an evaluator responsible for deciding whether submitted work should be completed and paid or rejected and refunded. The design gives autonomous agents a standardized path from job creation to funding, submission, evaluation, payment, rejection, or expiry, while optional hooks can extend the workflow with bidding, validation, reputation, payment splitting, and other policies. The protocol can make agent-to-agent commerce more composable, but it does not remove counterparty risk: evaluator selection, hook behavior, job descriptions, wallet security, deadlines, contract implementation, and the exact transactions being signed remain critical.
TL;DR
- ERC-8183 is a draft Ethereum ERC for agentic commerce built around a job, an escrowed ERC-20 budget, a client, a provider, and a single evaluator.
- A job moves through six concrete states: Open, Funded, Submitted, Completed, Rejected, or Expired.
- The client creates the job, negotiates or accepts the budget, funds escrow, and receives the refund if a funded job is rejected or expires.
- The provider performs the work and submits a deliverable reference. The provider cannot mark its own job complete.
- The evaluator is the decisive trust role after funding. It can reject while the job is Funded and can complete or reject after submission.
- The evaluator can be the client, a third-party address, or a smart contract that applies arbitrary verification logic.
- When a Submitted job is completed, escrow is released to the provider, minus any permitted platform fee. Rejected and expired funded jobs refund the client.
- The protocol uses an expiry timestamp so escrow cannot remain permanently locked merely because the evaluator or provider disappears.
- After expiry, a refund can be triggered for Funded or Submitted jobs. The specification recommends making this recovery function permissionless.
- ERC-8183 supports an optional hook contract for each job. Hooks can enforce custom policies before actions and perform side effects after actions.
- Hooks are powerful but expand the trust surface. A malicious or buggy hook can revert legitimate actions and keep the job unusable until expiry.
- The expiry refund path is intentionally not hookable, preserving a recovery mechanism even when a hook refuses to cooperate.
- The budget supplied to funding includes an expected-budget check, which protects the client against a price change between observing the job and submitting the funding transaction.
- A provider can be assigned when the job is created or later while the job remains Open, allowing bidding and delayed provider selection.
- A bytes32 deliverable reference lets the provider commit to off-chain work without forcing large deliverables into contract storage.
- Completion and rejection can include an attestation reason, such as a hash of off-chain evidence, making outcomes easier to audit and connect with reputation systems.
- ERC-8183 deliberately keeps reputation outside the core escrow primitive. ERC-8004 can complement it with identity, reputation, and validation signals.
- A strong ERC-8004 reputation does not force an ERC-8183 evaluator to approve a job and does not prove that the current job contract, hook, provider wallet, or deliverable is safe.
- Before funding a large agent job, inspect the ERC-8183 contract, payment token, budget, expiry, provider, evaluator, hook, provider wallet, evaluator wallet, and the exact funding transaction.
- Use TokenToolHub's Wallet Risk Scanner to investigate provider and evaluator addresses, and decode material ERC-8183 calls before approving or funding them.
ERC-8183 can enforce who funds a job, who submits work, who evaluates it, and where escrow moves after a terminal decision. It cannot guarantee that a provider is competent, that an evaluator is impartial, that a job description is sufficiently precise, that a hook is safe, or that a submitted deliverable actually satisfies an off-chain business objective. The contract coordinates roles and funds. The quality of the trust model still depends on how those roles and extensions are selected.
For prerequisite reading, start with AI Agents and Crypto Wallets to understand the accounts, signing authority, and operational wallets autonomous systems use on-chain. Then review AI Agents That Hold and Spend Crypto for the additional controls required once software can approve tokens, fund contracts, and move assets without a human signing every individual action.
What ERC-8183 is trying to solve
Autonomous agents can already discover APIs, invoke tools, communicate with other agents, and hold crypto. The harder problem begins when one agent wants to hire another.
Imagine a research agent paying a data agent to produce a market dataset. A treasury agent may hire a security agent to inspect a smart contract. A trading agent may pay another agent to calculate a specialized risk model. An application may ask a provider agent to bridge assets, transform data, produce a proof, generate media, or complete another machine-readable task.
In every case, commerce creates several questions that communication protocols alone cannot answer.
When should the client release payment? How does the provider know funds exist before doing the work? Who decides whether the deliverable satisfies the job? What happens if the provider never submits? What happens if the evaluator disappears? Can the client take back funds after work is submitted? How can the final outcome become useful reputation evidence for future jobs?
ERC-8183 addresses those questions with a deliberately small escrow state machine.
The protocol turns a commercial agreement into an on-chain job
At the center of ERC-8183 is a job containing the client, provider, evaluator, description, budget, expiry time, status, and optional hook.
The client creates the job. The client and provider can agree on a budget while the job is Open. The client funds the agreed budget into escrow. The provider performs the work and submits a deliverable reference. The evaluator then decides whether to complete or reject the job. If the job remains unresolved beyond its expiry, the escrow can be refunded.
This produces a compact workflow that applications can understand without every agent marketplace inventing a completely different payment state machine.
ERC-8183 is intentionally minimal
The protocol does not attempt to encode every possible marketplace rule into the core contract. It does not prescribe one reputation algorithm, one arbitration court, one bidding mechanism, one validator network, one identity standard, or one payment facilitator.
Instead, it provides a core job primitive and optional extension points.
That design is important because agentic commerce can involve radically different tasks. A deterministic computation can be evaluated by software. A creative deliverable may require subjective judgment. A token swap may need atomic asset transfers. A marketplace may require KYC or allowlists. Another may want reputation thresholds before a provider can be selected.
The same escrow primitive can support those workflows while keeping specialized policy outside the smallest core.
The core ERC-8183 roles
Understanding ERC-8183 begins with understanding who can do what. The protocol separates commercial authority across three primary actors.
Client
Creates the job, can select the provider when one was not chosen initially, negotiates the budget, funds escrow, and receives refunds from rejected or expired funded jobs.
Provider
Negotiates the budget, performs the requested work, submits the deliverable reference, and receives escrow when the evaluator marks the job Completed.
Evaluator
Acts as the decisive attester. It can reject a Funded job and, once work is Submitted, is the only role allowed to complete or reject it.
The client controls funding, but not post-submission settlement
The client controls whether the job is funded. While the job remains Open, the client can also reject it.
Once the provider has submitted work, however, the client does not receive a general unilateral cancellation right. Only the evaluator can complete or reject the Submitted job, unless the job reaches expiry and the refund path becomes available.
This protects providers from a simple form of payment griefing in which a client waits for delivery and then immediately withdraws escrow without evaluation.
The provider cannot pay itself
The provider can submit work but cannot call the completion function merely because it believes the job is finished.
This separation is fundamental. The provider is the party economically motivated to receive payment, so the settlement decision belongs to the evaluator.
The evaluator can be the client
ERC-8183 does not require a third-party evaluator. A job can set the evaluator equal to the client.
This creates a simpler two-party trust model: the provider relies on the client to judge the work fairly. It may be reasonable for low-value tasks, established commercial relationships, or jobs where the client can objectively verify the result.
For adversarial or high-value relationships, a separate evaluator can provide stronger separation of interests, but only if that evaluator is actually independent and competent.
What an ERC-8183 job contains
The specification requires each job to contain enough information for applications and contracts to understand its parties, economics, timing, and state.
| Field | Purpose | Due-diligence question | Risk if wrong |
|---|---|---|---|
| client | Address that creates and funds the job | Is this the expected client wallet? | Wrong party or compromised account controls funding |
| provider | Address authorized to submit the work and receive payment | Is this the intended provider? | Payment may ultimately flow to the wrong address |
| evaluator | Address that decides completion or rejection after funding | Who controls the settlement decision? | Collusion, censorship, unfair rejection, or false completion |
| description | Job brief or scope reference | Is success objectively defined? | Ambiguous work becomes difficult to evaluate fairly |
| budget | Amount of payment token placed in escrow | Does it match the negotiated price? | Overpayment, underpayment, or manipulated funding |
| expiredAt | Timestamp after which refund recovery becomes available | Is the deadline realistic? | Premature expiry or excessive lockup |
| status | Current lifecycle state | What actions are currently permitted? | Incorrect assumptions about settlement rights |
| hook | Optional contract that can extend policy around core actions | What code executes around the job? | Reverts, unexpected side effects, token movement, or policy changes |
The ERC-8183 job state machine
ERC-8183 defines six concrete states: Open, Funded, Submitted, Completed, Rejected, and Expired.
The specification also describes the lifecycle conceptually as Open → Funded → Submitted → Terminal, where Completed, Rejected, and Expired are terminal outcomes.
Open
The job exists but escrow has not been funded. Provider and budget can be established while permitted.
Funded
The agreed ERC-20 budget is in escrow. The provider can work and submit, while the evaluator can reject.
Submitted
The provider has committed a deliverable reference. The evaluator now controls completion or rejection.
Completed
The evaluator approves the job and escrow is released to the provider, subject to any permitted completion fee.
Rejected
The job ends without provider payment. Funded escrow is returned to the client.
Expired
After the deadline, the recovery path refunds escrow to the client if the job remains Funded or Submitted.
Open: negotiation before escrow
A newly created ERC-8183 job begins in the Open state. At this stage, funds have not yet been placed in escrow.
The client creates the job with an evaluator, expiry timestamp, description, optional provider, and optional hook. The evaluator cannot be the zero address, and the expiry must be in the future.
The provider can be selected immediately or later
The client can create the job with a specific provider already assigned. Alternatively, the provider can initially be the zero address.
Delayed provider selection supports workflows such as bidding, discovery, or off-chain negotiation. The client can later set the provider while the job remains Open, provided no provider has already been assigned.
The provider must be set before the job can be funded.
Both client and provider can participate in budget negotiation
While the job remains Open, either the client or provider can call the budget-setting function. This supports negotiation without forcing the initial job creation transaction to contain the final price.
Applications should not assume that the first budget ever observed is necessarily the final amount. The relevant value is the current budget immediately before funding.
The client can reject before funding
If the parties do not reach agreement, the client can reject the Open job. Because no escrow has been deposited, there is no funded budget to refund.
Budget negotiation and front-running protection
Funding is one of the most important state transitions because it moves actual ERC-20 assets from the client into the escrow contract.
The funding function accepts an expectedBudget. The transaction must revert if the job's current budget does not match that expected value.
Why expectedBudget matters
Suppose a client sees a job budget of 1,000 units and prepares to fund it. Because either the client or provider can update the budget while the job remains Open, a price change could occur before the funding transaction executes.
Without a consistency check, a funding call could potentially execute against a different budget from the amount the client believed it was accepting.
By requiring the observed expected budget to match the stored budget, ERC-8183 gives the client a basic protection against that race.
Funding requires a non-zero budget and assigned provider
The client cannot fund a zero-budget job under the specified flow, and a provider must already be assigned.
Once the checks succeed, the contract pulls the payment token from the client and changes the job state to Funded.
Token approval remains a separate security concern
The client generally needs to authorize the contract to transfer the ERC-20 payment token. That approval should be reviewed independently.
A user should not approve an unlimited token amount merely because the job budget is small unless the broader application architecture justifies that permission.
The escrow protocol controls its own accounting, but an unnecessarily broad token approval creates a larger permission surface than the individual job requires.
Funded: money is locked and work begins
Once funded, the commercial relationship becomes materially different. The client has transferred the agreed budget into escrow, and the provider can begin work knowing that the contract holds the payment.
The client can no longer simply reject the job unilaterally under the minimal state machine.
The provider now has payment assurance, but not guaranteed payment
Escrow proves that the budget exists. It does not guarantee that the provider will receive it.
The evaluator can still reject a Funded job before submission. The job can also expire before completion.
Providers therefore need to assess the evaluator and expiry terms before committing substantial resources.
The evaluator can reject before submission
This capability can be useful if the job becomes invalid while work is underway. For example, a dependency may fail, an external event may make the task obsolete, or a policy condition may no longer be satisfied.
It also creates evaluator risk. A malicious or colluding evaluator could reject a job after the provider has already invested resources but before submission.
The contract cannot determine whether that decision is commercially fair. That question belongs to the evaluator trust model and any surrounding reputation or legal framework.
Submitted: the provider declares the work ready for evaluation
The provider calls submit after completing the work. This moves the job from Funded to Submitted.
The submission includes a bytes32 deliverable reference.
The deliverable is a commitment, not necessarily the entire work product
Large AI outputs, datasets, media files, proofs, reports, or software artifacts generally should not be stored directly inside contract storage.
The deliverable reference can instead identify or commit to off-chain work. It might represent a hash, content identifier, attestation commitment, or another compact reference.
This keeps the on-chain state small while preserving an auditable relationship between the job and the submitted work.
Submitted creates a clear evaluation boundary
Without an explicit Submitted state, an evaluator or indexer might not know whether the provider considers the task finished.
ERC-8183 makes the boundary explicit: Funded means the work is underway or awaiting submission; Submitted means the provider considers a deliverable ready for evaluation.
After submission, the evaluator becomes decisive
Only the evaluator can call complete or reject while the job is Submitted. The client cannot simply withdraw escrow because it dislikes the result.
This is one of the most important protections for providers in the protocol.
Completed: when escrow is released to the provider
A Submitted job becomes Completed when the evaluator calls the completion function.
The state becomes terminal, and the escrowed budget is released to the provider, minus an optional platform fee if the implementation supports one.
The evaluator can attach a reason
The completion call can include an optional bytes32 reason, such as a commitment to off-chain evaluation evidence.
This allows an application to preserve more than a binary completed flag. A reason can reference the basis for the evaluator's decision and can later support indexing, auditing, or reputation systems.
Platform fees are completion-based
ERC-8183 permits implementations to charge a platform fee in basis points when a job completes. The fee is deducted from the provider payment and sent to a configured treasury.
The standard does not require a fee.
If a fee exists, users should verify its rate and treasury before funding because a job's headline budget is not necessarily identical to the provider's net proceeds.
Rejected: when the client receives the escrow back
Rejected is a terminal state. The exact authority to reject depends on the job's current state.
While Open, the client can reject. While Funded or Submitted, the evaluator can reject.
If escrow has already been funded, rejection refunds it to the client.
Rejection does not inherently prove provider failure
A rejected job may indicate poor provider performance, but the state alone does not explain why the rejection occurred.
The evaluator could have found the work incorrect. The job requirements could have become impossible. The evaluator could be malicious. A hook policy could have failed. The client and provider could have disagreed about off-chain scope.
This is why the optional reason and external evidence matter when outcomes feed into reputation.
Blindly converting every rejection into negative reputation is dangerous
If every rejection automatically damages the provider, a malicious evaluator could weaponize the escrow system to attack provider reputation.
Reputation layers should examine the reason, evaluator credibility, job context, timing, and surrounding evidence before assigning a strong negative signal.
Expired: the liveness escape hatch
Escrow systems need a way to recover when participants disappear.
ERC-8183 uses the job's expiredAt timestamp for this purpose.
When a Funded or Submitted job reaches its expiry, the refund function can transition the job to Expired and return the full escrow to the client.
Expiry protects against indefinite lockup
Without an expiry path, a provider that never submits or an evaluator that never responds could leave funds trapped indefinitely.
The expiry converts an unresolved commercial process into a deterministic recovery condition.
The specification recommends permissionless refund triggering
Implementations may restrict the refund caller, but ERC-8183 recommends allowing anyone to trigger the refund after expiry.
This is a useful liveness property. The refund destination remains the client, so a third party triggering the transaction does not receive the escrow.
Expiry design affects both sides
A deadline that is too short can harm providers. They may complete meaningful work only to find that the job expires before evaluation finishes.
A deadline that is too long can harm clients by leaving capital locked after the provider or evaluator stops responding.
The correct expiry depends on task complexity, expected evaluation time, network conditions, off-chain dependencies, and the amount of money involved.
The evaluator is the center of the ERC-8183 trust model
Escrow often sounds trustless because the smart contract controls funds. In ERC-8183, however, the evaluator determines whether the provider receives those funds after submission.
This makes evaluator selection one of the most important decisions in the entire job.
Client as evaluator
Setting the client as evaluator minimizes complexity and eliminates the need to trust a third-party attester.
The provider, however, must trust the client to evaluate honestly. If the client can receive the completed work and then reject it, escrow does not eliminate the commercial dispute. It only makes the client's decision auditable on-chain.
Independent human or organization
A trusted third party can reduce direct client-provider conflict.
This model works best when the evaluator has clear expertise, a strong reputation, and incentives to remain impartial.
It also introduces another point of failure. The evaluator can disappear, collude, become compromised, or misunderstand the job.
Smart contract evaluator
The evaluator can be a contract that performs arbitrary checks before deciding whether to complete or reject.
This is particularly powerful for deterministic jobs. A contract could verify a zero-knowledge proof, read an oracle, check an attestation, aggregate off-chain signals, or enforce a domain-specific result condition.
Automation reduces subjective discretion but transfers trust into the evaluator contract's code, dependencies, data sources, and upgradeability.
| Evaluator model | Main advantage | Main trust assumption | Primary risk | Good fit |
|---|---|---|---|---|
| Client | Simple and inexpensive | Client judges fairly | Client can reject valid work | Low-value or established relationships |
| Independent evaluator | Separates buyer from settlement judgment | Third party is competent and impartial | Collusion, compromise, inactivity | High-value subjective work |
| Smart contract | Deterministic automated settlement | Code and data sources are correct | Logic bugs, oracle failures, upgrade risk | Machine-verifiable tasks |
| Proof verifier | Cryptographic verification of defined conditions | Proof system and statement are appropriate | Narrow proof interpreted too broadly | Deterministic computation or zk-based tasks |
| Multi-party system behind evaluator | Can distribute judgment | Underlying quorum mechanism works | Coordination and governance failures | Higher-value marketplaces |
Evaluator collusion and settlement manipulation
Because the evaluator controls terminal settlement after submission, collusion can undermine the economic fairness of an otherwise correct escrow implementation.
Evaluator and client collusion
A client and evaluator can potentially coordinate to reject acceptable work after the provider has already delivered it.
The provider may recover reputation or pursue off-chain remedies, but the ERC-8183 core contract cannot independently judge the quality of an arbitrary deliverable.
Evaluator and provider collusion
An evaluator can complete a poor or nonexistent job, releasing escrow to the provider.
If the client is an autonomous agent that relies entirely on the evaluator, the loss can occur automatically.
Evaluator compromise
Even a reputable evaluator can lose its signing key. A compromised evaluator address can make malicious settlement decisions until the surrounding system detects the incident.
Economic alignment matters
For high-value jobs, an evaluator whose maximum downside is negligible compared with the job budget may have weak economic incentives to resist bribery or negligence.
Where are disputes in ERC-8183?
ERC-8183 does not define a separate Disputed state in its core state machine.
This is an important distinction. A disagreement can exist socially or operationally while the on-chain job remains Funded or Submitted, but the core standard itself does not create an arbitration phase with appeals.
The evaluator is the minimal dispute-resolution mechanism
In the base model, the evaluator's complete or reject decision resolves the escrow outcome.
If an application needs appeals, multi-stage arbitration, jury voting, evidence windows, or challenge periods, those mechanisms must be built around the core primitive, potentially through evaluators, hooks, or additional contracts.
Do not confuse disagreement with a protocol state
User interfaces should avoid presenting Disputed as though it were one of ERC-8183's six standardized job states unless the implementation explicitly adds such an extension.
The core states are Open, Funded, Submitted, Completed, Rejected, and Expired.
Hooks: where ERC-8183 becomes extensible
Optional hooks allow a job to execute custom logic around core actions without forcing that complexity into the base protocol.
A hook contract implements two generic callbacks: one before an action and one after an action.
interface IACPHook {
function beforeAction(
uint256 jobId,
bytes4 selector,
bytes calldata data
) external;
function afterAction(
uint256 jobId,
bytes4 selector,
bytes calldata data
) external;
}
The selector identifies the ERC-8183 action being processed. The data payload contains action-specific parameters and optional extension data.
Which actions can be hooked?
Provider assignment, budget changes, funding, submission, completion, and rejection can all be surrounded by hook callbacks.
The expiry refund path is intentionally different.
claimRefund is not hookable
The refund-after-expiry function must remain outside the hook mechanism.
This is a crucial liveness protection. If a malicious hook could intercept and revert the expiry refund forever, it could permanently trap escrow.
By excluding claimRefund from hooks, ERC-8183 preserves a recovery route after the deadline even when extension logic is broken or adversarial.
Hook abuse and hidden policy risk
Hooks increase flexibility by increasing the amount of code that can influence a job.
That tradeoff deserves careful analysis before large amounts are funded.
A before hook can block an action
Before-action logic can revert. This can enforce legitimate conditions such as allowlists, reputation thresholds, proof verification, bidding commitments, or policy checks.
It can also prevent an otherwise valid action from succeeding.
An after hook can roll back the entire transaction
After-action callbacks execute after the core logic within the same transaction. If the callback reverts, the entire transaction, including the preceding state changes and token transfers, rolls back.
This enables atomic multi-step flows but means a failing extension can prevent core actions from finalizing.
A malicious hook can intentionally grief participants
A hook could allow funding and then refuse to permit submission or completion. The parties may have to wait until expiry before the client can recover the base escrow.
Even if the base budget is eventually recoverable, time, gas, off-chain labor, or additional assets managed by the hook may still be exposed.
Upgradeable hooks create additional danger
The ERC-8183 specification recommends that hooks should not be upgradeable after job creation because changing hook behavior mid-job changes the rules after participants have committed.
If an implementation uses an upgradeable hook anyway, users should identify who controls upgrades, whether there is a timelock, and whether the hook can change before settlement.
Audit the hook, not only the escrow contract
A well-audited core escrow contract does not make an arbitrary hook safe.
Before funding a hooked job, review the hook contract with the same seriousness applied to other smart contracts controlling funds. The TokenToolHub Smart Contract Audits guide explains what audits can and cannot establish, and why deployment configuration and post-audit changes still matter.
What hooks can enable
The hook model can support policies that would otherwise require specialized versions of the entire commerce contract.
Pre-funding validation
A hook can block funding until the client or provider satisfies an allowlist, compliance rule, identity check, or other policy.
Reputation-aware provider selection
A hook can inspect external reputation data and reject providers that fail a threshold.
Post-completion reputation updates
After successful completion, a hook can publish or trigger reputation evidence without forcing the core escrow contract to understand the reputation system.
Custom fee and payment splitting
Extensions can coordinate additional transfers or distribution logic around the job.
Bidding
A job can begin without a provider, and a hook can verify signed bids before the client assigns the winning provider.
Atomic asset workflows
The ERC-8183 specification describes a fund-transfer pattern where a hook can coordinate capital supplied to a provider and output tokens returned before completion.
This illustrates how the basic job primitive can become part of more complex agentic financial workflows.
Why asset-transfer hooks require extra caution
Once a hook starts moving assets in addition to the core service fee, the user's economic exposure can exceed the visible ERC-8183 budget.
For example, an agent might be hired to convert or bridge tokens. The job budget may represent only the provider's service fee, while a hook separately transfers a much larger amount of working capital.
Job budget and total value at risk can diverge
A $100 service fee can coexist with a $100,000 asset transfer coordinated by a hook.
Risk interfaces should therefore calculate total assets exposed across the core contract and extensions rather than displaying only the job budget.
Token approvals can exist in multiple places
The client may approve the core contract for the service fee and a hook for another token amount.
Each approval should be reviewed separately.
Recovery logic can differ
The base escrow has an expiry refund path, but assets held or moved by a hook may follow hook-specific recovery logic.
Users should understand both before funding the job.
Provider bidding and assignment risk
ERC-8183 supports jobs created without a provider. This enables marketplaces to select the provider after the job already exists.
A bidding hook can make that selection more verifiable by requiring the selected provider to have signed a commitment to the bid.
Why signed bids help
Without provider authorization, a client could claim that a provider agreed to a price it never accepted.
A signed bid can bind the provider to the proposed amount, job, chain, and relevant hook context.
Bidding still needs selection policy
A valid signature proves that the provider made the bid. It does not prove that the provider is competent or that the client chose the best candidate.
Reputation, historical performance, wallet analysis, specialization, delivery time, and evaluator requirements can still matter.
Payment-token risk
ERC-8183 uses an ERC-20 token for payment. The token itself becomes part of the security model.
Not every ERC-20 behaves identically
Tokens can have unusual transfer logic, pausing, blacklisting, fees, rebasing, upgradeability, or other behavior that complicates escrow assumptions.
An implementation should carefully select supported payment assets and use robust transfer handling.
Stable-value assumptions can fail
If a job is priced in a token expected to maintain a stable value, depegging during a long job can change the economics for either party.
Token contract verification matters
A malicious interface can display a familiar token symbol while using a different contract address.
Before funding meaningful value, verify the actual token contract rather than relying on ticker text.
Platform fees and treasury risk
ERC-8183 allows an implementation to deduct a platform fee when a job completes.
The fee is not required by the standard, but if an implementation uses one, users should inspect the configuration.
Know the net provider payment
A provider evaluating job economics should distinguish the gross budget from the amount received after the completion fee.
Fee configuration can be an administrative risk
If the implementation allows an administrator to change fee parameters, the upgrade and governance model becomes relevant.
A contract whose fees can change unexpectedly introduces a different risk profile from an immutable configuration.
The ERC does not guarantee every implementation is secure
A protocol specification and a deployed contract are different things.
ERC-8183 describes required behavior, but users interact with specific bytecode deployed by specific teams.
Verify the actual implementation
Check whether the contract is verified, whether it follows the expected interfaces, and whether material deviations exist.
Inspect upgradeability
The reference implementation published with the draft uses upgradeable contract patterns. A production deployment can therefore introduce governance and upgrade authority into the trust model depending on how it is configured.
If a deployment is upgradeable, identify who can authorize upgrades and whether administrative control is protected by multisig, timelock, governance, or another mechanism.
Audits reduce uncertainty but do not eliminate it
Even an audited implementation can contain undiscovered vulnerabilities, configuration mistakes, unsafe upgrades, malicious hooks, compromised admin keys, or unexpected token behavior.
Review how smart contract audits work before treating an audit badge as a guarantee.
Provider non-delivery and delay
Escrow protects the client from immediately paying a provider before the evaluator approves work, but it does not prevent the provider from wasting time.
The provider can simply fail to submit
A Funded job can remain unresolved until the evaluator rejects it or the expiry is reached.
The client eventually recovers escrow, but opportunity cost remains. Capital can be locked and a time-sensitive task can fail.
Reputation can help price liveness risk
A provider with a long history of completing similar jobs on time may justify greater confidence than an unknown provider.
However, historical performance remains evidence rather than a guarantee.
Deadlines should match the task
Short deadlines reduce lockup but increase accidental expiry. Long deadlines give providers flexibility but increase the client's maximum capital-lock period.
Client griefing risk
The protocol reduces some client-side abuse after submission, but it cannot remove every form of griefing.
Ambiguous job descriptions
A client can create a vague brief that makes successful completion difficult to establish objectively.
Providers should inspect the job description before accepting the economics.
Unrealistic expiry
A client can create a deadline that leaves insufficient time for work and evaluation.
Adversarial evaluator selection
A client can choose an evaluator aligned with the client rather than a neutral party.
Budget negotiation without commitment to fund
Before funding, negotiation alone does not guarantee that the client will actually place money in escrow.
Providers should distinguish Open opportunities from Funded jobs when allocating resources.
Provider-side abuse
Clients also face risks from providers even though payment remains escrowed.
Low-quality or meaningless submissions
The provider controls when to submit and can commit a deliverable reference that the evaluator ultimately considers inadequate.
Deadline gaming
A provider can delay until close to expiry, leaving little practical time for evaluation.
Off-chain delivery manipulation
If the actual deliverable is hosted externally, access controls, availability, or mutable storage can create disputes about what was delivered.
Content-addressed storage or integrity hashes can reduce this ambiguity.
Wallet and identity substitution
A malicious interface can attempt to persuade a client to assign a provider address that resembles a trusted agent but is not the expected wallet.
Provider identity should be verified independently before funding.
Provider and evaluator wallet risk
ERC-8183 jobs identify roles by addresses. Those addresses provide an important due-diligence surface.
A provider wallet can reveal funding sources, transaction patterns, contract interactions, counterparties, approvals, and other public activity. An evaluator wallet can reveal whether it is newly created, connected to the provider, funded by the client, or involved in suspicious activity.
Look for relationships between roles
An evaluator marketed as independent deserves additional scrutiny if its wallet is consistently funded by the provider or controlled through obvious common infrastructure.
On-chain relationships do not prove collusion by themselves, but they can identify questions worth investigating.
Wallet age and activity can provide context
A new address is not automatically malicious, and an old address is not automatically trustworthy.
Still, a supposedly established evaluator represented by an address created minutes before a large job should trigger further verification.
Inspect both sides of the settlement decision
Before placing a large budget into an agent job, investigate the provider that will receive payment and the evaluator that controls whether payment is released. Wallet history can expose relationships and behavioral signals that the job interface itself does not show.
How ERC-8183 can interoperate with ERC-8004 reputation
ERC-8183 deliberately keeps reputation outside the core commerce primitive. The specification recommends ERC-8004 as an interoperable identity and reputation layer for agents.
This separation is conceptually clean:
Completed jobs can become positive evidence
A Completed job can contribute evidence that the provider successfully delivered a task according to the evaluator.
The job ID, parties, outcome, and attestation reason can provide stronger context than a generic review.
Rejected jobs require careful interpretation
A rejection may justify negative reputation, neutral reputation, or a more nuanced outcome depending on the reason and evaluator.
An evaluator-controlled rejection should not automatically be interpreted as objective proof that the provider acted maliciously.
Expired jobs are ambiguous
An expiry can result from provider non-delivery, evaluator inactivity, poor deadline configuration, or broader workflow failure.
Higher-level reputation systems should determine who, if anyone, deserves a negative signal.
Hooks can write reputation after settlement
A post-action hook can connect terminal ERC-8183 outcomes to ERC-8004 reputation infrastructure without requiring the core escrow contract to know the details of the reputation registry.
Hooks can also enforce reputation before actions
A policy hook could refuse to assign a provider below a required reputation threshold or require stronger safeguards for lower-reputation agents.
This creates machine-readable risk policy, but the quality of that policy depends on the reputation source and scoring method.
Why ERC-8004 reputation does not eliminate ERC-8183 risk
Reputation can improve provider discovery and evaluator selection, but it cannot substitute for job-level verification.
Historical success does not guarantee current delivery
A provider can change software, ownership, wallet infrastructure, or behavior after building reputation.
Reputation can be manipulated
Sybil reviewers, bought feedback, wash activity, reciprocal reputation, and low-value job farming can create misleading signals.
Task similarity matters
An agent with excellent reputation for data retrieval may have little evidence supporting a high-value token bridge operation.
Evaluator reputation also matters
A provider's reputation alone does not solve evaluator risk. High-value jobs should assess the evaluator independently.
Contract risk remains separate
Neither provider nor evaluator reputation proves that the ERC-8183 deployment or hook is secure.
Completion and rejection reasons as audit evidence
ERC-8183 allows completion and rejection calls to carry an optional reason, typically represented as a bytes32 commitment.
This small field can become important for auditability.
The reason can commit to off-chain evidence
The evaluator can hash an evaluation report, proof, decision record, or other artifact and include the commitment with the terminal action.
Later, the evidence can be compared with the on-chain hash to determine whether it has changed.
Reason hashes improve composability
Indexers and reputation systems can connect a job outcome with supporting evidence without forcing the entire document into contract storage.
A hash does not prove the evidence is true
Integrity and truth are different properties.
A hash can prove that a specific document matches the commitment. It cannot prove that the document's claims are accurate or that the evaluator reached the correct conclusion.
Meta-transactions and agent payment UX
Autonomous agents should not necessarily need to manage gas balances and chain-specific transaction submission for every commercial action.
The ERC-8183 specification describes an optional meta-transaction path using ERC-2771-style trusted forwarding.
The agent signs intent off-chain
A client, provider, or evaluator can sign an instruction, while a facilitator submits the on-chain transaction.
Authorization must preserve the original signer
Implementations using a trusted forwarder need to identify the original participant rather than treating the facilitator as the client, provider, or evaluator.
Permit can reduce separate approval transactions
For compatible payment tokens, ERC-2612 permit can allow token authorization through a signature that the facilitator submits alongside funding.
Gasless does not mean riskless
Users still need to understand what they are signing. A malicious or confusing signing request can authorize an unwanted action even if the user never manually sends an on-chain transaction.
ERC-8183 and x402-style agentic payments
ERC-8183's meta-transaction model can complement HTTP-native payment systems such as x402.
An agent can sign payment intent off-chain while a facilitator handles transaction submission. The agent may therefore interact with on-chain commerce without directly managing gas or RPC infrastructure for each chain action.
Payment and escrow solve different problems
An HTTP payment protocol can coordinate payment authorization and settlement. ERC-8183 adds a job lifecycle where payment can remain escrowed until work is submitted and evaluated.
Agentic commerce can combine several layers
A future agent marketplace can combine discovery, identity, reputation, job escrow, payment facilitation, validation, and wallet policy while keeping those components interoperable.
The security challenge is ensuring that convenience does not hide the increasing number of contracts and authorities involved.
Decode ERC-8183 calls before signing
Human-readable interfaces can hide important transaction details. For large jobs, inspect the actual call being sent to the contract.
createJob
Confirm the provider, evaluator, expiry, description reference, and hook. A wrong evaluator or hook can materially change the job's trust model before any funds are deposited.
setProvider
Confirm that the selected address is the intended provider. Once assigned under the minimal specification, it cannot simply be replaced through another setProvider call.
setBudget
Confirm the token units and decimals. A number that looks reasonable in raw calldata can represent a very different human-readable amount depending on the payment token.
fund
Verify the job ID, expected budget, contract address, token allowance, and any hook parameters.
submit
Providers should confirm that the deliverable commitment corresponds to the intended work and that hook data cannot trigger unexpected side effects.
complete and reject
Evaluators should confirm the correct job ID and reason commitment. A mistaken settlement action is economically consequential and terminal.
Verify the transaction, not only the interface
Before funding or settling a material ERC-8183 job, inspect the actual contract call. Confirm the target contract, function, job ID, budget, token movement, approvals, hook parameters, provider, and evaluator instead of relying solely on a frontend summary.
A practical ERC-8183 due-diligence workflow
For high-value jobs, treat funding as a structured security decision rather than a simple payment.
Step 1: verify the ERC-8183 deployment
Confirm the chain and contract address. Determine whether the source is verified and whether the implementation follows the expected state machine.
Step 2: inspect upgradeability and administration
Identify whether the deployment can be upgraded, who controls upgrades, who controls fee configuration, and whether administrative changes are delayed or governed.
Step 3: verify the payment token
Confirm the exact ERC-20 contract, decimals, transfer behavior, and whether the token has unusual administrative controls.
Step 4: read the job description
Determine whether successful completion is defined clearly enough for the evaluator to make a defensible decision.
Step 5: verify the provider
Confirm that the provider address belongs to the intended agent or organization. Check relevant identity and reputation evidence where available.
Step 6: inspect the provider wallet
Review public transaction history, funding sources, counterparties, approvals, suspicious contract exposure, and recent behavioral changes.
Step 7: verify the evaluator
Determine whether the evaluator is the client, an independent address, or a smart contract.
Step 8: inspect evaluator independence
For third-party evaluators, investigate relationships with the client and provider. Check whether the address has credible history and whether its incentives match the job value.
Step 9: inspect the hook
If the hook is non-zero, understand exactly what it can do before and after each action.
Step 10: calculate total value at risk
Do not stop at the job budget. Include token approvals, hook-managed assets, additional capital transfers, fees, and any external wallets controlled by the agent.
Step 11: check the expiry
Ensure the deadline gives the provider enough time to perform the work and the evaluator enough time to inspect it.
Step 12: confirm the current budget
Check that the expected budget in the funding call matches the amount you intend to escrow.
Step 13: inspect approvals
Review which contract or hook is authorized to spend which token and how much.
Step 14: decode the funding transaction
Verify the actual calldata before signing, especially when the frontend is unfamiliar or the job is large.
Step 15: monitor the job after funding
Track submission, evaluator activity, deadline proximity, hook interactions, and wallet behavior until the job reaches a terminal state.
Before funding an ERC-8183 agent job
- Verify the chain and Agentic Commerce contract address.
- Confirm whether the deployment is upgradeable.
- Identify administrative and upgrade authorities.
- Verify the payment token contract and decimals.
- Confirm the current job status is Open.
- Read the complete job description or referenced scope.
- Confirm the provider address.
- Inspect provider identity and reputation where available.
- Scan the provider wallet for material risk signals.
- Confirm the evaluator address and trust model.
- Investigate evaluator independence for high-value jobs.
- Inspect evaluator wallet history where relevant.
- Verify the job budget.
- Check that expectedBudget matches the amount you intend to fund.
- Confirm the expiry gives enough time for delivery and evaluation.
- Inspect the hook if one is configured.
- Determine whether the hook is upgradeable.
- Calculate assets exposed outside the base escrow.
- Review ERC-20 allowances to the core contract and hook.
- Decode the funding transaction before signing.
- Know how the expiry refund path works before funds are locked.
A provider's checklist before accepting work
Providers should perform their own due diligence. Escrow protects against unfunded work, but it does not guarantee fair evaluation.
Verify that the job is actually funded before expensive work begins
An Open job with a negotiated budget is not the same as escrowed funds.
Read the evaluation criteria
Ambiguous scope increases rejection risk.
Investigate the evaluator
The evaluator ultimately controls whether the provider receives payment after submission.
Check the expiry window
Ensure enough time exists not only for delivery but also for the evaluator to review the work.
Inspect hooks
A hook may block submission or completion even when the core state would otherwise permit the action.
Understand the net payment
Account for platform fees and any extension-level economics before accepting the job.
An evaluator's checklist before taking responsibility
Evaluators are not passive observers. Their decision moves money.
Require objective evidence where possible
Define what constitutes successful completion before the job reaches submission.
Verify the deliverable reference
Confirm that the artifact being evaluated corresponds to the submitted commitment.
Understand the financial consequence
Completion pays the provider. Rejection refunds the client. The decision is terminal under the core lifecycle.
Protect evaluator keys
A compromised evaluator can settle jobs incorrectly.
Preserve decision evidence
Use the reason commitment and supporting records when appropriate so future auditors and reputation systems can understand the basis for the outcome.
ERC-8183 risk matrix
| Risk | Who is exposed | How it occurs | What ERC-8183 provides | Additional control |
|---|---|---|---|---|
| Provider never delivers | Client | Funded job receives no submission | Evaluator rejection or expiry refund | Provider reputation and realistic deadlines |
| Client refuses valid work | Provider | Client controls evaluation in two-party model | Explicit evaluator role | Independent evaluator for higher-value jobs |
| Evaluator colludes with client | Provider | Valid work rejected | Auditable on-chain decision | Evaluator reputation, stake, governance, evidence |
| Evaluator colludes with provider | Client | Poor work marked complete | Explicit evaluator address | Independent evaluator and objective verification |
| Evaluator disappears | Both | No terminal decision | Expiry refund path | Appropriate deadline and backup operational process |
| Hook blocks progress | Both | Callback intentionally or accidentally reverts | Expiry refund remains unhookable | Audited, immutable, well-known hooks |
| Malicious hook moves assets | Client/provider | Extension performs unexpected token logic | No automatic protection | Code review, transaction decoding, limited approvals |
| Budget changes before funding | Client | Price updated while Open | expectedBudget consistency check | Decode funding call and verify UI state |
| Wrong provider assigned | Client | Address substitution or interface error | Provider recorded on-chain | Identity and wallet verification before funding |
| Wrong evaluator assigned | Both | Address substitution or malicious setup | Evaluator recorded on-chain | Verify evaluator before funding |
| Payment-token issue | Both | Malicious or unusual ERC-20 behavior | ERC-20 payment requirement | Use vetted tokens and inspect contract |
| Core contract vulnerability | Both | Implementation bug or unsafe upgrade | Specification only | Audit, verified code, governance review |
| Reputation manipulation | Client | Sybil or bought reputation | Reputation kept outside core | Independent ERC-8004 analysis and wallet evidence |
| Overbroad token approval | Client | Allowance exceeds job need | No automatic limit | Bound approvals and revoke when appropriate |
Practical example: an AI treasury hires a contract-analysis agent
Consider an autonomous treasury agent that needs an external provider to analyze a smart contract before allocating capital.
The treasury creates an ERC-8183 job with a 5,000-unit stablecoin budget. The provider is a specialist security agent. The evaluator is an independent smart contract that requires an external validation record before allowing completion.
Job creation
The client creates the job with the provider, evaluator, description, expiry, and a policy hook.
The description references a precise scope: contract address, chain, required checks, report format, and deadline.
Counterparty verification
Before funding, the treasury verifies the provider's identity and reviews its prior reputation.
It also scans the provider wallet and evaluator-related addresses. The provider has a long operating history, but several recent transactions involve a newly deployed contract. The treasury investigates before proceeding.
Hook review
The policy hook requires the provider to satisfy a reputation threshold and checks for a specific validation condition before completion.
The treasury verifies that the hook cannot be upgraded during the job and confirms that expiry refunds remain available through the core contract.
Funding
The current budget is 5,000 units. The treasury decodes the funding transaction and confirms that expectedBudget is 5,000, the payment token is the intended stablecoin, and the allowance is appropriately bounded.
Funding succeeds and the job becomes Funded.
Submission
The provider completes the analysis and uploads the report to content-addressed storage. It submits a bytes32 commitment representing the deliverable.
The job becomes Submitted.
Evaluation
The evaluator checks the required validation evidence. The report satisfies the defined conditions, so the evaluator calls complete with a reason hash committing to the evaluation evidence.
The escrow releases the provider's payment, subject to the implementation's fee.
Reputation update
A post-completion hook can connect the successful outcome with an ERC-8004 reputation system.
Future clients can see that the provider completed a real escrowed job, but they should still inspect the job value, evaluator credibility, task similarity, and supporting evidence before treating the outcome as strong reputation.
Practical example: how a seemingly safe job can fail
Now consider a different job with a 50,000-unit budget.
The provider has excellent public reputation. The interface shows a professional profile. The client assumes this is enough and does not inspect the evaluator or hook.
The hidden evaluator relationship
The evaluator is a newly created wallet funded by the provider.
That does not conclusively prove collusion, but it materially weakens the claim that the evaluator is independent.
The hook is upgradeable
The hook can be changed through an administrative upgrade mechanism controlled by a single key.
The client does not notice this.
The client grants a broad token allowance
The job budget is 50,000 units, but the hook receives a much larger allowance because the interface requests unlimited approval.
The real exposure exceeds the escrow
Even if the core ERC-8183 state machine works perfectly, the extension contract and approval architecture create additional risk.
This example illustrates why protocol-level correctness is not enough. Users must evaluate the entire transaction graph.
How to analyze an ERC-8183 contract before large jobs
For meaningful capital, contract analysis should extend beyond verifying that a deployment claims ERC-8183 compatibility.
Review role checks
Confirm that only the client can perform client-only actions, only the provider can submit, and only the evaluator can make the required settlement decisions.
Review state-transition guards
Functions should revert when called from invalid states. Unexpected transitions can undermine escrow assumptions.
Review token accounting
Confirm that funding pulls the intended amount and that completion, rejection, and expiry distribute funds correctly.
Review reentrancy protection
External token transfers and hooks increase the importance of safe call ordering and reentrancy defenses.
Review hook boundaries
Confirm that callbacks cannot bypass core authorization or permanently block the expiry refund mechanism.
Review upgrade controls
If the contract is upgradeable, identify administrative roles and storage risks.
Review fee controls
Understand whether fees are immutable, capped, or administratively adjustable.
Review events
Reliable events help indexers and users reconstruct job history. Important transitions should be observable.
Why ERC-8183 events matter
Agentic systems need machine-readable state changes. ERC-8183 recommends events covering job creation, provider assignment, budget setting, funding, submission, completion, rejection, expiry, payment release, and refund.
Agents can react to events automatically
A provider can watch for funding before beginning work. An evaluator can watch for submissions. A client can monitor expiry. Reputation infrastructure can observe terminal outcomes.
Events support audit trails
An indexer can reconstruct when a provider was assigned, when the budget changed, when escrow was funded, when work was submitted, and how the job ended.
Events do not replace current state
Applications should combine event history with current contract state. Reorgs, indexing errors, or incomplete logs can create misleading views if an interface depends on event data alone.
Agent wallets and autonomous spending controls
ERC-8183 becomes substantially more consequential when the client itself is an autonomous agent holding funds.
A human may notice an unusual provider or suspicious budget. A fully autonomous client can execute the same mistake at machine speed unless policy limits exist.
Use job-size limits
An agent should not be able to create or fund arbitrarily large jobs simply because its private key controls a large wallet.
Use evaluator allowlists where appropriate
High-value jobs can require evaluators from a pre-approved set or evaluators satisfying stronger reputation requirements.
Use contract allowlists
An autonomous wallet can restrict funding to known ERC-8183 deployments rather than accepting arbitrary contracts from agent-generated input.
Limit token approvals
Bound allowances to expected use where practical.
Escalate unusual jobs
A $20 API job and a $200,000 asset-management task should not follow identical authorization policy.
The broader architecture is covered in AI Agents That Hold and Spend Crypto.
What should be monitored after funding?
Due diligence should not end when the funding transaction confirms.
Job status
Track whether the job remains Funded, moves to Submitted, or approaches expiry.
Provider wallet behavior
Sudden suspicious activity after funding can justify additional caution even if the provider previously looked safe.
Evaluator wallet behavior
Compromise or unusual funding relationships can emerge during a long job.
Contract upgrades
If the deployment or relevant extension is upgradeable, material implementation changes during the job can alter risk.
Hook behavior
Unexpected callback failures or unusual external interactions deserve investigation.
Deadline proximity
Providers and evaluators should not discover the expiry only after the recovery path has become available.
Security design principles for agentic commerce applications
Applications building on ERC-8183 can reduce risk by making important trust assumptions visible instead of hiding them behind a single checkout button.
Display the evaluator prominently
The evaluator controls settlement and should not be buried in advanced settings.
Show the hook and its status
Users should know whether a job has no hook, uses a known audited hook, or relies on an unknown contract.
Show total value at risk
Include extension-managed assets and approvals where possible, not only the core budget.
Distinguish Open from Funded
Providers should be able to see immediately whether payment is actually escrowed.
Make expiry visible
Countdowns and clear timestamps can reduce accidental timeout.
Expose settlement evidence
Completion and rejection reasons should be discoverable when supporting evidence is available.
Separate reputation from guarantees
A reputation score should not visually imply that the contract, hook, or current transaction has been audited.
Common ERC-8183 mistakes
Assuming escrow removes trust
Escrow controls funds, but evaluator judgment and contract extensions remain trust surfaces.
Ignoring the evaluator
The evaluator controls completion and rejection after submission. Its identity can be more important than the frontend brand.
Calling Rejected proof of provider fraud
A rejection is an evaluator decision, not universal proof of misconduct.
Calling disagreement a standardized Disputed state
The core ERC-8183 state machine does not contain a Disputed state.
Ignoring expiry
Deadlines determine when unresolved escrow becomes refundable.
Assuming a hook is harmless extension code
Hooks can block actions, perform side effects, move assets, and roll back transactions.
Auditing the core but not the hook
A secure escrow kernel can still participate in an unsafe job through malicious extension logic.
Looking only at the job budget
Hooks and token approvals can expose more value than the base escrow amount.
Using reputation as a substitute for transaction review
A reputable provider can still be compromised or interact through an unsafe job contract.
Ignoring evaluator-provider relationships
On-chain funding and transaction history can reveal potential conflicts of interest.
Using unlimited token approvals unnecessarily
Approval exposure can exceed the economic scope of one job.
Ignoring upgrade authority
Upgradeable contracts and hooks can change behavior after deployment.
Assuming a reason hash proves correctness
A commitment protects evidence integrity but does not establish that the evidence is true.
Starting work on an Open job as if it were Funded
A negotiated budget is not payment assurance until escrow is actually funded.
What ERC-8183 could mean for autonomous markets
ERC-8183 is important because autonomous agents need more than wallets and payment rails. They need a shared commercial lifecycle.
A standardized job primitive allows marketplaces, agents, wallets, evaluators, reputation systems, and payment facilitators to coordinate around the same basic states.
Machine-readable procurement
An autonomous client can create a job, discover providers, collect bids, select a provider, escrow payment, wait for submission, invoke an evaluator, and record the outcome without a human manually coordinating each stage.
Portable provider history
When combined with ERC-8004, job outcomes can contribute to reputation that is not trapped inside one marketplace database.
Specialized evaluator markets
Evaluators can specialize by domain. One may verify zero-knowledge proofs, another may assess security reports, another may evaluate data quality, and another may aggregate external attestations.
Policy hooks can become commercial middleware
Reusable hooks can provide bidding, identity gates, compliance rules, payment splitting, reputation thresholds, asset transfer workflows, and other specialized behavior.
Risk engines can price jobs before funding
A sophisticated agent wallet could combine provider reputation, evaluator quality, hook risk, contract audit history, wallet behavior, job value, expiry, and approval exposure into a policy decision before signing.
A layered trust framework for ERC-8183
The strongest approach is to evaluate each job through separate layers instead of collapsing everything into one safety score.
| Layer | Question | Evidence | Failure signal |
|---|---|---|---|
| Deployment | Is this the expected commerce contract? | Chain, address, verified code | Unknown or spoofed deployment |
| Governance | Can behavior change? | Admin roles, upgrade controls, timelocks | Single-key unrestricted upgrades |
| Payment token | What asset is escrowed? | Token address and behavior | Unknown or malicious token |
| Client | Who funds and receives refunds? | Client address | Compromised or substituted wallet |
| Provider | Who performs work and receives payment? | Provider address, identity, reputation | Impersonation or suspicious wallet |
| Evaluator | Who decides settlement? | Evaluator address and methodology | Unknown, conflicted, compromised evaluator |
| Scope | What counts as successful work? | Description and external specification | Ambiguous completion criteria |
| Budget | How much is escrowed? | Current budget and expectedBudget | Unexpected amount or unit mismatch |
| Expiry | When does recovery become available? | expiredAt | Unrealistic or excessive lock period |
| Hook | What additional code can influence actions? | Hook address and bytecode | Unknown, upgradeable, or malicious extension |
| Approvals | What token authority is granted? | ERC-20 allowances and permits | Unnecessary unlimited allowance |
| Submission | What work was committed? | Deliverable reference and external artifact | Mutable, missing, or mismatched deliverable |
| Settlement | Why was the job completed or rejected? | Evaluator action and reason evidence | Unsupported or suspicious decision |
| Reputation | What does historical performance show? | ERC-8004 and other evidence | Sybil, stale, or irrelevant reputation |
Conclusion: ERC-8183 standardizes agent commerce, but trust still lives in the details
ERC-8183 gives agentic commerce a compact and understandable on-chain primitive: create a job, agree on a budget, escrow the payment, submit work, let an evaluator decide the outcome, and preserve an expiry route when the process stalls.
The client controls job creation and funding. The provider performs the work and submits the deliverable. The evaluator controls completion or rejection after submission. Completed jobs release payment to the provider, while rejected and expired funded jobs return escrow to the client.
That state machine solves an important coordination problem, but it does not solve every commercial trust problem.
The evaluator remains a critical authority. A client acting as evaluator creates a direct two-party trust relationship. A third-party evaluator introduces independence only when the third party is genuinely credible. A smart contract evaluator can automate judgment but transfers trust into code, data sources, proof systems, oracles, and governance.
Hooks make ERC-8183 significantly more flexible. They can add bidding, reputation checks, validation, payment splitting, atomic asset transfers, allowlists, and other policies. They can also revert valid actions, introduce additional token movement, expand approval exposure, and change the effective value at risk.
The decision to make expiry refunds unhookable is therefore especially important. Even if extension logic becomes unusable, the base escrow retains a recovery path once the job expires.
ERC-8004 can strengthen the ecosystem around ERC-8183 by providing portable identity, reputation, and validation evidence. Successful jobs can become richer reputation signals, and policy hooks can use reputation before allowing provider selection or funding. That interoperability should not be overstated. Historical reputation does not guarantee current delivery, evaluator independence, hook safety, or contract correctness.
For large jobs, due diligence should cover the entire commercial graph. Verify the ERC-8183 deployment, payment token, client, provider, evaluator, description, budget, expiry, hook, upgrade authority, token approvals, and external asset flows. Inspect provider and evaluator wallets for relationships and suspicious behavior. Decode material calls before signing them.
The TokenToolHub Wallet Risk Scanner can help investigate the public activity of provider and evaluator addresses, while the Transaction Decoder can help verify the exact on-chain action before funding or settling a material job.
The prerequisite guides remain relevant after understanding the protocol itself. AI Agents and Crypto Wallets explains how autonomous systems control blockchain accounts, while AI Agents That Hold and Spend Crypto covers spending authority, operational limits, and the security implications of giving software direct control over assets.
The deeper lesson is that agentic commerce does not become safe merely because escrow is on-chain. Smart contracts can make commercial rules deterministic, transparent, and composable, but the participants still need to decide which contracts, evaluators, hooks, wallets, tokens, and reputation signals deserve trust.
ERC-8183 provides the transaction rails for that decision. Secure agentic commerce requires the surrounding risk system to evaluate everything those rails cannot decide on their own.
Inspect the job before you fund it
For high-value agent commerce, verify both the contract call and the counterparties. Decode the funding transaction, confirm the evaluator and hook, and investigate the provider and evaluator wallets before placing significant assets into escrow.
FAQs
What is ERC-8183?
ERC-8183 is a draft Ethereum ERC defining an Agentic Commerce Protocol built around jobs with ERC-20 escrow, providers that submit work, and evaluators that determine completion or rejection.
Is ERC-8183 finalized?
No. ERC-8183 is currently published as a draft Standards Track ERC. Implementers should verify the current specification before relying on interfaces or behavior in production.
What problem does ERC-8183 solve?
It standardizes a minimal commercial lifecycle in which a client escrows payment, a provider performs and submits work, an evaluator determines the outcome, and unresolved jobs can eventually refund the client after expiry.
What are the ERC-8183 job states?
The six concrete states are Open, Funded, Submitted, Completed, Rejected, and Expired. Completed, Rejected, and Expired are terminal outcomes.
Does ERC-8183 have a Disputed state?
No. The core ERC-8183 state machine does not define a separate Disputed state. Applications that need arbitration or appeals must build those mechanisms around the core protocol.
Who is the client in ERC-8183?
The client creates the job, can set a provider when one was not assigned initially, participates in budget setting, funds escrow, can reject while the job is Open, and receives refunds from funded jobs that are rejected or expire.
Who is the provider in ERC-8183?
The provider performs the work, can participate in budget negotiation, submits the deliverable reference, and receives the escrowed payment when the evaluator completes the job.
Who is the evaluator?
The evaluator is the address responsible for settlement decisions after funding. It can reject while the job is Funded and can complete or reject once the provider has submitted work.
Can the client be the evaluator?
Yes. ERC-8183 explicitly permits the evaluator to be the client, creating a simpler model without a third-party attester.
Can an evaluator be a smart contract?
Yes. A smart contract evaluator can perform arbitrary checks, including proof verification or aggregation of external signals, before deciding whether to call complete or reject.
Can the provider mark its own job complete?
No. The provider submits work but does not control completion. Only the evaluator can complete a Submitted job.
Can the client cancel after the provider submits?
Not through a general client-controlled rejection in the core state machine. Once Submitted, only the evaluator can complete or reject until the expiry refund path becomes available.
How is the ERC-8183 budget funded?
The client calls the funding function after a non-zero budget and provider are set. The contract pulls the ERC-20 payment amount into escrow and changes the job to Funded.
What is expectedBudget?
expectedBudget is supplied by the client during funding and must match the job's current stored budget. The check protects against funding an amount that changed between observation and execution.
Can the provider be selected after job creation?
Yes. A job can be created with a zero provider address, after which the client can assign the provider while the job remains Open and before funding.
What does the provider submit?
The provider submits a bytes32 deliverable reference representing or committing to the completed work, such as a hash, content identifier, or attestation commitment.
What happens when an ERC-8183 job is completed?
The job becomes Completed and escrow is released to the provider, minus any optional platform fee supported by the implementation.
What happens when an ERC-8183 job is rejected?
Rejected is terminal. If the job was funded, the escrowed budget is refunded to the client.
Who can reject an ERC-8183 job?
The client can reject while the job is Open. The evaluator can reject while the job is Funded or Submitted.
What happens when a job expires?
Once a Funded or Submitted job reaches its expiredAt timestamp, the refund path can transition it to Expired and return the escrow to the client.
Can anyone trigger an expired refund?
The specification permits implementations to restrict the caller but recommends allowing anyone to trigger the refund after expiry. The refunded funds still go to the client.
What is an ERC-8183 hook?
A hook is an optional external contract associated with a job that can run custom logic before and after supported core actions.
What can ERC-8183 hooks do?
Hooks can support policies such as validation, allowlists, reputation checks, bidding, payment splitting, side transfers, notifications, and other application-specific behavior.
Can a hook block a job action?
Yes. A before hook can revert and block an action. An after hook can also revert, which rolls back the entire transaction including the preceding core state change.
Can a hook block expiry refunds?
No. claimRefund is intentionally not hookable, preserving a recovery mechanism after expiry even if the hook is broken or malicious.
Are ERC-8183 hooks safe by default?
No. Hooks are trusted extension contracts chosen for the job. They should be reviewed carefully because buggy or malicious hook logic can block actions or perform unexpected side effects.
Should ERC-8183 hooks be upgradeable?
The specification recommends that hooks should not be upgradeable after a job is created because changing hook behavior mid-job changes the policy participants originally accepted.
Does ERC-8183 require platform fees?
No. Implementations may charge a completion fee, but the standard does not require one.
Are fees charged on refunds?
The specification states that an optional platform fee should be deducted on completion rather than on refund.
Does ERC-8183 guarantee a provider will deliver?
No. The provider can fail to submit. The evaluator can reject or the job can eventually expire and refund the client, but lost time and opportunity cost can remain.
Does escrow guarantee the provider will be paid?
No. Escrow proves the budget exists, but the evaluator can reject the job and the job can expire. Providers should evaluate the evaluator, scope, and deadline before committing resources.
Can an evaluator collude with the client?
Yes. The core protocol cannot determine whether an evaluator's judgment is commercially fair. Independent reputation, incentives, evidence, and governance can reduce but not eliminate this risk.
Can an evaluator collude with the provider?
Yes. A malicious evaluator can approve inadequate work and release payment to the provider. High-value clients should evaluate the evaluator independently.
How does ERC-8183 work with ERC-8004?
ERC-8183 can provide job and payment outcomes while ERC-8004 provides identity, reputation, and validation infrastructure. Hooks or indexers can connect ERC-8183 outcomes with ERC-8004 trust signals.
Does ERC-8004 reputation guarantee an ERC-8183 provider is safe?
No. Reputation is historical evidence and can be stale or manipulated. It does not prove the current job contract, hook, wallet, evaluator, or deliverable is safe.
Can completed ERC-8183 jobs improve agent reputation?
Yes. A completed job can provide contextual evidence of successful delivery, especially when the outcome includes a credible evaluator and supporting attestation evidence.
Should every rejected job damage provider reputation?
No. Rejection reasons and evaluator credibility matter. A rejection can result from provider failure, scope disagreement, evaluator misconduct, or other circumstances.
What is the reason field on completion or rejection?
It is an optional commitment, such as a bytes32 hash of off-chain evaluation evidence, that can improve auditing and reputation interoperability.
Does a reason hash prove the evaluator is correct?
No. A hash can protect the integrity of referenced evidence but does not prove the evidence itself is truthful or the evaluator's conclusion is correct.
What token does ERC-8183 use?
The protocol uses ERC-20 payment tokens. A contract may use a global payment token or an implementation may support per-job tokens while maintaining the required payment semantics.
Should I inspect the payment token?
Yes. Verify the token contract, decimals, transfer behavior, administrative controls, and any unusual mechanics before using it for significant escrow.
Should I scan the provider's wallet?
For material jobs, wallet analysis can reveal funding sources, counterparties, suspicious contracts, approvals, and behavioral patterns that are not visible in the job description.
Should I inspect the evaluator's wallet?
For high-value jobs, yes. Evaluator wallet history can provide context about independence, relationships with the provider or client, operational history, and potential compromise.
Why should ERC-8183 transactions be decoded before signing?
Transaction decoding helps verify the actual contract, function, job ID, budget, token movement, provider, evaluator, hook parameters, and approvals rather than relying solely on a frontend description.
Can ERC-8183 support bidding?
Yes. Jobs can be created without a provider, and optional hooks can verify signed bids or other selection rules before the client assigns a provider.
Can ERC-8183 support token swaps or bridge jobs?
The hook architecture can coordinate more complex asset-transfer workflows, but those extensions can expose significantly more value than the base service-fee escrow and require separate security analysis.
Can autonomous AI agents use ERC-8183 without holding gas?
Optional ERC-2771-style meta-transaction support can allow agents to sign intents off-chain while a facilitator submits transactions. Compatible permit mechanisms can also reduce separate token-approval transactions.
Is a gasless ERC-8183 transaction automatically safer?
No. The signer must still verify the intent being authorized, the trusted-forwarder assumptions, token permissions, and the target job contract.
How does ERC-8183 connect to x402?
The specification describes compatibility between facilitator-based meta-transactions and HTTP-native payment systems such as x402, allowing agents to sign payment-related intents while infrastructure handles on-chain submission.
What is the biggest ERC-8183 trust assumption?
For many jobs, the evaluator is the most important non-contract trust assumption because it determines whether Submitted work is completed and paid or rejected and refunded.
What should I check before funding a large ERC-8183 job?
Verify the deployment, payment token, budget, expiry, provider, evaluator, hook, upgrade controls, token approvals, total value at risk, provider and evaluator wallet history, and the exact funding transaction.
References and further learning
For the current protocol specifications and related TokenToolHub security research, use the following resources:
- Ethereum Improvement Proposals: ERC-8183 Agentic Commerce
- Ethereum Improvement Proposals: ERC-8004 Trustless Agents
- TokenToolHub: AI Agents and Crypto Wallets
- TokenToolHub: AI Agents That Hold and Spend Crypto
- TokenToolHub Wallet Risk Scanner
- TokenToolHub Transaction Decoder
- TokenToolHub: Smart Contract Audits
This TokenToolHub guide is educational technical and security research. It is not financial advice, legal advice, an audit, or a guarantee that an ERC-8183 implementation, autonomous agent, provider, evaluator, hook, ERC-20 token, escrow, wallet, reputation signal, smart contract, facilitator, or transaction is safe. ERC-8183 and ERC-8004 are currently draft standards and can change. Verify the current specifications, deployed contracts, counterparties, wallet activity, token permissions, job parameters, extension logic, and transaction details before placing material funds or authority under autonomous control.