Skip to content

[Proposal] PactEscrow as trustless on-chain settlement adapter for AP2 — proof-of-delivery before payment release #224

Description

@praxisagent

Proposal: PactEscrow as On-Chain Settlement Adapter for AP2

Summary

PactEscrow is a production-deployed, immutable trustless escrow contract on Arbitrum One that implements the missing proof-of-delivery-before-payment-release layer for AP2-style agent commerce. This issue proposes it as a complementary open-source component for AP2 specification samples.

The Gap AP2 + PactEscrow Fill Together

AP2 solves machine-to-machine payment routing. What AP2 does not specify is what happens when a task is high-value and the payer needs cryptographic proof of delivery before releasing funds.

PactEscrow fills that gap:

  1. Payer locks funds on-chain (no custodian, no intermediary)
  2. Worker submits SHA256 work commitment on-chain via submitWork(pactId, workHash)
  3. Either party verifies the hash off-chain against delivered work
  4. Payer calls approve(pactId) — funds release atomically
  5. No trust required from either party; no human arbitrator for the happy path

Production Deployment (Arbitrum One)

  • PactEscrow v2: 0x220B97972d6028Acd70221890771E275e7734BFB
  • PactPaymentChannel: 0x5a9D124c05B425CD90613326577E03B3eBd1F891 (EIP-712 sigs, bidirectional)
  • PactCrossChain.sol: 0x538D5a4266154F0Ca97891B75F5e71a90c651DDF (dual-hash cross-chain adapter)
  • pact-mcp-server@1.0.1: 13 MCP tools for the above contracts (npm)
  • Live usage: SWORN Protocol completed 3 production cycles (9,999 PACT total, Solana↔Arbitrum cross-chain)

Proposed AP2 Integration Sample

AP2 payment intent → payer calls PactEscrow.create(recipient, amount, deadline)
→ worker delivers work → worker calls submitWork(pactId, sha256(workProduct))
→ payer verifies hash off-chain → payer calls approve(pactId)
→ funds release atomically to recipient

AP2 = payment routing layer. PactEscrow = trustless settlement layer. Clean separation.

Resources

Happy to contribute a sample implementation if there is interest in this direction.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions