Private-Escrow x402

**Micropayments for the agentic web - instant response, batched settlement, optional privacy**

Private-Escrow x402

Created At

ETHGlobal Buenos Aires

Project Description

Private-Escrow x402

Description

Private-Escrow x402 extends the x402 Payment Protocol with three progressive schemes for blockchain-based micropayments, each optimized for different trust and privacy requirements.

The Vision: Beyond Synchronous Settlement

While the x402 standard enables HTTP 402 Payment Required with cryptographic payment intents, existing implementations (like Polygon's reference) require synchronous on-chain settlement before content delivery. This creates 5-10 second latencies and high gas costs per transaction - impractical for micropayments.

We implement three schemes that progressively address these limitations:

1. x402-exact (Baseline - Implemented)

The standard synchronous approach, serving as our reference implementation and benchmark. Payment settles on-chain before content delivery (~9 seconds latency). This exists in other implementations - we use it for comparison.

2. x402-escrow-deferred (Innovation #1 - In Progress)

Instant delivery + batched settlement

  • Instant: Content delivered immediately (<100ms)
  • Secured for Seller: Payment locked in escrow contract upfront
  • Secured for Buyer: Escrowed funds released only on delivery proof
  • Gas Efficient: Batched settlement (100s of payments → 1 transaction)
  • Use Case: High-volume micropayments (API calls, content access)

3. x402-private-escrow-deferred (Innovation #2 - Planned)

Instant delivery + batched settlement + transaction privacy

  • All benefits of escrow-deferred, PLUS:
  • Privacy: Individual payments hidden in multi-buyer/multi-transaction anonymity set
  • ZK Proofs: Settlement without revealing which buyer paid which seller for what
  • Trade-off: Higher gas costs for privacy guarantees
  • Use Case: Sensitive content, anonymous API access, confidential research data

Key Innovation: Deferred Escrow Architecture

Traditional x402 flow:

Request → 402 → Sign → Settle On-Chain → Wait → Deliver Content
                        ^^^^^^^^^^^^^^^^
                        5-10 seconds, high gas

Our escrow-deferred flow:

Request → 402 → Sign → Lock in Escrow → Deliver INSTANTLY
                       ^^^^^^^^^^^^^^^^
                       <100ms, no on-chain wait

Later: Batch Settle [Payment1, Payment2, ..., Payment100] → Single TX
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       100x gas savings, seller gets all funds at once

Technical Architecture

Three-Party System:

  • Buyer: Consumes paid content/APIs
  • Seller: Provides services, requires instant payment guarantee
  • Facilitator: Manages escrow contracts, batch settlement, privacy proofs

Security Model:

  • Buyers deposit funds into escrow contract upfront
  • Each payment creates cryptographic proof (EIP-712 signature)
  • Seller delivers content immediately (trusting escrow lock)
  • Facilitator batches proofs and settles periodically
  • Privacy scheme uses ZK-SNARKs to hide transaction details

Target Market: Agentic Web Micropayments

The rise of AI agents creates massive demand for programmatic micropayments:

  • AI agents accessing paid APIs (OpenAI, Anthropic, research databases)
  • Agent-to-agent commerce (data trading, computation markets)
  • Autonomous content consumption (news, analysis, training data)
  • Metered services (per-query pricing, usage-based billing)

Traditional payments fail here:

  • Credit cards: Too slow, high fees, require human interaction
  • Crypto synchronous: 5-10s latency breaks agent workflows
  • Payment channels: Setup friction, capital lockup

Our solution fits perfectly:

  • Instant response (agents don't wait)
  • Micropayment economics (batch settlement)
  • Trustless (no intermediary risk)
  • Optional privacy (sensitive agent operations)

Why This Matters

  1. Enables New Markets: Micropayments below $0.01 become economically viable
  2. Agent-Native: Designed for programmatic, high-frequency payments
  3. Privacy Option: Buyers can hide their purchasing behavior
  4. Standards-Based: Extends x402, compatible with existing implementations
  5. Multi-Chain: Works across any EVM chain with USDC

This is the payment infrastructure the agentic web needs - fast, cheap, private, and trustless.

How it's Made

How It's Made

Technical Implementation

Stack & Tools

Blockchain Infrastructure:

  • Foundry: Smart contract development, testing, and deployment
  • Ethers.js v6: Blockchain interactions, EIP-712 signing
  • Multi-chain: Base Sepolia, Ethereum Sepolia, Arbitrum Sepolia, Optimism Sepolia, Polygon Amoy, Arc Testnet

Core Technologies:

  • EIP-712: Structured data signing for payment intents
  • EIP-3009: Gasless USDC transfers via transferWithAuthorization
  • USDC: Stablecoin settlement across all chains
  • TypeScript: Type-safe implementation
  • Express.js: HTTP servers for seller and facilitator

Coming Soon:

  • Noir/Aztec: ZK-SNARKs for private scheme
  • Avail: Data availability for payment proofs

Implementation Status

✅ x402-exact (Complete)

Reference implementation with full x402 compliance

Key achievements:

  • Two-signature pattern: HTTP authorization (x402 signature) + blockchain settlement (EIP-3009 signature)
  • Resource binding: Cryptographic proof ties payment to specific endpoint
  • Nonce binding: Same nonce in both signatures prevents replay attacks
  • Dynamic domain resolution: Queries USDC contracts for correct EIP-712 domains (cross-chain compatible)
  • Dual verification: Buyer self-verifies, Facilitator verifies, USDC contract verifies

Technical highlights:

// x402 signature domain (HTTP layer)
{
  name: "x402-Payment-Intent",
  version: "2",
  chainId: 84532,
  verifyingContract: "0x0000...0402"  // Symbolic
}

// EIP-3009 signature domain (settlement layer)
{
  name: "USDC",  // Queried from contract
  version: "2",   // Queried from contract
  chainId: 84532,
  verifyingContract: "0x036CbD..."  // USDC address
}

Tested successfully on Base Sepolia with 9.4s end-to-end latency.

🚧 x402-escrow-deferred (In Progress)

Instant delivery + batched settlement

Current architecture:

┌─────────────────────────────────────────────────────────┐
│  Escrow Contract (per buyer)                            │
│  ├─ USDC balance locked                                 │
│  ├─ Authorized sellers (whitelist)                      │
│  ├─ Payment proofs (merkle tree)                        │
│  └─ Batch settlement function                           │
└─────────────────────────────────────────────────────────┘

Flow:

  1. Buyer deposits USDC to personal escrow contract
  2. Signs payment intent (off-chain)
  3. Seller verifies escrow balance + signature
  4. Seller delivers content INSTANTLY
  5. Facilitator batches payment proofs
  6. Periodic settlement: Merkle root → contract → funds released

Benefits vs exact:

  • Latency: 9.4s → <100ms (94x faster)
  • Gas per payment: ~85k → ~3k (28x cheaper when batching 100 payments)

Technical challenges solved:

  • Merkle accumulator for payment proofs
  • Time-locked escrow (buyer protection)
  • Dispute resolution mechanism
  • Batch verification gas optimization

🔮 x402-private-escrow-deferred (Planned)

Adding ZK privacy layer

Approach:

  • Use Noir (Aztec's ZK language) for proof generation
  • Multi-buyer/multi-transaction anonymity sets
  • Prove "I paid someone something" without revealing who/what/when
  • Settlement via ZK proof verification on-chain

Privacy guarantees:

  • Facilitator sees payments but can't link buyer→seller→resource
  • On-chain observers see only batch settlements, no individual payments
  • Buyers gain k-anonymity (hidden among other buyers in batch)

Trade-off: Higher gas costs (~200k per batch vs ~85k) for privacy

Partner Technology Usage

Avail (Planned)

  • Store payment proofs off-chain with data availability guarantees
  • Reduce on-chain storage costs for batch settlement
  • Enable fraud proofs without full on-chain data

Clever Hacks & Innovations

  1. Dynamic USDC Domain Resolution Different chains have different USDC EIP-712 domains. We query each contract at runtime:

    const name = await usdcContract.name(); // "USDC" or "USD Coin"
    const version = await usdcContract.EIP712_VERSION(); // Usually "2"
    

    This makes the code truly multi-chain without hardcoding.

  2. Two-Signature Resource Binding Standard EIP-3009 doesn't include resource field. We add it via x402 signature:

    // x402 sig: {seller, buyer, amount, token, nonce, resource, ...}
    // EIP-3009 sig: {from, to, value, nonce, ...}
    // Same nonce → cryptographically linked!
    
  3. Nonce Binding Using identical nonce in both signatures creates cryptographic link between HTTP authorization and blockchain settlement. Facilitator verifies both independently.

  4. Gasless Payments for Buyers EIP-3009 transferWithAuthorization lets facilitator pay gas while executing buyer's signed transfer. Buyers pay zero gas!

  5. Comprehensive Demo System Built full verification demo showing:

    • Both signatures created and self-verified
    • All cryptographic bindings confirmed
    • Complete audit trail with timing
    • Balance verification before/after

What We Learned

EIP-712 Domain Quirks: USDC contracts on different chains use different name fields. Must query dynamically, can't hardcode.

x402 Standard Gaps: Original x402 doesn't specify two-signature pattern or resource binding. We extended it while maintaining compatibility.

Escrow Security: Deferred delivery requires careful escrow design:

  • Time locks prevent indefinite fund lockup
  • Merkle proofs enable efficient batch verification
  • Dispute windows balance seller/buyer protection

Gas Optimization: Batching 100 payments: ~8.5M gas → ~85k gas per payment → ~3k gas per payment when amortized.

Next Steps

  1. Complete escrow contract implementation
  2. Build merkle accumulator for payment proofs
  3. Implement batch settlement logic
  4. Add Noir ZK circuits for privacy scheme
  5. Integrate Avail for data availability
  6. Multi-chain deployment and testing
  7. Production security audit

The goal: Make micropayments practical for the agentic web - instant, cheap, private, trustless.

background image mobile

Join the mailing list

Get the latest news and updates