# o1js &nbsp; [![npm version](https://img.shields.io/npm/v/o1js.svg?style=flat)](https://www.npmjs.com/package/o1js) [![npm](https://img.shields.io/npm/dm/o1js)](https://www.npmjs.com/package/o1js) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/o1-labs/o1js/blob/main/CONTRIBUTING.md)

## o1js

o1js makes it easy for developers to build applications powered by
zero-knowledge (zk) cryptography.

Developers can use o1js to write zk circuits and prove + verify them in browser
or node environment, or create proofs to be verified by the Mina Protocol.

## Learn More

- [zkApp CLI](https://www.npmjs.com/package/zkapp-cli) is a scaffolding tool to
  start a new project with o1js

- To learn more about the language features, see the
  [o1js documentation](https://docs.o1labs.org/o1js).

- To learn how to build ZkApps on Mina, see the
  [zkApp documentation](https://docs.minaprotocol.com/zkapps).

- To meet other developers building zkApps with o1js, participate in the
  [#zkapps-developers](https://discord.com/channels/484437221055922177/915745847692636181)
  channel on Mina Protocol Discord.

- For a list of changes between versions, see the
  [CHANGELOG](https://github.com/o1-labs/o1js/blob/main/CHANGELOG.md).

- To stay up to date with o1js, see the
  [o1Labs Blog](https://www.o1labs.org/blog?topics=o1js).

## Contributing

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

See the
[Contributing guidelines](https://github.com/o1-labs/o1js/blob/main/CONTRIBUTING.md)
for ways you can contribute.

## Development Workflow

For guidance on building o1js from source and understanding the development
workflow, see
[o1js README-dev](https://github.com/o1-labs/o1js/blob/main/README-dev.md).

## 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](https://github.com/Trivo25/o1js-elgamal) and
  [npm](https://www.npmjs.com/package/o1js-elgamal)
- **o1js-pack** A library for o1js that allows a zkApp developer to pack extra
  data into a single Field. [GitHub](https://github.com/45930/o1js-pack) and
  [npm](https://www.npmjs.com/package/o1js-pack)
- **zk-regex-o1js** A CLI tool for compiling ZK Regex circuits in o1js.
  [Github](https://github.com/Shigoto-dev19/zk-regex-o1js) and
  [npm](https://www.npmjs.com/package/zk-regex-o1js)
- **eddsa-o1js** A library for provable EdDSA and Twisted Edwards Curve
  operations. [Github](https://github.com/o1-labs-XT/eddsa-o1js) and
  [npm](https://www.npmjs.com/package/eddsa-o1js)

To include your package, see
[Creating high-quality community packages](https://github.com/o1-labs/o1js/blob/main/CONTRIBUTING.md#creating-high-quality-community-packages).
