
Playces.fun
Show up. Play. Earn. Set up an event page, invite friends, and play head-to-head.
Demo
About
Playces is a venue arena: check in, play head-to-head, earn onchain. Integrations are the product. Privy: email/Google login creates an embedded wallet. Fund Base USDC with useFundWallet, then play. Blink: both players stake USDC into StakeEscrow on Base; winner takes the pot. Lichess: hosts pick friendly/rated, time control, and $0.25–$100 stake; Playces opens the challenge and reads the result. ENSv2 on Sepolia: pick a custom label and get {name}-{event}.playce.eth under playce.eth, registered on the Permissioned Registry with resolver records. Chainlink CRE reports the chess winner on-chain; CCIP mints the Ethereum-rep win badge Sepolia-to-Sepolia. Loop: Privy wallet → fund USDC → Blink stake → Lichess or 67 → ENS ticket → CRE/CCIP payout.
How it's made
Next.js plus a Node WebSocket server. Partners sit on one path: identity, money, match, settlement. Privy (@privy-io/react-auth) creates the embedded wallet and signs API calls. useFundWallet onramps USDC onto Base; we EIP-6963-announce that wallet so Blink can deposit without a second login. Blink deposits to StakeEscrow on Base. Chess rooms store a custom stakeAmount; the Blink signer and /api/stake/confirm require that exact amount. Lichess is the chess VM (/api/challenge/open). Redis + WS poll game/export until the game ends. ENSv2 on Sepolia: register on the Permissioned Registry with EAC roles (renew, resolver, subregistry; not transferable), then resolver multicall for addr + text. Gas is sponsored. Missing config returns 503, not a fake name. Chainlink CRE reads Lichess and calls ChessArbiter to settle the pot. CCIP (ProofSender on Arbitrum Sepolia → ProofReceiverPass on Ethereum Sepolia) mints the Ethereum-rep badge. Notable: Blink was a fixed $0.25 rail; we made it per-room without changing the escrow contract. ENS writes use the parent-owner minter so users never pay Sepolia gas. Lichess “rated” only counts if both players are logged into Lichess.