Zecnero
Testnet

Testnet rewards

Testnet coins have no value. These rewards are paid in Mainnet ZMR from the founder fund, capped at 1,000 ZMR in total, and every winner is listed here.

The rules

Testnet rewards are paid in Mainnet ZMR from the founder fund, capped at 1,000 ZMR, and every winner is listed publicly.

  • Best videos: 200 / 100 / 50 ZMR.
  • Best posts or threads: 60 / 30 / 15 ZMR.
  • Genesis Miner draw: 20 random miners get 10 ZMR each.
  • Bug bounty: up to 100 ZMR per bug. Security issues go to .
  • Tag entries #ZecneroContest and say it’s a contest entry.
  • Nothing is paid for retweets, follows or invites.
  • Entries close when the Mainnet date is announced.

The 1,000 ZMR cap

RewardAmountsMost paid
Best videos200 / 100 / 50 ZMR350 ZMR
Best posts or threads60 / 30 / 15 ZMR105 ZMR
Genesis Miner draw20 × 10 ZMR200 ZMR
Bug bountyup to 100 ZMR per bug345 ZMR
Total1,000 ZMR

The fixed prizes come to 655 ZMR: 350 + 105 + 200. That leaves 345 ZMR for bug bounties, which is where the cap binds. Bounties are paid in the order the bugs were reported, each up to 100 ZMR. When a bounty would take the total past 345 ZMR, it is paid only what is left, and bugs after that are credited on this page without a payment.

A prize that is not awarded, such as a draw with fewer than 20 Genesis Miners, is not moved to another category. The total paid never goes over 1,000 ZMR.

How to enter

  • Videos, posts and threads: publish it, tag it #ZecneroContest, and say it’s a contest entry. Then post the link in #contest-entries on the Zecnero Discord.
  • Bugs: one message per bug in #bugs on Discord, with the version, the steps to reproduce it and the logs. The first report of a bug counts.
  • Security issues: never in public. Email , encrypted with the key on the contact page if you can.
  • Genesis Miner draw: be on the Genesis Miners wall when entries close. There is nothing else to enter.

Nothing is paid for retweets, follows or invites. Entries close when the Mainnet date is announced.

The Genesis Miner draw

20 Genesis Miners get 10 ZMR each. Nobody picks them, and nobody, including the team, can know or change the result before it is drawn.

Who is in it

  • Every Genesis Miner on the wall when entries close. One entry per verified Genesis Miner: one Discord member, one address.
  • The minimum work is what verifying already needs: a block mined to your address, or accepted pool shares from the worker named with your code.
  • Before the list is frozen, admins remove duplicates, such as one person with several Discord accounts or addresses, and entries for an address the member did not mine to. Every removal is listed with the winners.
  • If there are 20 Genesis Miners or fewer, every one of them wins.

Freezing the list, and the seed

  1. When the Mainnet date is announced, entries close. At that moment the list at pool.zecnero.org/genesis.json is saved, and the announcement gives the saved file’s SHA-256. The file itself is published here.
  2. The same announcement names a Bitcoin block height: the height of the Bitcoin tip when the announcement is posted, plus 12, about two hours later. Nobody knows that block’s hash when the list is frozen.
  3. Once that block has 6 confirmations, its hash, as block explorers show it, is the input to the draw.

The algorithm

  1. Eligible list: the miners entries of the frozen file, sorted by height (lowest first), then by address (the short address, compared by Unicode code point). Entries that tie on both keep their order in the file.
  2. Seed: SHA-256 of the 32 bytes of the block hash (the 64 hex digits, decoded in the order explorers show them) followed by the 20 ASCII bytes zecnero-genesis-draw.
  3. Random numbers: number i (0, 1, 2, …) is the first 8 bytes, read as a big-endian unsigned integer, of SHA-256(seed ‖ i), with i written as 8 bytes, big-endian.
  4. A number below n: take the next random number r. If r ≥ 264 − (264 mod n), discard it and take the next one. Otherwise the result is r mod n.
  5. Shuffle: Fisher–Yates from the end. For i from N − 1 down to 1, pick j, a number below i + 1, and swap entries i and j.
  6. Winners: the first 20 entries of the shuffled list, in that order.

Check the draw yourself

genesis-draw.py runs the algorithm above. It needs Python 3.8 or later and nothing else. With the frozen file and the block hash:

python3 genesis-draw.py genesis.json <bitcoin block hash>

It prints the file’s SHA-256, which must match the announcement, the seed, and the 20 winners in order.

To check the script, or your own version of it, download genesis-draw-vector.json into the same folder and run python3 genesis-draw.py --test. The vector is a made-up list of 27 entries and a made-up block hash, not a real Bitcoin block:

Block hash00000000000000000001b817472a23e536355a411b927844d793530b22d03555
Seed08501c27e3b586b64d307d2925ae5fd1a0d4a7b00e2420b13d849165c6179e75
Numbers 0 to 26770d18e6f6fab5f 07b9f24bd2a9c9b6 613a4008d24ed8cf
First 3 winnersnmpTME…jYb2, nmDWQT…Ptnj, nmPN3p…QHmF

Winners

None yet. Entries are open until the Mainnet date is announced. Every winner, the amount they won, and every removal from the draw will be listed here.

Next: see the Genesis Miners, or start mining.