Human accountability layer for sybil-resistant agent commerce onchain, built with World ID and Chainlink CRE.
AI agents can already transact, spend, earn, and borrow autonomously onchain. We have payment rails like x402, agent identity standards like ERC-8004, and autonomous credit and reputation systems.
But none of this answers one fundamental question: is there a real, unique human accountable for this agent?
There is no reliable link between an agent and its human owner. Without it:
- One person can spin up 1000 agents to farm credit lines, game reputation scores, and drain budgets meant for real people.
- Service providers and protocols can't enforce per-human limits.
- "Per-user" metrics in agent commerce become fiction.
ProofPay adds the missing human accountability layer to agent payments — ensuring every agent action is backed by a real, unique human, without revealing identity. Built on World ID for sybil resistance and Chainlink CRE, enforced on Base.
Is there a real, unique, accountable human behind this agent — and can that claim be trusted, counted, and revoked?
Any protocol or payment endpoint calls isHumanOwned(agent) to verify before trusting it. Privacy preserved. Revocation built in. Agents stay autonomous. Humans stay countable.
Payments = any value-moving action initiated by an agent — paying for an API, accessing a gated service, or spending a budget.
1. VERIFY Human proves uniqueness via World ID — zero-knowledge, no personal data
↓
2. BRIDGE Chainlink CRE verifies the proof off-chain and writes it to Base (and beyond)
↓
3. REGISTER ProofPay contract binds up to 5 agent wallets to the verified human onchain
↓
4. GATE Any service calls isHumanOwned(agent) — accept or reject
↓
5. REVOKE Human removes an agent — it loses credibility everywhere, instantly
┌──────────────┐ ┌─────────────────────────┐ ┌──────────────────┐
│ Frontend │ │ CRE Workflow │ │ ProofPay (Base) │
│ (Next.js) │ │ (TypeScript SDK) │ │ │
│ │ │ │ │ │
│ IDKit Widget ├────►│ HTTP Trigger │ │ │
│ Wallet │ │ → World ID Cloud Verify │ │ │
│ │ │ → EVM Write to Base ─────┼────►│ onReport() │
│ │ │ (DON consensus) │ │ → registerAgent │
└──────────────┘ └─────────────────────────┘ └────────┬─────────┘
│
isHumanOwned()
│
┌────────▼────────┐
│ x402 Service │
│ (Express+x402) │
│ │
│ Gate → Accept/ │
│ Reject │
└────────▲────────┘
│
┌────────┴────────┐
│ Agent Wallet │
│ (USDC payment) │
└─────────────────┘
- Human Verification — IDKit widget generates a ZKP; proof sent to Chainlink CRE
- CRE Cross-Chain Orchestration — HTTP trigger receives proof → verifies off-chain via World ID cloud API → writes to Base contract
- ProofPay Contract (Base) —
registerAgent(),isHumanOwned(),revokeAgent(), max-per-human enforcement, CRE-only write access - x402 Middleware — Express server gates API access on
isHumanOwned()before accepting USDC payment - API / SDK — simple developer interface to verify agents without touching the contract directly
- MCP Server / Agent Skill — agents autonomously present ProofPay credentials when challenged, no human intervention
- Frontend Dashboard — wallet connect, World ID verify, agent registration, status view
Agent builders deploying agents who need to prove a real, accountable human stands behind them to be trusted by platforms and services.
Protocols and services who need to enforce human-scale limits:
- x402 providers — accept payment only from human-backed agents
- Onchain protocols — enforce per-human limits
- Agent commerce platforms — distinguish real users from bot farms
- Incentive programs — sybil-resistant per-human access control
- Usage-based pricing — one credit line per human, enforced
| Layer | Technology | Details |
|---|---|---|
| Frontend | Next.js 16, React 19, Tailwind v4, shadcn/ui | @worldcoin/idkit for World ID widget |
| Wallet | wagmi, viem | Wallet connection + signing |
| Orchestration | Chainlink CRE (TypeScript SDK) | @chainlink/cre-sdk, HTTP trigger, EVM write |
| Smart Contract | Solidity on Base, Foundry | |
| Payments | x402 protocol | x402-express middleware (server), x402-fetch (agent client) |
| Demo Server | Express | x402-gated API endpoint |
| Runtime | Node.js 20+, Bun |
contracts/
cre-workflow/ (TypeScript)
frontend/
server/
| Contract | Address |
|---|---|
| ProofPay (Base) | 0xCDe1b9904f327aeA8106fe2EbcFae5FDd3d5e6Ff |
| CRE Workflow ID | coming soon |
# Contracts
cd contracts && forge build && forge test
# CRE Workflow
cd cre-workflow/proofpay && bun install
cre workflow simulate proofpay --target local-simulation
# Frontend
cd frontend && bun install && bun dev
# x402 Demo Server
cd server && bun install && bun devComing soon.
All detailed docs are in the /docs directory:
| Resource | Description |
|---|---|
| Introduction | Overview, features, problem & solution |
| Getting Started | Setup guide, env configuration, and first run |
| Architecture | System design, layers, and data flow diagrams |
| Chainlink CRE | CRE workflow implementation |
| x402 Server | x402 payment integration |
This is a hackathon project. For questions or suggestions, please open an issue.
MIT
Tracks:
- CRE & AI
- Best Use of World ID with CRE
Team: Samuel Danso — Full Stack Software Engineer · me.samueldanso@gmail.com