Primitives are designed for deployment in adversarial environments. If you find an exploit, please refer to our security policy before disclosing it publicly (an exploit may equip a malicious party to attack users of a primitive).
- consensus: Order opaque messages in a Byzantine environment.
- cryptography: Generate keys, sign arbitrary messages, and deterministically verify signatures.
- p2p: Communicate with authenticated peers over encrypted connections.
- runtime: Execute asynchronous tasks with a configurable scheduler.
- storage: Persist and retrieve data from an abstract store.
- stream: Exchange messages over arbitrary transport.
Examples may include insecure code (i.e. deriving keypairs from an integer arguments) to make them easier to run. Examples are not intended to be used directly in production.
- chat: Send encrypted messages to a group of friends.
- log: Commit to a secret log and agree to its hash.
- vrf: Generate bias-resistant randomness with untrusted contributors.
Sometimes, we opt to maintain software that is neither a primitive nor an example to make it easier to interact with the Commonware Library. Unless otherwise indicated, code in this section is intended to be used in production. Please refer to our security policy before disclosing an exploit publicly.
- docs: Access information about Commonware at https://commonware.xyz.
- macros: Augment the development of primitives with procedural macros.
- utils: Leverage common functionality across multiple primitives.
This repository is dual-licensed under both the Apache 2.0 and MIT licenses. You may choose either license when employing this code.
We encourage external contributors to submit issues and pull requests to the Commonware Library. To learn more, please refer to our contributing guidelines.
All work is coordinated via the tracker. If something in the backlog looks particularly useful, leave a comment so we can prioritize it!
If you have any questions about using the Commonware Library, we encourage you to post in GitHub Discussions. We're happy to help!