対話しながら一首詠み、自分の手で、自分のアドレスに刻む。
wallet で名乗ると、あなたの席が確かめられる。
waka.eth proxy: 0x97b310bAB5d77d433525fF8F146d644c28821636
MetaMask の署名と送信は接続 wallet 側で完結する。秘密鍵は HTML / CLI を経由しない。
「名乗る」の署名は EIP-191 で personal_sign、broadcast されず compose backend の JWT(1 時間)を取るだけ。
「刻む」の署名は EIP-712 (Waka(address recipient,string text,string yomi,string form,string technique,uint256 nonce))。contract の mintWithSignature が SignatureChecker で検証して self-mint する(EOA + ERC-1271 両対応)。
compose 補助は Cloud Run 上の stateless proxy(COMPOSE_API)経由で Claude を呼び、対話履歴は frontend のメモリにのみ持つ。COMPOSE_API 未設定なら固定 STUB 候補で sign 〜 mint まで動く。
tokenURI は contract が完全に on-chain で組み立て、data: URI(JSON + 埋め込み SVG)を返す(IPFS 依存なし)。
Solidity 関数: roster / nonces / mintWithSignature / totalMinted / MAX_SUPPLY。
URL に ?demo=1 を付けると wallet / RPC / backend を一切叩かない mock mode で起動する(見え方の検証用、on-chain には何も起きない)。