update the API
changelog
- rename the
encodefunction toproveand have it take shards instead of an encoding matrix: this is to isolate the "encoding" process inside thefecmodule and leave the mainkomodo::proveonly 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.combinetofec::Shard.recode_withto get rid of "combine" - rename
fec::recodetofec::recode_with_coeffsto show that this version takes a list of coefficients - rename
Block.committoBlock.proof: "commit" should be "commits" and it's usually refered to as "proof" - split
provefurther intoproveandbuild:provenow outputs aVec<Commitment<F>>,buildsimply takes aVec<Shard<F>>and aVec<Commitment<F>>and outputs aVec<Block<F>> - add
fec::recode_randomthat does the "shard" part ofrecodeto wrap aroundfec::recode_with_coeffs - remove
R: RngCorefrom the signature ofzk::setup, to avoid having to pass a generic_annotation everywherezk::setupis used, same change has been applied torecodeand thegenerate_random_powersinmain.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 simplerprovemost of the time, i.e. when there is at least one generic annotation somewhere in the scope
Edited by STEVAN Antoine