Author

Topic: Zero-Knowledge Voting Protocol Implementation (Read 71 times)

legendary
Activity: 3640
Merit: 1209
September 06, 2021, 12:05:01 PM
#1
               
 
Friends - a new contest 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


1st prize - 600,000 TONs
2nd prize - 300,000 TONs
3rd prize - 100,000 TONs
4th prize - 20,000 TONs
5th prize - 18,000 TONs
6th prize - 16,000 TONs
7th prize - 14,000 TONs
8th prize - 12,000 TONs
9th prize - 10,000 TONs
10th prize - 8,000 TONs

 

Landing pagehttps://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/Кpиптoвaлюты/ton-crystal
Jump to: