Skip to content
Openbands

Openbands

The anonymous social network for employees

Created on 20th August 2025

•

Openbands

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.

Discussion

Builders also viewed

See more projects on Devfolio