Self-custodial smart wallet with 2FA — as easy as a Google account, secured by zero-knowledge proofs.
Flux Wallet is an ERC-4337 smart contract wallet that brings familiarity to self-custody. It replaces seed phrases and private key anxiety with Google Authenticator 2FA, social recovery, and a clean web app — all verified through zero-knowledge proofs so your secrets never leave your device.
Built for the ETH Next Billion Fellowship — because the next billion users won't use crypto until it feels like an app, not a terminal.
- Self-custodial wallets lose billions of dollars every year to hacks, phishing, and user error
- 60%+ of web3 users fear their wallet will be compromised
- Seed phrases are not a user interface — they are a liability
- Cold wallets cost $50–$200 and are impractical for daily use
- Most users keep only 20% of their portfolio in hot wallets because they don't trust them
- dApp interactions expose private keys on every single transaction
Flux Wallet solves all of this at the smart contract layer:
| Problem | Flux Fix |
|---|---|
| Private key compromise | 2FA via Google Authenticator — every transaction needs a TOTP code |
| Seed phrase anxiety | Social recovery — recover your wallet with trusted guardians |
| Sign-everything risk | Session keys — authorize once, use without re-signing |
| Key loss = funds lost | No seed phrase required — recover via guardians |
| Complicated UX | Web app interface — familiar, clean, works like a bank app |
User opens Flux Web App
│
▼
Deploy smart wallet (ERC-4337 account abstraction)
│
▼
Set up 2FA — scan QR code with Google Authenticator
│
▼
Merkle tree of future OTPs generated client-side
│
▼
To send: enter recipient, amount, and 6-digit TOTP code
│
▼
ZK proof verifies OTP off-chain → transaction authorized on-chain
│
▼
Gas paid via ERC-4337 bundler — no ETH needed in wallet
The key innovation: your TOTP secret never touches the network. OTPs are verified via ZK proofs against a Merkle root stored on-chain. The secret stays on your device, generated by Google Authenticator.
- OTP 2FA via ZK Proofs — verify transactions with Google Authenticator codes using zero-knowledge circuits (Circom + SnarkJS)
- Social Recovery — designate guardians who can help recover your wallet if you lose access
- ERC-4337 Account Abstraction — gas sponsorship, batched transactions, no ETH required for gas
- Smart Contract Wallet — fully customizable logic (recovery, session keys, spending limits)
- On-ramp via Stripe — buy crypto directly into your wallet with fiat
- WalletConnect — connect to any dApp through your smart wallet
- Push notifications — real-time alerts for wallet activity (coming soon)
| Layer | Technology |
|---|---|
| Frontend | Next.js 12, React 18, TailwindCSS, daisyUI |
| Wallet Connection | Wagmi 0.6, RainbowKit, Web3Auth |
| Smart Contracts | Solidity, Hardhat, ERC-4337 |
| Zero Knowledge | Circom, SnarkJS |
| Account Abstraction | EntryPoint v0.6, Custom Wallet API |
| 2FA | TOTP (Google Authenticator), Poseidon Hash |
| Network | Ethereum (Goerli / Sepolia), Gnosis Chiado |
| Infrastructure | IPFS (Infura), Stripe OnRamp |
| Contract | Address |
|---|---|
| EntryPoint | 0x43ccc7277E12d6dD3363B9897e0cf5BB22e93735 |
| FluxWalletFactory | 0xfaf2900c2063573f2faa347d0f5e735f403eb66a |
| SampleRecipient | 0x72c186Fbff451a87E2b538219BC6Ffefd19F7aEA |
| SignerAddress | 0xdeaa150597535Eed8c95Ad090757815F1B9Da15d |
| Contract | Address |
|---|---|
| EntryPoint | 0xf3E04ec30d589cF4Ec62CEc425FC0d1D6DA3596B |
| FluxWalletFactory | 0x33a15964328a3419ec55f6192fccb81a3e3861e2 |
| OTPFactory | 0x72c186Fbff451a87E2b538219BC6Ffefd19F7aEA |
| Verifier | 0x2cDc47369bb86C05198Ea2CFF8c548b73b919Bb1 |
| Main Dashboard | ![]() |
| Connecting Wallet | ![]() |
| Deploying Wallet | ![]() |
| 2FA Setup | ![]() |
| Send with 2FA | ![]() |
| Guardian Setup | ![]() |
| Recovery Dashboard | ![]() |
| Start Recovery | ![]() |
git clone https://github.com/your-org/flux-wallet.git
cd flux-web-wallet
yarn install
cp packages/app/.env.example packages/app/.env.development
# fill in your API keys
yarn devOpen http://localhost:3000 in your browser.
┌──────────────────────┐
│ Next.js Web App │
│ ┌────────────────┐ │
│ │ Wallet UI │ │
│ │ Auth Flow │ │
│ │ Send/Receive │ │
│ │ Recovery UI │ │
│ └───────┬────────┘ │
│ │ │
│ ┌───────▼────────┐ │
│ │ ZK Circuit │ │
│ │ (Circom) │ │
│ │ Witness Gen │ │
│ │ SnarkJS Prove │ │
│ └───────┬────────┘ │
└──────────┼───────────┘
│
┌──────────▼───────────┐
│ ERC-4337 Bundler │
│ (Goerli/Sepolia) │
└──────────┬───────────┘
│
┌──────────▼───────────┐
│ Flux Smart Wallet │
│ ┌─────────────────┐ │
│ │ OTP Verifier │ │
│ │ Social Recovery│ │
│ │ Session Keys │ │
│ │ Dead Man Switch│ │
│ └─────────────────┘ │
└──────────────────────┘
MIT







