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-esim

Tip: 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-name

Example:

git checkout -b improve-zk-verifier

This 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-name

6. 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

Content Type
Syntax Highlighting

Terminal / git commands

bash

TypeScript / Node.js examples

ts

ZK circuits (Noir)

noir or text

Last updated