Skip to content

pluto/ronkathon

Repository files navigation

ronkathon

ronkathon

Overview

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.

Multivariate polynomials and sum-check

This project implements the sum-check protocol for multivariate polynomials over finite fields. The sum-check protocol is an interactive proof system where a prover convinces a verifier of the sum of a multivariate polynomial over a boolean hypercube. This implementation includes:

  • A MultiVarPolynomial struct which represents a multivariate polynomial
  • A SumCheckProver for generating proofs
  • A SumCheckVerifier for verifying proofs
  • A SumCheck struct that encapsulates the entire protocol.

Use

cargo run --example sumcheck_ex

to run example code.

Primitives

Signatures

Encryption

Hash

In Progress

  • Edwards curve Signatures (EdDSA)

Resources

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

Theoretic Resources

Code Refrences

Math

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.

License

Licensed under your option of either:

Contribution

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.