The digital creator economy is built on "trust me bro." When you buy an API key, a piece of code, or a digital account from someone online, one person has to go first. If the buyer pays first, the seller can ghost them. If the seller delivers first, the buyer can take the files and run.

Handoff is a trustless escrow protocol on Solana that fixes this.

What it does

  1. The Buyer locks USDC in a smart contract.
  2. The Seller accepts the deal and delivers the digital asset.
  3. The Buyer gets a time-locked window to inspect the asset.
  4. If they approve, the funds instantly release to the Seller. If the seller ghosts, the buyer gets a refund. If the asset is fake, the funds freeze for a dispute.

Why Solana?

  • Speed & Cost: Transactions settle in milliseconds for fractions of a cent, making $50 trades viable.
  • On-chain Escrow State Machine: The smart contract enforces the entire lifecycle: Initialized -> Accepted -> Delivered -> Completed/Disputed.

The Tech Stack

  • Smart Contract: Anchor (Rust).
  • Frontend: React, Vite, TypeScript, and Tailwind CSS.
  • Wallet: Phantom Wallet Adapter.

The "Demo Mode" Feature
To allow judges to test both sides of the escrow without switching Phantom wallets, I built a Burner Wallet system into the frontend. Clicking "Seller" in the UI generates a local Keypair, airdrops SOL, and mints test USDC to it. The app then uses this burner wallet to sign the Seller's actions natively.

Challenges
Wiring a Solana smart contract to a React frontend is a minefield. I had to build custom retry loops to handle RPC lag (when the blockchain node hasn't indexed a newly created account yet), manually construct transactions for Phantom to sign, and patch Vite to support Node.js Buffer polyfills.

Links
GitHub Repository: https://github.com/Mubaraqq/handoff
Demo Video: https://www.youtube.com/watch?v=y4sSAESiC_g