Wallet Auth
Command centre for the Qubic wallet-as-identity flow. Powers the lp-qubic CTA. New endpoint as of today — live stats will fill in as wallets connect.
K12 + SchnorrQ_Verify is the only path now. The 32-byte dev stub is no longer emitted by any client; it's only a historical marker.
window.qubic / vault / paste-address dev stub
MetaMask Qubic snap (Option B — self-transfer w/ challenge in input)
message = direct 64-byte SchnorrQ over the canonical challenge. transaction = the snap's signTransaction RPC wrapped around a self-transfer with inputType 0x4147 ("AG"); the server unwraps and verifies against the embedded challenge. The unknown bucket is for audit rows whose metadata doesn't carry a kind (should be 0 after Phase 21).
- …wallet.startPOST/v1/auth/wallet/start
- …wallet.finishPOST/v1/auth/wallet/finish
- …wallet.statsGET/v1/auth/wallet/stats
- 1Request nonce
Browser POSTs a 60-char Qubic address to /v1/auth/wallet/start. The server stores a one-shot nonce (5 min TTL) and returns the canonical message to sign.
- 2Sign
Pick a path: window.qubic, MetaMask Qubic snap (Option B — self-transfer with the challenge in input), in-browser vault, or paste-address dev stub. The server accepts kind:'message' or kind:'transaction'.
- 3Verify + provision
/v1/auth/wallet/finish verifies the proof (K12 + SchnorrQ_Verify, or the dev-stub shape check), finds or creates the user (deterministic email + personal org), issues a JWT session, and sets the aigarth_session cookie.