Module chain_vote::tally

source ·

Structs

  • Base64 decode error
  • An encrypted vote is only valid for specific values of the election public key and crs. It may be useful to check early if a vote is valid before actually adding it to the tally, and it is therefore important to verify that it is later added to an encrypted tally that is consistent with the election public key and crs it was verified against. To reduce memory occupation, we use a hash of those two values.
  • EncryptedTally is formed by one ciphertext per existing option and a fingerprint that identifies the election parameters used (crs and election public key)
  • ProvenDecryptShare consists of a group element (the partial decryption), and CorrectShareGenerationZkp, a proof of correct decryption.
  • Tally represents the decrypted tally, with one u64 result for each of the options of the election.
  • TallyDecryptShare contains one decryption share per existing option. All committee members (todo: this will change once DKG is completed) need to submit a TallyDecryptShare in order to successfully decrypt the EncryptedTally.
  • ValidatedTally can only be constructed by valid TallyDecryptShares, and the corresponding EncryptedTally. This intermediate structure ensures that only validated decryptions are used to compute the election outcome, i.e. if the committee members do not present valid shares, the tally decryption cannot be computed. This intermediate structure is particularly of interest during the distributed decryption protocol, where, in case there is a misbehaving party, one needs to perform certain actions between the verification of a decryption share, and its use in the decrypted tally computation.

Functions

Type Aliases

  • Submitted vote, which constists of an EncryptedVote and a ` Common Reference String
  • Secret key for opening vote