Beta WorkProof is in beta on Base Sepolia testnet. Not for production use.
Documentation Security Contract
Beta Software
WorkProof is currently in beta on Base Sepolia testnet. Not for production use. Mainnet launch planned for Q2 2025.

Documentation

WorkProof provides cryptographic verification for AI agents. Think of it as a "VirusTotal for agent tasks" - a neutral third party that runs code in isolated environments and attests to correctness on-chain.

What is WorkProof?

In the ERC-8004 agent economy, AI agents pay each other for work. But how does the paying agent know the work was done correctly? WorkProof solves this by:

  1. Running code in isolation - Firecracker micro-VMs with no network access
  2. Comparing output hashes - Deterministic verification of execution
  3. Writing attestations on-chain - Permanent, auditable proof on Base Sepolia

Architecture Overview

flowchart LR A["Agent"] -->|"x402 Payment"| B["WorkProof API"] B -->|"Spawn VM"| C["Firecracker VM"] C -->|"Attestation"| D["Blockchain"] classDef default fill:#111,stroke:#333,color:#e5e5e5 classDef payment fill:#111,stroke:#4ade80,color:#4ade80 class A payment

Agent submits code → WorkProof spawns isolated VM → VM executes and returns hash → Result attested on-chain for 0.001 ETH

Quick Start

1. Submit a Verification Request

No API key needed. Just send a POST request:

curl -X POST https://notary-controller.fly.dev/verify \
  -H "Content-Type: application/json" \
  -d '{
    "taskType": "code-execution",
    "code": "console.log('hello world')",
    "expectedHash": "a8f5f167f44f4964e6c998dee827110c..."
  }'

2. Handle 402 Payment Required

If no payment header is provided, you'll receive:

{
  "jobId": "550e8400-e29b-41d4-a716-446655440000",
  "status": "pending_payment",
  "paymentRequirements": {
    "scheme": "exact",
    "network": "base-sepolia",
    "amount": "1000000000000000",
    "payTo": "0x..."
  }
}

3. Submit Payment via x402

Send 0.001 ETH on Base Sepolia to the payment address, then retry with the transaction hash:

curl -X POST https://notary-controller.fly.dev/verify \
  -H "Content-Type: application/json" \
  -H "X-402-Payment: 0x..." \
  -d '{
    "taskType": "code-execution",
    "code": "console.log('hello world')",
    "expectedHash": "a8f5f167f44f4964e6c998dee827110c..."
  }'

4. Poll for Results

curl https://notary-controller.fly.dev/verify/550e8400-e29b-41d4-a716-446655440000

Response when complete:

{
  "jobId": "550e8400-e29b-41d4-a716-446655440000",
  "status": "completed",
  "result": "VALID",
  "executionTimeMs": 245,
  "registryTxHash": "0x..."
}

Payment Flow (x402)

WorkProof uses the x402 payment protocol - the standard for agent-to-agent payments.

Step Action Result
1 POST /verify (no payment) 402 Payment Required
2 Send 0.001 ETH on Base Sepolia Transaction hash
3 POST with X-402-Payment header 202 Accepted
4 Poll GET /verify/:id Completed + attestation

Payment verification: WorkProof waits for 2 block confirmations and verifies the recipient and amount match. Transaction hashes are tracked to prevent replay attacks.

Verification Types

Code Execution (Live)

Execute JavaScript code and verify the output hash matches expected:

{
  "taskType": "code-execution",
  "code": "console.log(fibonacci(10))",
  "expectedHash": "7d865e959b2466918c9863afca942d0f...",
  "timeoutSeconds": 30
}

Security: Code runs in a hardened sandbox with:

  • No network access (fetch, http, net blocked)
  • No imports or requires
  • No eval or Function constructor
  • 30 second timeout
  • 256MB RAM limit
  • 1MB output limit

API Replay (Future)

Replay HTTP requests and compare responses. Target: Q2 2025.

Data Transformation (Future)

Verify ETL pipeline outputs. Target: Q2 2025.

Next Steps

Last updated: February 5, 2026