POOP

Proof of Onboarding Protocol: Send crypto gifts via email with human verification

Project Description

POOP (Proof of Onboarding Protocol) is a decentralized onboarding system that enables crypto-native users to send USDC gifts to anyone via email, with built-in proof-of-humanity verification.

The protocol works in two flows:

SENDER FLOW: Users connect their Farcaster wallet in a Farcaster Mini App, enter a recipient's email and amount, then deposit USDC into the PoopVault smart contract on Celo Mainnet. The system generates a unique claim link.

RECIPIENT FLOW: Recipients receive an email with a claim link. They log in with Privy (email-only authentication), complete their profile, verify their humanity using Self's zero-knowledge identity verification, and then claim their USDC to any Celo wallet address.

The smart contract (PoopVault) securely holds funds until verification is complete, preventing sybil attacks through Self's biometric/passport verification. Alchemy webhooks provide real-time blockchain event notifications, ensuring the backend stays synchronized with on-chain state.

This creates a trustless, verifiable proof that real humans were onboarded, making it perfect for community growth, referral programs, and incentivized onboarding campaigns.

How it's Made

Built with a full-stack architecture:

SMART CONTRACTS: PoopVault contract written in Solidity using Foundry, deployed on Celo Mainnet. Uses OpenZeppelin's IERC20 for USDC token handling. The contract implements deposit, claimFor (owner-only), and cancel functions with event emissions for Deposit, Claim, and Cancelled events.

FRONTEND: Next.js 14 with App Router, Wagmi/Viem for blockchain interactions, and Farcaster Mini App Connector for wallet connection. Privy SDK handles email authentication and embedded wallet creation for recipients. Self SDK (@selfxyz/qrcode) provides QR code-based identity verification flow.

BACKEND: Express.js/TypeScript server with Supabase for user and POOP state management. Alchemy webhooks (GraphQL-based) listen for Deposit and Cancelled events, automatically updating POOP states from CREATED → FUNDED → VERIFIED → CLAIMED. Self backend verifier (@selfxyz/core) validates zero-knowledge proofs server-side.

INTEGRATIONS:

  • Alchemy: Real-time blockchain event webhooks with signature verification
  • Self: ZK-proof identity verification (passport/biometric ID) for sybil resistance
  • Privy: Email-based auth and embedded wallet creation
  • Farcaster: Native wallet connection in Mini Apps
  • Supabase: PostgreSQL database for user profiles and POOP tracking

The system uses a state machine: POOPs transition through CREATED → FUNDED (via Alchemy webhook) → VERIFIED (after Self verification) → CLAIMED (on-chain transfer). This ensures funds are only released after human verification, creating verifiable proof of onboarding.

background image mobile

Join the mailing list

Get the latest news and updates