A smart contract wallet that uses zero-knowledge proofs to authenticate users via Google OAuth without revealing personal information on-chain.
This project brings Sui's zkLogin to Ethereum, enabling gasless smart wallets authenticated by Google credentials. It uses ZK proofs to verify JWT signatures on-chain while preserving privacy.
zkaa/
├── verifier/ # Solidity contracts (ZkLoginRegistry, KernelZkLoginSigner)
├── sdk/ts/ # TypeScript SDK for signature generation
├── dashboard/ # Next.js frontend
├── crypto/ # Circom circuits for zkLogin compatibility
└── scripts/ # Circuit compilation and proof generation
# Install dependencies
npm install
# Run the dashboard
cd dashboard
npm run dev- User authenticates with Google OAuth
- SDK generates ephemeral keypair and nonce
- ZK proof verifies JWT signature without exposing user identity
- Smart wallet executes transactions signed by ephemeral key
For a example of account creation with zkLogin address setting, check out this transaction on Sepolia.
- Contracts: Solidity, Foundry, ZeroDev Kernel
- SDK: TypeScript, viem, snarkjs
- Frontend: Next.js, Tailwind CSS
- Circuits: Circom, Groth16
MIT