Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
oldcontestreference initial commit Apr 4, 2019
tools initial commit Apr 4, 2019
Application Form.pdf initial commit Apr 4, 2019
NOTICE initial commit Apr 4, 2019 added Pentium G4500 judging info May 3, 2019
Rules and Disclosures.pdf added NTL as eligible LGPL library May 6, 2019
classgroups.pdf initial commit Apr 4, 2019 initial commit Apr 4, 2019 initial commit Apr 4, 2019
vdf.cpp initial commit Apr 4, 2019


This is the reference implementation for the VDF contest. It includes our source code, as well as our install and run scripts.

The script is run by the server to install any dependencies, and/or compile the code. For example, for ours we are installing the GMP library and the FLINT library.

The file is what is executed to run the VDF. It takes two arguments:

  • A discriminant in hex
  • The number of iterations, in decimal

The script should output the result of the VDF (but not the proof), encoded as a, b of the final classgroup element.

VDF v2

This implementation is written in C/C++ and is based on the results of the first round of the VDF competition. During that round we were made aware of a more efficient algorithm for squaring binary quadratic forms, called NUDUPL. Akashnil also came up with a more efficient way of reducing the forms by using integer approximation. We use the GMP and FLINT libraries for their big number arithmetic and other functions, such as GCD.

A NUDUPL implementation is described in the paper Computational Aspects of NUCOMP. Our implementation is based on the work of bulaiden during the last round.

Also of particular note from the last round is Sundersoft's entry which used assembly encoding and SIMD instructions. It also contains written thoughts on how to improve the implementation further.

As well as the old reference implementation, new contestants may find our guide to classgroups a useful resource. You can also find all of the entries to the last round of the competition here.


We will be judging the SIMD/GPU track entries on a Xeon W-2123 CPU, which supports AVX-512 instructions, and a RTX 2080 GPU which supports the Cuda API.

The non-SIMD/non-GPU track entries will be judged on a Pentium G4500 system with no AVX support and no external GPU.

Every submission will be ran on a fresh install of Ubuntu Linux with super user privileges.


We have split the competition into two tracks:

  1. SIMD and GPU optimizations allowed
  2. SIMD and GPU optimizations not allowed

This is to help us separate the different kinds of optimizations - however if somebody from track 2 is confident about their entry they can submit their code to both as there is no necessity for a track 1 submission to use those techniques.

The prize will be $50,000 for the winner of each track.

Entry Forms

An Entry may be submitted by a team of individuals working collaboratively (a “Team Contestant”), in which case, each individual member of the team must complete the Entry Form and all members of the Team Contestant must designate the same point of contact to receive official Challenge correspondence.

To enter the competition, send a completed version of the Entry Form and a signed version of the Rules and Disclosures Agreement to

Have any questions? Join Chia's public Keybase group

You can’t perform that action at this time.