Openbands
The anonymous social network for employees
Created on 20th August 2025
•
Openbands
The anonymous social network for employees
The problem Openbands solves
Openbands is a social network for anonymous AND verified employees. We aim to provide a platform where employees can post and participate in conversations about their company without revealing their identity.
Our solution requires a valid work email address (e.g. [email protected]), which serves as proof of company affiliation. We use zero-knowledge proofs to verify the email, all while preserving users' privacy.
Challenges we ran into
We ran into an issue with noir-jwt:
https://github.com/zkemail/noir-jwt
https://www.npmjs.com/package/noir-jwt
We tried to generate a witness with the circuits using the noir-jwt library, which we previously implemented, and all those circuits were previously successful in generating a witness through the noir.execute().
But now, all those circuits fail to generate a witness through the noir.execute().
The application is still functional, and users can sign in with their email and post, comment, etc. However, the email's authenticity is not verified via JSON Web tokens, but instead via a simple hash over the user's email.
NOTE: The user's privacy is preserved, and no sensitive information (like the user's name or full email) are disclosed.
However, this bug means that a user could theoretically pass any email when logging in and post under any company domain name.
Smart Contract Address(es)
HonkVerifier contract:
"0xEa8EB5CFf49241B39950c31f788AEF8E0d4Df1c1"
https://basescan.org/address/0xEa8EB5CFf49241B39950c31f788AEF8E0d4Df1c1#code
The on-chain verifier contract, which is generated via the zkJWT circuit in Noir. This on-chain verifier contract will verify whether a JWT of an email is a valid one or not based on a zkJWT proof and public inputs submitted without disclosing sensitive information.
ZkJwtProofVerifier contract: "0x20a414abEcFe31DD27Aa7FcCC353a505E976D277"
https://basescan.org/address/0x20a414abEcFe31DD27Aa7FcCC353a505E976D277#code
The on-chain verifier contract, from which the HonkVerifier contract based verification is inherited and some custom validation logics is going to be implemented.
(NOTE: Currently, only the HonkVerifier contract-based verification is implemented)
ZkJwtProofManager contract: "0x7a2E68d1d1bB79dBc945801A02Bd6e17d0842457"
https://basescan.org/address/0x7a2E68d1d1bB79dBc945801A02Bd6e17d0842457#code
The smart contract, which stores the public inputs (icl, Email’s domain, and nullifier hash) emitted via ZK circuit with a user’s wallet address and timestamp.
(NOTE: Before the public inputs are stored, the zkJWT proof and the public inputs would be verified via the ZkJwtProofVerifier/HonkVerifier contract above)
Tracks Applied (1)
Top 5 New Mini Apps
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.
