zkOTP Wallet: A seedless wallet secured by zk-proofs and Google Authenticator TOTP standard.
How it's made
Tell us about how you built this project; the nitty-gritty details. What technologies did you use? How are they pieced together? If you used any partner technologies, how did it benefit your project? Did you do anything particuarly hacky that's notable and worth mentioning?
For proving TOTP Code on-chain, the prover (which is the zk-TOTP wallet) takes private inputs (secret_raw, secret_bits, otp_code) and public inputs (hashed_secret, time_step, action_hash, tx_nonce) into the circuit.
Within the circuit:
otp_code
Finally, the smart contract verifies the proof by circuit is true, ensures nonce is not used to prevent replay attacks, and executes the requested action.
We use Self Protocol SDKs to implement the on-chain verification process on Celo, then use Hyperlane to securely transmit the zero-knowledge proof and verification data between Celo chain and HashKey chain. This expands the use of Self Protocol and Hyperlane to enable zero-knowledge proof KYC on Hashkey chain, taking a step closer to the framework of regulatory-compliant data storage and data privacy protection networks.
How’s it made
⚙️ Technologies Used
🧠 Notable Hacks & Engineering Wins