FEATURES

OpenTab — pay any handle, even unregistered

Lock funds on-chain for any handle. If the recipient signs up and claims, the funds settle to them. If they don't before the deadline, you refund. No off-chain custody — the contract holds the escrow.

When to use it

  • Paying a creator before they've onboarded.
  • Bot-driven tips to handles that don't resolve yet.
  • Bounties, rewards, prizes — anywhere you want the recipient to be the one to claim rather than you to push.

Lifecycle

  1. Sender funds the escrow. From /dashboard/escrow → New OpenTab. Their wallet approves the router for the amount and calls createEscrow(handleSlug, amount, deadline, senderNonce). The router pulls the tokens into custody.
  2. Share the link. The dashboard hands back /claim/[id] — paste it anywhere, send it via DM.
  3. Recipient onboards and claims. The claim page routes anonymous visitors through /sign-up?handle=&next=…so they finish under the right handle. Once signed in, one tap calls Tab's executor to release.
  4. Or the sender refunds after deadline. After the timestamp passes, anyone can hit refund and the contract returns the funds to the original sender.

Trust model

  • The router holds the funds, not Tab.Tab's executor can only release to the address claimed by the recipient handle, after the recipient asks for it.
  • The id is unguessable. Knowing the link is enough to view the escrow; the contract still enforces handle and recipient matching at claim time.
  • Fee. 1% protocol fee taken from the released amount; net goes to the recipient.

Bot integration

Telegram / Discord / Farcaster bots fall back to OpenTab when a recipient handle doesn't resolve. The bot replies with a deep-link to /dashboard/escrow?handle=…&amount=… that pre-fills the form. See TabBot.

Webhooks

  • escrow.created
  • escrow.claimed
  • escrow.refunded

Contract reference

See TabEscrowRouter for the on-chain surface.