AnnouncementsMiningZcoin Blog

MTP Open-source Miner Bounty Challenge

By July 9, 2017 No Comments

Zcoin is sponsoring a prize fund of $21,000 for the development of open source miners for the MTP protocol as implemented in Zcoin.


Winner of CPU miner: USD7,000.00

Winner of AMD GPU miner: USD7,000.00

Winner of NVidia GPU miner: USD7,000.00

The prizes shall be paid in Bitcoin equivalent (Bitstamp pricing) or Zcoin equivalent (Bittrex pricing) at the respective winner’s choice. The price will be determined on the time and date the winners are announced.


Anyone who can speak English and has reached the age of majority in their country of residence. Teams can be formed however one person shall be designated as the contact person and shall be the sole recipient of any prize money. All contestants must have a Github account.

Djm34 as our team’s miner developer is eligible to participate only if the following are satisfied:

  • Reference miners (unoptimized) given for all CPU, AMD and Nvidia are released by djm34 and open sourced on his public Github with documentation
  • There is at least one other contestant in the category he competes in. If his is the only submission, the prize money shall be in the judge’s discretion to decide on how it shall be dealt with.


Documentation and completeness:

Accurate and comprehensive documentation included with the submission (e.g., description and rationale of design, expected performance).

Accurate documentation on where the submission may be optimized or improved further.


The submission can be built/run on a variety of systems various popular distributions of Linux (Centos and Ubuntu at the very least)) and Windows. Mac is optional but looked at favorably.

The submissions for CPU would run on modern CPUs in the past 5 years.

The submissions for GPUs can work on a variety of modern GPU cards in general:

  • AMD Radeon R7 series and up
  • Nvidia Geforce 700 series and up


Whether the submission has self-testing capabilities or can be easily tested.


This is the most important criteria but not the sole determinant as a miner that cannot be worked on by others upon because of poor documentation or incompatibility with systems is less valuable than a well documented, easily improved upon less performing miner.

The hash rate of the submission over a variety of systems. Please in your documentation provide instructions on intensity/thread settings.

Submission and Deadline

The deadline of submission for this competition shall be the 9th August 2017 6.00PM GMT+8. Early submissions are allowed and will be looked at favorably by the judges.

Update 9 August 2017:
We are extending the deadline for this competition until the 30th September 2017  6.00PM GMT+8 due to changes in the MTP code.

The MTP code can be obtained from the mtptest Github branch.

Submissions can be amended until the deadline through making commits through the Github repository specified for Challenge purposes.

Other requirements:

  • The CPU code should be in plain C99, optionally with use of intrinsics, inline or standalone assembly, pthreads or/and OpenMP.
  • The GPU code for AMD should be in OpenCL and for Nvidia should be in CUDA.
  • The submission must include a licensing statement making the Submission available under the MIT license. As an exception, submissions under other OSI-approved licenses may also be accepted when they are built upon third-party components requiring those licenses.
  • Binaries should be made available for Windows and Linux. Mac binaries are optional but would be considered favorably. Build instructions must be provided.
  • Performance will be evaluated on the following parameters:

#define argon_outlen 32
#define argon_timecost 1
#define argon_memcost 2*1024*1024 //32*1024*2 //1024*256*1 //2Gb
#define argon_lanes 4
#define argon_threads 1
#define argon_hashlen 80
#define argon_version 19
#define argon_type 0 // argon2d
#define argon_pwdlen 80 // hash and salt length
#define argon_default_flags 0
#define argon_segment_length argon_memcost/(argon_lanes * ARGON2_SYNC_POINTS)
#define argon_lane_length argon_segment_length * ARGON2_SYNC_POINTS
#define mtp_L 70

  • Miners must not use cheating strategies and shall work as described as in the MTP paper. Flaws/code bugs will be subject to this separate bounty.

Submissions will be made to the team’s e-mail at [email protected] with the subject title: Zcoin Miner Challenge Submission: [SUBMITTER’S NAME] and shall include:

  • Name of Submitter:
  • If part of a team, names of other team members:
  • Github address of submission
  • Testing results on systems the submitter has tested on.

Info of Changes from Reference Spec in MTP Paper

Some minor changes have been made to the reference implementation in the MTP paper (or where the paper was silent).

  • Uses sha256 instead of blake2b in Merkel tree (as we use hash target using uint256)
  • Added X[i]’s proof, not solely X[i] into block header
  • Included X[i_j] into the opening
  • Added block header except nonce as input for compress function in argon2