use a hashmap to represent linear combination
this MR removes the LinearCombinationElement and changes Shard.linear_combination to be a HashMap<u32, E::ScalarField> instead of a Vec<LinearCombinationElement<E>>.
- the
u32key is the index of the shard used in the linear combination - the
E::ScalarFieldvalue is the corresponding coefficient in the linear combination
the main goal is to remove duplicates on the shard indices, see this test where the shard 0 is twice
i had to
- implement
CanonicalSerialize,CanonicalDeserializeandValidforShardaccording to the Arkworks documentation (scroll a bit to "implement these traits manually") - add a test for the serialization
- fix all the usages in
lib.rsandmain.rs
in the end, it's not too bad, i wanted to have your input on this @j.detchart
Edited by STEVAN Antoine