ronkathon
Ronkathon is a rust implementation of a collection of cryptographic primitives. It is inspired by the common python plonkathon repository, and plonk-by-hand. We use the same curve and field as plonk-by-hand (not secure), and are working towards building everything from scratch to understand everything from first principles.
- Finite Group
- Fields and Their Extensions
- Curves and Their Pairings
- Polynomials
- KZG Commitments
- Reed-Solomon Codes
- Merkle Proofs
- DSL
- Edwards curve Signatures (EdDSA)
We have found the following resources helpful in understanding the foundational mathematics behind this implementation. After going through these, you should be able to understand the codebase
To see computations used in the background, go to the math/
directory.
From there, you can run the .sage
files in a SageMath environment.
In particular, the math/field.sage
computes roots of unity in the PlutoField
which is of size 101. To install sage on your machine, follow the instructions here. If you are on a Mac, you can install it via homebrew with brew install --cask sage
.
Licensed under your option of either:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.