Contest: Zero-Knowledge Voting Protocol Implementation
Contest dates: July 1, 2021 00:01 UTC - September 15, 2021 at 23:59 UTC
Voting period: 20 days
Background and Description
In January, 2021, a contest called Challenge MIT/Harvard paper on Blockchain Faults in Election Systems was held, which crowdsourced arguments to defend the position that secure blockchain based elections are possible. As a result, community arguments were summarized in a joint Free TON community paper, which was used by the GBA to foster a discussion with US election officials.
=nil; Foundation, as an initial member of the Free TON community developed an upgraded version of the TON Virtual Machine, which includes cryptographic primitives required for usage of zero-knowledge proof verification within virtualized applications. =nil; Foundation also prepared C++ (GitHub - NilFoundation/cpp-ton: Cryptography-enhanced Telegram Open Network Protocol C++ Implementation) and Rust-y (GitHub - NilFoundation/rust-ton: Cryptography-enhanced Telegram Open Network Protocol Rust Implementation) ZK proof verification instruction-enhanced TON protocol implementations.
Now Free TON has all of the required technologies to run a blockchain mass voting implementation contest.
Voting protocols inherently imply voter anonymity, but they should also support voter registration by authorities, so they usually get designed as Zero-Knowledge protocols (e.g. https://eprint.iacr.org/2017/585.pdf or https://eprint.iacr.org/2019/1406.pdf)
This document proposes the Zero-Knowledge voting protocol implementation contest on top of the newly introduced TVM Groth16 verification instruction.
Instructions for participants
Contestants are expected to create a voting protocol using the newly introduced VERGRTH16
instruction and make it usable with the FreeTON protocol.
General requirements
-
Must be a correctly functioning FreeTON virtualized application deployed either to https://main.ton.dev (https://ton.live) or to https://net.freeton.nil.foundation (https://nil.ton.live or to https://live.freeton.nil.foundation).
-
Must Involve VERGRTH16 TVM instruction usage.
-
Must have an integral public bulletin board for the non-malleable ballot box, because the voting system requires technical support.
-
Must ensure that the ballot guarantees privacy of the voting message while also guaranteeing that the voter cannot reproduce their vote.
-
Must allow the voter to verify the inclusion of their vote, and also ensure that others cannot coerce the voter to create a false ballot.
-
The ballot must only be generated for eligible voters.
-
Must ensure that voting results uniquely correspond to the ballots in the public board.
-
Must ensure that ballots do not reveal voter identity to any entities, even authorities.
-
Must ensure that ballots are unique to only the individual voting and there is no possibility for proxy votes.
-
Must contain the following actor roles:
- Voter.
- Verifier.
- Ballot Issuer.
-
Must contain definitions for the following items:
- Ballot. Required not to disclose the Voter’s decision until the Ballot Issuer decides to.
- Voter Registry. Proves a particular Voter is eligible to vote.
-
Must contain a Ballot Issuer Voter registration procedure:
- Voter generates some public identifier.
- Voter submits the public identifier to the Ballot Issuer.
- Ballot Issuer introduces the Voter’s identifier to the Voter Registry.
Evaluation criteria and winning conditions
- Apart from uploading a submission, a code should be submitted in accordance with GitHub - freeton-org/readme and deployed either to https://main.ton.dev (https://ton.live) or to https://net.freeton.nil.foundation (https://nil.ton.live or https://live.freeton.nil.foundation).
- Each contestant should present their solution at a convenient time agreed upon in advance with DevEx Sub-governance members. A solution should include tests with clear instructions.
- If a test does not cover some scenarios, then jurors can develop their own tests; however, if the burden falls on the jurors, the contest submissions scores should lose some points.
- The solution should have an open source license.
- The solution should contain at least a draft of the architecture description which is implied to contain following parts:
- In-TVM part. Proof verification part. This part is supposed to be done with
VERGRTH16
instruction usage and executed within the TVM. - Native part. Circuit definition. Proof generator.
- In-TVM part. Proof verification part. This part is supposed to be done with
Instructions for jurors
Jurors must verify the correctness of the protocol submitted by each contestant to the test cluster as follows:
- To reproduce every use case scenario (voter registration, voting, vote count)
- To confirm the solution complies to the architecture description.
- To confirm the solution complies to protocol requirements.
Voting
- Jurors whose team(s) intend to participate in this contest by providing submissions lose their right to vote in this contest.
- A jury from other sub-governance groups could be added to this contest to provide additional technical expertise.
- Each juror will vote by rating each submission on a scale of 1 to 10.
- Jurors should provide feedback on each submission.
- The jury will reject duplicate, subpar, incomplete, or inappropriate submissions.
Reward
Only submissions with an average score equal to or more than 7.00 can get a reward.
- 1st prize………………………………………… 600,000 TONs
- 2nd prize………………………………………… 300,000 TONs
- 3rd prize………………………………………… 100,000 TONs
Total prizes: 1,000,000 TONs
Note: If the number of winning submissions is less than the number of rewards available, any remaining rewards are not subject to distribution and are considered void.
Jury rewards
An amount equal to 15% of all total tokens actually awarded will be distributed equally between all jurors who vote and provide feedback. Both voting and feedback are mandatory in order to collect the reward.
Governance rewards
An amount equal to 2% of the prize fund will be allocated to members who participated in organizing the contest, to be distributed equally among them:
- @nemothenoone
- @prigolovko
Procedural remarks
- Participants must upload their work correctly so it can be viewed and accessible in the formats described. If work is inaccessible or does not fit the criteria described, the submission may be rejected by jurors.
- Participants must submit their work before the closing of the filing of applications. If not submitted on time, the submission will not count.