Skip to content

update the API

STEVAN Antoine requested to merge work-on-api into main

changelog

  • rename the encode function to prove and have it take shards instead of an encoding matrix: this is to isolate the "encoding" process inside the fec module and leave the main komodo::prove only compute the "proof", i.e. the commits of the data

from

fn encode<F, G, P>(
    bytes: &[u8],
    encoding_mat: &Matrix<F>,
    powers: &Powers<F, G>,
) -> Result<Vec<Block<F, G>>, KomodoError>

to

fn prove<F, G, P>(
    bytes: &[u8],
    powers: &Powers<F, G>,
    k: usize,
) -> Result<Vec<Commitment<F, G>>, KomodoError>
  • rename fec::Shard.combine to fec::Shard.recode_with to get rid of "combine"
  • rename fec::recode to fec::recode_with_coeffs to show that this version takes a list of coefficients
  • rename Block.commit to Block.proof: "commit" should be "commits" and it's usually refered to as "proof"
  • split prove further into prove and build: prove now outputs a Vec<Commitment<F>>, build simply takes a Vec<Shard<F>> and a Vec<Commitment<F>> and outputs a Vec<Block<F>>
  • add fec::recode_random that does the "shard" part of recode to wrap around fec::recode_with_coeffs
  • remove R: RngCore from the signature of zk::setup, to avoid having to pass a generic _ annotation everywhere zk::setup is used, same change has been applied to recode and the generate_random_powers in main.rs

from

fn setup<R: RngCore, F: PrimeField, G: CurveGroup<ScalarField = F>>(
    max_degree: usize,
    rng: &mut R,
) -> Result<Powers<F, G>, KomodoError> {

to

fn setup<F: PrimeField, G: CurveGroup<ScalarField = F>>(
    max_degree: usize,
    rng: &mut impl RngCore,
) -> Result<Powers<F, G>, KomodoError> {

some extra minor changes

  • remove some useles generic type annotations, e.g. prove::<F, G, P> can become a simpler prove most of the time, i.e. when there is at least one generic annotation somewhere in the scope
Edited by STEVAN Antoine

Merge request reports