Skip to main content

What is ZKP2P?

ZKP2P is a decentralized protocol enabling trustless peer-to-peer exchanges between fiat currency and cryptocurrency. Users can on-ramp (buy crypto with fiat) or off-ramp (sell crypto for fiat) directly with counterparties, without intermediaries or centralized custody. The v2.1 smart contracts form the core infrastructure for the ZK P2P fiat on/off-ramp, centered around three main components:
  • Escrow: Manages liquidity deposits from makers
  • Orchestrator: Coordinates the intent lifecycle and verification
  • Unified Payment Verifier: Validates off-chain payment attestations for multiple payment methods
ZKP2P uses zero-knowledge proofs to verify payment receipts without exposing sensitive user data, ensuring privacy while maintaining trustlessness.

Key Features

Trustless P2P Trading

Direct fiat-to-crypto exchanges without intermediaries or custodians. Smart contracts guarantee settlement based on cryptographic proofs.

Multi-Platform Support

Support for 8+ payment platforms including Venmo, PayPal, Wise, Zelle, CashApp, Revolut, MercadoPago, and Monzo.

Zero-Knowledge Privacy

Payment verification without exposing sensitive data. zkTLS proofs validate transactions while preserving user privacy.

Intent-Based Architecture

Efficient liquidity matching and settlement through an intent-based system. Makers provide liquidity, takers signal intent to trade.

Modular Design

Pluggable verifiers and extensible registry system. Easy to add new payment methods and customize verification logic.

EIP-712 Attestations

Standardized, typed data signing for off-chain payment proofs that integrate seamlessly with on-chain verification.

Use Cases

On-Ramp: Buy Crypto with Fiat

Users can purchase USDC with fiat currency through verified payment platforms. The process is simple:
  1. Find a maker’s deposit with your preferred payment method
  2. Signal your intent to buy a specific amount
  3. Send fiat payment off-chain through the payment platform
  4. Submit payment proof to unlock USDC on-chain
On-ramping allows you to convert local fiat currency to USDC without using a centralized exchange, maintaining full custody throughout.

Off-Ramp: Sell Crypto for Fiat

Liquidity providers (makers) can deposit USDC to earn fees by facilitating trades:
  1. Create a deposit with supported payment methods and rates
  2. Configure minimum/maximum trade amounts and accepted currencies
  3. Receive fiat payments from takers off-chain
  4. Earn protocol fees on successful trades

Cross-Border Payments

Access global liquidity through multiple payment rails. Users can:
  • Trade across different payment platforms (e.g., send USD via Venmo, receive EUR via Wise)
  • Support for multiple fiat currencies per payment method
  • Configurable conversion rates set by liquidity providers

How It Works

ZKP2P uses an intent-based trading model where:
1

Maker Deposits Liquidity

A liquidity provider (maker) creates a deposit on the Escrow contract, specifying accepted payment methods, currencies, and conversion rates.
2

Taker Signals Intent

A buyer (taker) signals their intent to trade by locking the maker’s liquidity through the Orchestrator contract.
3

Off-Chain Payment

The taker sends fiat payment to the maker through the specified payment platform (e.g., Venmo, PayPal).
4

Payment Proof Generation

The payment receipt is converted to a zkTLS proof via an attestation service, which creates an EIP-712 signed attestation.
5

On-Chain Verification

The Unified Payment Verifier validates the attestation signatures and payment details against the intent parameters.
6

Settlement

Upon successful verification, USDC is released to the taker, fees are distributed, and liquidity is returned to the maker.

Protocol Security

ZKP2P incorporates multiple security mechanisms:
  • Reentrancy Guards: All critical functions use OpenZeppelin’s ReentrancyGuard
  • Pausable Emergency Stop: Governance can pause intent creation and fulfillment while preserving fund recovery
  • Double-Spend Prevention: Nullifier registry prevents payment proofs from being used multiple times
  • Intent Expiration: Time-limited intents with configurable expiry periods prevent indefinite liquidity locks
  • Signature Verification: EIP-712 typed data signatures for intent gating and attestation validation
  • Whitelisted Registries: Controlled access for escrows, verifiers, and post-intent hooks
All smart contracts have been audited, but users should always verify contract addresses and understand the risks before interacting with the protocol.

Supported Networks

ZKP2P is deployed across multiple networks:
NetworkStatusDescription
Base✅ ProductionLive mainnet deployment for production use
Base Sepolia✅ TestnetPublic testnet for development and testing
Base Staging🔧 StagingInternal staging environment for pre-production validation
Contract addresses for each network can be found in the respective deployment directories in the GitHub repository.

Architecture Overview

The v2.1 architecture consists of several interconnected components: Each component serves a specific purpose:
  • Escrow: Secure fund custody and liquidity management
  • Orchestrator: Intent lifecycle coordination and fee distribution
  • Unified Payment Verifier: Multi-platform payment validation
  • Registry System: Permission management and configuration
For a detailed explanation of the architecture, see the Architecture page.

Token Support

Currently, ZKP2P v2.1 supports:
  • USDC (USD Coin) as the primary settlement token
  • Multiple fiat currencies through payment platform verification
  • Configurable conversion rates for fiat-to-crypto exchanges
The modular design allows for future expansion to support additional ERC20 tokens as deposit assets.

Getting Started

Ready to integrate with ZKP2P? Check out these resources:

Quickstart Guide

Get up and running with local development in minutes

Architecture Deep Dive

Understand the complete system design and component interactions

API Reference

Explore contract interfaces and function signatures

GitHub Repository

View the source code and contribute to the protocol

Community & Support

ZKP2P is an open-source project licensed under MIT. Contributions are welcome!

Build docs developers (and LLMs) love