Search projects, hackathons, sponsors and tech

    ← All projects

    Handshake

    Deals become verifiable on-chain objects with their own ENS identity and history.

    Demo

    About

    Handshake lets two people make a deal and put real money behind it. Both sides stake USDC collateral, funds lock in an on-chain escrow, and the agreement's full lifecycle — created, funded, active, completed or disputed — becomes a permanent, verifiable object rather than a private off-chain promise. Each deal gets its own ENS identity: <dealId>.handshakedeal.eth resolves live to that deal's current status, straight from the contract, with nothing cached or hardcoded. Instead of a reputation score built on stars and reviews, anyone can inspect a deal's real factual history — a Deal Passport reconstructed entirely from on-chain events. Login uses Privy's embedded wallets, so funding a deal is as simple as signing in with Google and confirming a transaction — no MetaMask install, no seed phrase.

    How it's made

    Solidity contracts written and tested with Foundry: a single Handshake.sol contract holds the escrow state machine (no factory/registry split), enforces terms-locking by simply never exposing an edit function once a deal is accepted, and resolves disputes winner-takes-the-full-pot via a fixed per-deal reviewer address. Reentrancy is guarded manually and proven against a malicious ERC20 in the test suite — 18 tests total, all passing. HandshakeResolver.sol is a custom ENSIP-10 wildcard resolver that stores zero deal data: it decodes the DNS-encoded subdomain label into a dealId and calls Handshake.getDeal() live on every query, which is what makes "not hardcoded" a structural fact rather than a claim — verified directly with a raw cast call against the deployed contract on Sepolia, before and after a real state change. The name handshakedeal.eth is registered on ENS's actual ENSv2 beta deployment on Sepolia. The frontend is Next.js with Privy for auth and embedded wallet creation, and wagmi/viem for all contract reads and writes.