Skip to content
Snippets Groups Projects

refactor shard to use a simple vector

Merged STEVAN Antoine requested to merge refactor-shard into main

this MR uses a simpler Vec of E::ScalarField to represent a linear combination.

the rest of the crate has been fixed accordingly.

the goal is to let Arkworks do as much work as possible, fixing part of #2 (closed).

  • one_more removed from field::split_data_into_field_elements in 5531b31a
  • one_less removed from field::merge_elements_into_bytes in 5761b784

examples

let's say we have at most

k = 3
source shards, called
s_0
,
s_1
and
s_2
respectively. this first means that all linear combinations will be at most of length 3.

if a new shard

s
is a linear combination of the source shards, e.g.
s = \alpha s_0 + \beta s_1 + \gamma s_2
, where
\alpha
,
\beta
and
\gamma
are scalar elements of an elliptic curve, then the linear combination in the code will be

vec![alpha, beta, gamma]

Note
the right of the vector can be truncated to remove zero elements that are not part of the linear combination and don't add any extra useful information.
the left stays mandatory.

e.g. we create two times a linear combination with a single one set to

1
and the rest to
0
with the following snippet

let mut linear_combination = Vec::new();
linear_combination.resize(i + 1, E::ScalarField::zero());
linear_combination[i] = E::ScalarField::one();
Edited by STEVAN Antoine

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
Please register or sign in to reply
Loading