Giter Site home page Giter Site logo

ark-srs's People

Contributors

alxiong avatar sveitser avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

espressosystems

ark-srs's Issues

Add supports for perpetualpowersoftau SRS

Relevant sources:

According to offline communication, ppot provides not only powers_of_g, but also powers_of_h, which is very useful in applications like PCS multiproofs.


  • use feature flags to selective enable diff SRS

Add unit test to and polish Aztec's CRS parsing code

Currently, I have only locally tested the parsing code for Aztec's CRS (by replacing occurrences of KZG10::setup() with our crs::aztec20::get_crs() in tests in ark_poly_commit::kzg10 module) -- partly because current code relies on reading from 6 GB of transcripts file that anyone can download by running ./scripts/download_transcripts_aztec.sh, but I don't want to burden the CI just yet.

This issue aims to:

  • add proper unit test to Aztec parsing code.
  • improve code quality. (there are a few typos (e.g here should be 20) and commented code left-overs)
  • add CI once test is passing.

Initial Plan: features and goal of an MVP

Motivation

There are many trusted setup (ceremonies) hosted for CRS parameter generation via MPC by various companies, some circuit-specific, others universal and updateable. However, it is currently inconvenient to directly import those existing parameters and leverage on them in your rust code. Furthermore, it is hard to keep track of those different ceremonies and even harder to switch between parameters.

This library aims to provide an "awesome-crs" list as well as light-weight modular wrapper code for importing those parameter files into a standardize, easy-to-use struct.

Targeted Feature for MVP

use crs::preclude::*;
use crs::CeremonyList;

struct MySnark;
impl<F: PrimeField, PC: PolynomialCommitment<F, DensePolynomial<F>>> MySnark<F, PC> {
  pub fn index<C: Circuit<F>>(srs: UniversalSRS<F, PCS>, c: C) -> (ProverKey<F, PC>, VerifierKey<F, PC>){
    // utilize existing SRS from a PCS to generate circuit-specific keys
  }
}

fn test() {
  let circuit: Circuit;
  let srs1 = UniversalSRS<BlsScalar, KZG10>::get(CeremonyList::Aztec2020);
  let srs2 = UniversalSRS<JubjubScalar, MarlinPC>::get(CeremonyList::Marlin2021);
  let (pk1, vk1) = MySnark::index(srs1, circuit);
  let (pk2, vk2) = MySnark::index(srs2, circuit);
}

Concrete tasks break-down

  • Survey list of popular, major ceremonies and existing code like zcash's mpc.
  • Design data flow and high-level API

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.