Contest Proposal: Solidity to TVM Compiler Groth16 zkSNARK Proof Verification Instruction Support Introduction Proposal

Submission period: May 7, 2021 00:01 UTC - May 21, 2021 at 23:59 UTC

Voting period: 7 days

Background and Description

In-TVM zero-knowledge proofs verification support introduction lead to necessity to

develop and/or enhance currently existing tools to work with such an extension.

First of all this is about compilers. =nil; Foundation has introduced the

support of VERGRTH16 instruction to C++ to TVM Assembly compiler

(GitHub - NilFoundation/tvm-llvm: Clang for TVM), but unfortunately C++ is not the

most popular tool for in-TVM usage. That is why it is required to introduce

the support of VERGRTH16 instruction support to Solidity to TVM Assembly


Instructions for participants

This contest supposes for participants to design and implement VERGRTH16

instruction integration with Solidity to TVM Assembly compiler.

General requirements

The solution has to introduce the high-level function to use VERGRTH16 within the Solidity-written TVM virtualized logic.

Evaluation criteria and winning conditions

  • A participant should do a presentation of her solution at a convenient time agreed with DevEx members. A solution should include tests with clear instructions.
  • In case a test does not cover some scenarios, then jurors can develop their own tests, but it should reduce such a submission score.


  • 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.


Only submissions with an average score equal to or more than 6.0 can get a reward.

  • 1st prize 30 000 TONs
  • 2nd prize 20 000 TONs
  • 3rd prize 10 000 TONs

Note: In case the winning submissions amount 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 10% 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
  • @Futurizt

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.

Repository: GitHub - NilFoundation/tvm-solidity: Solidity compiler for Free TON Virtual Machine enhanced with Groth16 verification instruction.
Usage examples: ton-proof-verification-contest/verification.sol at master · NilFoundation/ton-proof-verification-contest · GitHub