Search projects, hackathons, sponsors and tech

    ← All projects

    Shomei-kun QR Proof

    Scan a QR or search an ENS name to find and verify a card's wallet registration.

    Demo

    About

    Shomei-kun QR Proof connects a physical trading card to a public wallet registration. Scan the card's QR code to see its record, or search by ENS name or wallet address to find cards registered to that wallet. The demo uses Shomei Ichiro, a fictional baseball player, and supports English and Japanese. QR scanning remains the main action. An unregistered card leads to nickname entry and MetaMask approval. A registered card shows the wallet, nickname and registration record without asking the viewer to connect a wallet. Each card accepts one registration. The contract prevents overwriting it, and this demo does not support editing, deletion or ownership transfer. ENS adds a second way to find records. The app resolves a Sepolia ENSv2 name, searches Curvegrid Testnet registration events for that address, and opens existing card details from the results. You can enter a wallet address directly without using ENS. During registration, the app displays the connected wallet's Primary name only when reverse lookup and forward resolution agree. If the lookup is missing or fails, it keeps the address and registration remains available. Changing an ENS record does not change existing card registrations. TRY IT WITHOUT A WALLET Open the app, choose "Find by ENS or address", and search for shomeikun.eth. Select a card and choose "View registration". You can also search for 0xc22D961e56b70a73f6dCB1EC0a47b7Da1Fe38FDd. Viewing records needs neither a wallet connection nor gas. https://shomei-kun-integration.dptr.workers.dev/ui/ To view a registered card directly: https://shomei-kun-integration.dptr.workers.dev/ui/?cardId=test-20260926-002 TRY QR SCANNING Display this registered card on a computer or second device: https://shomei-video-cards.dptr.workers.dev/c/-rbdwhZ6-hj1woFoN6_mZ1sitNSMIurk/ Open the app on your phone, tap "Scan a QR code", allow camera access and scan the card. You can also select a saved QR image through the app's photo option. OPTIONAL REGISTRATION Registration requires an issued, unregistered card, MetaMask and gas on Curvegrid Testnet. Funds on Se polia or other networks cannot pay that registration gas. On iPhone, use MetaMask's built-in browser. Scan an unused card, enter a public nickname, connect your wallet, approve the Curvegrid Testnet netwo rk setup if prompted, and review the registration transaction before approving it. If a card is alread y registered, its existing record is displayed instead. Card gallery: https://shomei-submission-cards.dptr.workers.dev/g/imzQ65lHkU6Coe8Dc-ZLa1ZeZ82Udvt4/ The issuer CLI supports unrestricted cards, a recipient address, or an optional ENS name. ENS names ar e resolved before signing, and the resulting address is fixed in the issued card. The server does not sign registrations for users. TECHNOLOGY AND BACKGROUND Curvegrid MultiBaas provides contract reads, unsigned transaction preparation, receipts and event acce ss through its REST API. A Solidity registry stores card registrations on Curvegrid Testnet. The JavaS cript UI and Next.js API run on Cloudflare Workers. ethers handles Sepolia ENSv2 resolution, and MetaM ask signs the user's registration transaction. This Continuity project builds on the ideas behind the existing Shomei-kun initiative. The repository contains an independent card-registration implementation; it does not import the existing PoC's code o r user data. A registration links a card ID to a wallet. It does not establish physical possession, au thenticity, legal ownership or a person's real identity. Nicknames and wallet addresses are public. Repository: https://github.com/asagohann777/shomei-kun-qr-proof Existing project: https://tennchiai.com/

    How it's made

    We built a QR-first web app with a JavaScript frontend, Tailwind CSS, daisyUI and Japanese/English messages. QR -scanner decodes card URLs from the camera or a saved photo on the device. A Next.js and TypeScript API runs on Cloudflare Workers through OpenNext. A Solidity registry on Curvegrid Testnet stores issued card IDs, allowed recipients, registered wallet addresses and nicknames. Curvegrid MultiBaas connects our API and issuer CLI to the contract through REST calls. We use it for contract- state reads, unsigned transaction preparation, and receipt and event retrieval. This kept the contract integrat ion compact; the documentation and dashboard made it easy to inspect the configuration and calls. We did not en counter a major MultiBaas-specific integration blocker. The app's REST key stays on the server, the issuer's ke y stays in the CLI environment, and MetaMask signs and submits the user's registration transaction. We use ethers 6.17.0 with the ENSv2 deployment on Sepolia. A name search resolves to an address, then the backe nd queries the existing CardRegistered events on Curvegrid Testnet using the indexed owner field. There is no s eparate search database. It scans bounded block ranges, returns up to 20 verified records per page, and carries a snapshot block hash in the cursor. Each record is checked against the transaction, receipt and current card state. Changed name targets or chain reorganizations require a fresh search. Direct address searches skip ENS e ntirely. The registration screen also reads the connected wallet's Primary name on Sepolia. It forward-resolves the retu rned name before displaying it above the address. Failed lookups leave registration usable, and account changes discard stale results. ENS is also optional in the issuer CLI: it resolves and confirms the recipient, checks again before signing, and saves the resulting address for safe transaction resumption. We do not create card su bnames or deploy a new ENS registry or resolver. One deployment issue appeared only on Cloudflare Workers: the runtime rejected fetch's redirect error mode. We reproduced the failure in the validation Worker, switched to manual redirect handling with explicit rejection o f HTTP 3xx responses, added a regression test, and verified live forward and reverse lookup before updating the public app. Other practical work included the iPhone Safari-to-MetaMask handoff, restoration of registration drafts, and ch ecking existing transaction state instead of resending when a result was uncertain. AI-generated card artwork h as a blank QR area; the app overlays each issued card's generated QR so we can reuse the artwork. We used contract/API tests and Playwright with Chromium and WebKit. On the public deployment, shomeikun.eth resolves to its wallet, reverse lookup agrees, and both ENS and address searches return real registered cards whose detail pages open successfully. Specifications, prompts and development records are included in the repository.