o1js / Modules
ℹ️ o1js is an evolution of SnarkyJS which saw 49 updated versions over two years of development with 43,141 downloads.
This name change to o1js reflects the evolution of our vision for the premiere toolkit used by developers to build zero knowledge-enabled applications, while paying homage to our technology's recursive proof generation capabilities.
Your favorite functionality stays the same and transitioning to o1js is a quick and easy process:
To update zkApp-cli, run the following command:
npm i -g zkapp-cli@latest
To remove the now-deprecated SnarkyJS package and install o1js, run the following command:
npm remove snarkyjs && npm install o1js
For existing zkApps, make sure to update your imports from
No need to redeploy, you are good to go!
o1js helps developers build apps powered by zero knowledge (zk) cryptography.
The easiest way to write zk programs is using o1js.
o1js is a TypeScript library for zk-SNARKs and zkApps. You can use o1js to write zk smart contracts based on zero-knowledge proofs for the Mina Protocol.
o1js is automatically included when you create a project using the Mina zkApp CLI.
To learn more about developing zkApps, see the zkApp Developers docs.
For guided steps building and using zkApps, see the zkApp Developers Tutorials.
To meet other developers building zkApps with o1js, participate in the #zkapps-developers channel on Mina Protocol Discord.
For a list of changes between versions, see the CHANGELOG.
To stay up to date with o1js, see the O(1) Labs Blog.
o1js is an open source project. We appreciate all community contributions to o1js!
See the Contributing guidelines for ways you can contribute.
For guidance on building o1js from source and understanding the development workflow, see o1js README-dev.
High-quality community packages from open source developers are available for your project.
- o1js-elgamal A partially homomorphic encryption library for o1js based on Elgamal encryption: GitHub and npm
- o1js-pack A library for o1js that allows a zkApp developer to pack extra data into a single Field. GitHub and npm
To include your package, see Creating high-quality community packages.