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
- Sender funds the escrow. From
/dashboard/escrow→ New OpenTab. Their wallet approves the router for the amount and callscreateEscrow(handleSlug, amount, deadline, senderNonce). The router pulls the tokens into custody. - Share the link. The dashboard hands back
/claim/[id]— paste it anywhere, send it via DM. - 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. - 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.createdescrow.claimedescrow.refunded
Contract reference
See TabEscrowRouter for the on-chain surface.