Skip to main content


o1js / Modules

o1js   npm version PRs Welcome

ℹ️ 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 snarkyjs to o1js

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

Learn More


o1js is an open source project. We appreciate all community contributions to o1js!

See the Contributing guidelines for ways you can contribute.

Development Workflow

For guidance on building o1js from source and understanding the development workflow, see o1js README-dev.

Community Packages

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.