SIGN IN SIGN UP

Claim links: pay anyone on Starknet, no wallet needed until they claim

The network pivot, day one. LumenEscrow (Cairo) parks value behind a
poseidon commitment: the sender funds it through the pool (no public
sender), the link carries the secret in its URL fragment (never reaches a
server), and the recipient claims into an open note (no public recipient).

- contracts: LumenEscrow with deposit/claim/refund, dual hash domains,
  expiry-gated refunds, per-token solvency accounting, events; 21 new
  snforge tests incl. a cross-language poseidon vector pinned against
  starknet.js (50 Cairo tests total)
- rails: src/lib/strk20/escrow.ts — action builders, felt-safe secrets,
  URL-fragment link codec, live entry reads; 8 vitest cases incl. the same
  pinned vector (166 TS tests total)
- app: Pay -> "Pay with a link" with deposit-grade amount tuning by the
  guard; /claim page walking a wallet-less recipient to a private balance;
  Links sheet (copy again, on-chain status sync, reclaim after expiry);
  activity + observer view understand the new legs
- deploy.sh now walks both anonymizers; claim links stay hidden until
  NEXT_PUBLIC_LUMEN_ESCROW_ADDRESS is set

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
S
Shariq Shaukat committed
b1b37dd5159aec51bc5c4a7e5dba3af226cfd50b
Parent: 90da545