Contributing
We welcome contributions to ZK-eSIM! Whether you want to improve the ZK circuits, backend server logic, client simulator, or Web3 integration, your contributions help make this project better and more
1. Fork the Repository
Start by creating your own copy of the repository:
# Go to GitHub and fork the repo
# Then clone your fork locally
git clone https://github.com/YOUR_USERNAME/zk-esim.git
cd zk-esimTip: Always work on your fork to avoid conflicts with the main repository.
2. Create a New Branch
For each feature or bug fix, create a new branch:
git checkout -b feature-nameExample:
git checkout -b improve-zk-verifierThis keeps your work isolated and makes Pull Requests cleaner.
3. Write Code and Tests
Implement your feature or fix
Write unit tests for server, client, or ZK circuits
Test locally to ensure everything works
Client Example (TypeScript):
const proof = await generateProof(userIdentity, planId);
console.log("Proof generated:", proof);Server Example (Node.js):
const isValid = await verifyProof(proof);
console.log("Proof valid?", isValid);ZK Circuit Example (Noir):
fn main(imsi: Field, secret: Field) -> Field {
let hash = hash(imsi, secret);
assert(hash == public_commitment);
return 1;
}4. Commit Your Changes
Follow best practices for commit messages:
git add .
git commit -m "feat: add new ZK proof validation"Use feat for new features
Use fix for bug fixes
Keep messages clear and concise
5. Push Branch to Your Fork
git push origin feature-name6. Open a Pull Request
Go to the main repository on GitHub
Click Compare & Pull Request
Provide a clear description of what your feature/fix does
Mention any related issues or discussions
Areas Where Contributions Are Welcome
ZK Circuits: Improve efficiency, add new proof flows, optimize performance
Server Verification Logic: Enhance backend proof verification, add caching, or logging
eSIM Simulator: Add new UI flows, dashboard improvements, or better user feedback
Web3 Integration: Connect proofs to NFT/tokens, test on-chain verification, or DePIN networks
Documentation: Improve GitBook pages, add examples, or clarify workflows
Tips for Contributors
Test all changes locally before submitting
Keep commits atomic and descriptive
Follow the existing TypeScript/Noir style conventions
Document new endpoints, proof structures, and workflows
GitBook Syntax Highlighting Recommendation
Terminal / git commands
bash
TypeScript / Node.js examples
ts
ZK circuits (Noir)
noir or text
Last updated
