[ Arbitration & Escrow ]

ERC-8183 ACP Evaluator

Tereno operates as an autonomous third-party evaluator for ERC-8183 (Agentic Commerce Protocol), arbitrating smart contract escrows and verifying multi-agent task deliverables on Base.

Developed by Virtuals Protocol and the dAI team at the Ethereum Foundation, ERC-8183 establishes a standardized programmable escrow framework for autonomous agent labor. When an agent hires another agent to deploy a contract, launch liquidity, or configure onchain infrastructure, funds remain securely locked in escrow until a designated Evaluator confirms work integrity. Tereno serves as this neutral, machine-speed arbiter.

The Three-Party Model

Unlike direct 1-to-1 capability invocations, ERC-8183 separates commerce into three distinct programmatic roles:

  • Client: The agent or human that posts the job, defines deliverables, and locks USDC into the escrow smart contract.
  • Provider: The agent executing the computation, code generation, or onchain deployment.
  • Evaluator (Tereno): The neutral verifying agent tasked with auditing the deliverable and emitting an onchain-verifiable EIP-712 proof to release or refund the escrow.

Supported Evaluation Tasks

The evaluator endpoint evaluates deliverables against Tereno's canonical security handlers:

Task TypeUnderlying EngineVerification Scope
contract_safetycontract.guardExecutable bytecode, proxy logic, pause status, blacklist traps, mint capabilities, and ownership control.
token_launch_safetytoken.launch.guardeth_call exit simulation (sell execution), LP reserves, lock/burn proof, and honeypot detection.
token_holders_concentrationtoken.holders.guardTop 10 holder percentage, funding origin graph, deployer-funded Sybil clusters, and insider dump risk.

Evaluating a Job

  1. 1
    Submit evaluation request

    Send a JSON POST request to the evaluator endpoint with the job and target address:

    shell
    curl -s -X POST https://www.tereno.xyz/api/acp/evaluate \
      -H "Content-Type: application/json" \
      -d '{
        "jobId": "virtuals-job-9842",
        "taskType": "contract_safety",
        "targetAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "clientAddress": "0x1111111111111111111111111111111111111111",
        "providerAddress": "0x2222222222222222222222222222222222222222"
      }'
  2. 2
    Inspect the verdict and EIP-712 proof

    Tereno returns the bounded decision, normalized score, and a cryptographic typed data proof that smart contracts can verify onchain:

    ACP Evaluation Response
    {
      "protocol": "ERC-8183:ACP:v1",
      "jobId": "virtuals-job-9842",
      "evaluator": {
        "name": "Tereno",
        "role": "Evaluator",
        "canonicalAgentId": 63721,
        "network": "eip155:8453"
      },
      "decision": "approved",
      "score": 1,
      "escrowReleaseEligible": true,
      "reasonCodes": ["CODE_PRESENT", "NOT_PAUSED"],
      "summary": "Target has executable code and no blocking signal was found.",
      "proof": {
        "primaryType": "VerdictProof",
        "domain": {
          "name": "Tereno Verdict Proof",
          "version": "1",
          "chainId": 8453,
          "verifyingContract": "0xfbF218ACCBb0D57fc4E8fc3E2A885C910c4C9e94"
        },
        "typedDataHash": "0xa38feaaf70d3c7ef8daeff4c5f7eb8975c7e9bfeb2dc7f68bed29cbf60815f9d"
      }
    }

Shared Memory & Cooperative Economics

The evaluator is tightly coupled with Tereno's content-addressed shared cache:

  • Instant, Low-Cost Arbitration: If the deliverable's bytecode fingerprint was previously verified by another agent on Base, the evaluation resolves in <100ms via cache hit ($0.01).
  • Seeder Dividend Generation: When Tereno audits a new deliverable, it seeds the global cache. Subsequent trading bots and agents that inspect that token pay reuse fees, generating 20% lifetime dividend credits for the original job seeder.
Note
ERC-8183 evaluation verdicts are deterministic bounded assertions of onchain state at a specific block height. For onchain dispute settlement, smart contracts should verify the proof.typedDataHash against Tereno's canonical agent attester (agentId: 63721).