Zero-Knowledge Voting Protocol Implementation
Friends - a new competition for developers on the Free TON blockchain has been launched. A whole team of programmers should be involved in this competition, since the task is very complex and multifaceted. A zero knowledge voting protocol needs to be developed on top of the recently submitted TVM Groth16 verification instruction
Contest dates
August 9 - November 8, 2021, 23:59 UTC
Motivation
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++ (https://github.com/nilfoundation/cpp-ton) and Rust (https://github.com/nilfoundation/rust-ton) 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/1270.pdf)
Target
Create a voting protocol using the recently submitted VERGRTH16 instruction and make it usable with the FreeTON protocol
Requirements
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 ensure the bulletin maintains its integrity
● Must ensure the ballot box is a non-malleable one
● 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
Additional requirements
● Fraudulent ballot generation complexity should be no less than EdDSA over Ed25519 brute force complexity (not an extremely formal requirement, but it is okay since the public voter identifier could be, for example, a EdDSA public key)
● Voting results disclosure should be not possible until the voting is ended. Evaluation criteria and winning conditions
● Apart from uploading a submission, a code should be submitted in accordance with https://github.com/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
Reward
1 st prize - 600,000 TONs
2 nd prize - 300,000 TONs
3 rd prize - 100,000 TONs
4 th prize - 20,000 TONs
5 th prize - 18,000 TONs
6 th prize - 16,000 TONs
7 th prize - 14,000 TONs
8 th prize - 12,000 TONs
9 th prize - 10,000 TONs
10 th prize - 8,000 TONs
Landing page — https://zero.freeton.today/
Official news — https://devex.gov.freeton.org/proposal?proposalAddress=0%3A22564170cd6e54121e89ff1338dd5ceca174530be2bd318c4521fefeebf8bb52
Chats — https://t.me/freeton_dev_exp / https://t.me/FT_cryptography_SG
FREE TON wiki — https://ru.freeton.wiki/Free_TON_Wiki
Introduction to FREE TON (short course)— https://freeton.academy/courses/introduction-to-free-ton-ru/
Coingecko - https://www.coingecko.com/ru/Криптовалюты/ton-crystal