Crosssign
CrossSign is a trustless cross-wallet verification layer that proves a user's wallet ownership through live cryptographic signatures and anchors verifications onchain.
Videos



Tech Stack
Description
CrossSign — ownership proof that doesn't need a bridge.
CrossSign is a cross-wallet verification layer. It lets an application prove that a user controls a wallet by checking a live cryptographic signature on-chain, so the result can be read by anyone instead of being asserted by a private server.
How it works. The user selects a Solana wallet (Phantom, Solflare, Backpack, OKX — any Wallet-Standard wallet) over Arbitrum/EVM wallets are used to pay for and submit the on-chain transaction. CrossSign re-reads the wallet's current account, mints a fresh challenge, and binds the chain id, verifier address, wallet public key, a single-use nonce and an expiry into one canonical message. The wallet signs it — a message signature, never a transaction, so no funds move and no approvals are granted.
On-chain verification. The signature is submitted to CrossSignVerifier, a Rust contract deployed to Arbitrum Sepolia through Stylus (Rust → WASM). It reconstructs the exact canonical message, verifies Ed25519 natively with ed25519-dalek, rejects expired challenges and replayed nonces, then mints a non-transferable badge through CrossSignBadgeRegistry. Arbitrum's Rust VM does natively what the EVM cannot — which is why this is built on Stylus.
Security model. Fresh challenge per attempt; expiry enforced in the client and in the contract; nonce burned on first use; the signature is bound to this chain, this contract, this wallet and this nonce. The live account is re-read before signing, so switching wallets mid-flow is detected rather than accepted. The backend issues nonces and formats messages only — it never performs or trusts a cryptographic decision.
Stack. Next.js 14 + TypeScript front end, ethers v6 for chain access, Rust/Stylus contracts with 28 unit tests, and a Playwright QA suite covering 67 wallet-state checks. Live: crosssign.vercel.app
Progress During Hackathon
CrossSign was built from scratch during the buildathon and is deployed and working end-to-end today.
Sep 10–15 — Foundation. Repository created with the Next.js 14 / TypeScript application and the Rust Stylus contract workspace (verifier + registry). The wallet layer was rebuilt around open standards instead of blind provider access: EIP-6963 discovery for Arbitrum wallets and the Wallet Standard for Solana wallets, which removed hydration mismatches and multi-extension conflicts.
Sep 16 — Contracts deployed to Arbitrum. Both contracts were deployed and activated on Arbitrum Sepolia with cargo-stylus (deploy + ProgramActivated events confirmed on Arbiscan): the badge registry at 0x2862cbdc… and the verifier at 0x39db2d89…. Deployment configuration was hardened (key handling, activation checks, deployment record) and the failure/recovery paths of the verification flow were fixed so no stale session or wallet can be reused across attempts.
Sep 17 — Hardening + real-wallet fixes. Added generation-keyed in-flight protection (no stale or duplicate attempts), stricter signing-boundary validation (64-byte Ed25519, signature-type checks, live account re-read before signing), and fixed a real-browser issue found with Phantom: the app was calling solana:signMessage using the superseded draft signature while every current Wallet Standard wallet implements the current variadic form. The signing boundary is now convention-aware, so real Phantom signing works while legacy wallets stay supported.
QA + live deployment. tsc typecheck and production build are green; the Playwright wallet-state E2E suite grew from 55 to 67 checks (all passing) and now reproduces both real-browser bugs, failing 6 checks against the pre-fix build. 28 Rust unit tests cover the contract logic, and the JS↔Rust canonical message is checked byte-for-byte by script. The app is live at https://crosssign.vercel.app, connected to the deployed contracts
Fundraising Status
Not raising. CrossSign is a self-funded buildathon project , no external funding, no investors, and no token. Any future funding would be used to harden the contracts (external review, gas benchmarking) and to open the verification API to other applications.