ZcashFoundation / redjubjub

A minimal RedJubjub implementation for use in Zebra.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Share commitments should be vectors

upbqdn opened this issue · comments

commented

Description

The field share_commitment

share_commitment: BTreeMap<ParticipantId, Commitment>,

should contain a vector of commitments instead of just one commitment.

In our tests, we also consider only the zeroth commitment, which is a commitment to the shared secret, and we don't consider the remaining commitments:

Commitment::from(share.share.commitment.0[0].clone()),

Rationale

The field share_commitment, as defined above, should represent the struct ShareCommitment in the FROST implementation:

pub struct ShareCommitment(pub(crate) Vec<Commitment>);

The struct ShareCommitment is a vector, and represents a public commitment C⃗i as defined in step 3, Round 1 of Figure 1 of the FROST paper. This public commitment contains commitments to the individual coefficients of the secret polynomial.