wink.
back
/docs · protocol

The protocol
behind the wink.

The rails are free. The names are the business. 0% platform fee; monetization = premium handles, private zones, and enterprise payroll. Live on mainnet.

§ 01 · architecture
                    ┌────────────────────────────────────────────┐
   guest / fan ───▶ │  /wink/<handle>  /wall/<slug>  /pay/<...>  │
   customer   ───▶ │        public surfaces (SSR + polling)     │
   worker     ───▶ │  /request/<handle>  /payroll  /dashboard   │
   AI agent   ───▶ │        /api/mpp/*   (HTTP 402 / MPP)       │
                    └──────────────────┬─────────────────────────┘
                                       │ prepare → sign → confirm
                    ┌──────────────────▼─────────────────────────┐
                    │            Next.js 15 API routes           │
                    │  zod validation · session HMAC · drizzle   │
                    └───────┬───────────────────────┬────────────┘
                            │                       │
                ┌───────────▼─────────┐   ┌─────────▼──────────────┐
                │  Postgres (drizzle) │   │   Tempo (viem/tempo)   │
                │  users · handles ·  │   │  pathUSD TIP-20        │
                │  transfers · ledger │   │  transferWithMemo      │
                │  events · payCodes  │   │  on-chain verification │
                │  payRequests        │   │  faucet · explorer     │
                └─────────────────────┘   └────────────────────────┘
§ 02 · what we promise
The money loop

prepare → sign → confirm. Resolve @handle to recipient wallet, create a pending transfer with memo, payer signs in their wallet, we verify on-chain and append to the ledger. Same loop everywhere — tips, checkout, payroll, agents.

Verification oaths

We never trust a client-reported success. Every transfer is re-checked on Tempo before we mark anything confirmed. Keys never leave the browser.

TIP-20 memos

Every transfer carries a 32-byte reconciliation memo (wk_<transferId> for wink flows, merchant + invoice for sales). The memo tells the story; the chain is the receipt.

Cross-chain by default

Workers stay on their chain. We quote via Relay, accept a deposit on Base / Arbitrum / Optimism / Polygon / Ethereum, the solver fills the @handle's Tempo address, and we verify the arrival independently on-Tempo.

MPP · machine payments

An IETF draft co-authored by Tempo and Stripe. WWW-Authenticate: Payment on 402, Authorization: Payment <txHash> on retry, Payment-Receipt on 200. Open standard, open simulator.

§ 03 · stack
framework
Next.js 15 (App Router, TypeScript)
data
Drizzle ORM + Postgres
chain
viem/tempo · chain 42431 · pathUSD
auth
session HMAC · injected EIP-1193 wallet
fees
0% platform · ~8bps network · zero ETH gas
§ 04 · quickstart
local dev
# clone & install
git clone https://github.com/Arinzaay007/wink
cd wink && npm install

# env (DATABASE_URL, SESSION_SECRET, TEMPO_NETWORK=mainnet)
cp .env.example .env

# schema → postgres
npm run db:push

# run
npm run dev                          # app on :3000
npm test                             # 60 automated tests
npm run rebuild                      # restore the whole demo world
npm run reconcile                    # safety net for stranded transfers
npm run bot                          # optional: telegram "you've been winked 😉"
§ 05 · live proof · mainnet real funds
Base → Tempo · auto-forward

Same address on every chain. User sends USDC on Base, forwarder detects > $1, quotes via Relay, solver fills pathUSD on Tempo. Verified independently on both chains — chain is truth.

Base mainnet · USDC → Relay depository
0x343d518fef74e26ddaf7c789e745609a7ecca17cd8ce525d52974b72b6d24298
$1.00 USDC from 0x9979Df52… to 0x4cd00e38…
View on BaseScan ↗
Tempo mainnet · Relay solver → pathUSD
0x113e6430a6fe77054ac2506059780632c98cd42cc643689626e04d3bb0e9dada
Block 41099471 · 974756 micro pathUSD · from 0xb92fe9… solver
View on Tempo ↗
Any chain in, Tempo out. Always. Live on mainnet · requestId 0x179029571593… · fee ~2.5% on $1, ~0.8% on larger amounts.
Claim your @handle
live on mainnet · tempo · pathUSD · 0% platform fee