Draws based on BlockChain technology

Draw based on blockchain - version 1.3 - 24 July 2023

Concept

Ethereum LogoStarting from February 2019, United World Wrestling migrated to a new method for building its competition brackets -- blockchain technology. In order to offer a full transparency in the draw process and to provide a way for participants to check the draw if needed, UWW had been looking for a solution that would be totally outsourced, random and public. We considered tapping into weather forecasts, stock markets and even quantum randomisers, but none of these solutions provided all three key features we needed to meet our needs.

Blockchain technology, as a decentralised, public and cryptographic platform, provides everything United World Wrestling would need to be able to build a bracket while also making sure external manipulation would not be possible.

After a study of the different blockchains available we decided to use Ethereum (ETH) as it is the most used in the world and the rapidity of the block creation would provide enough random number to build brackets easily (one block every 12 seconds in average). More info on Ethereum here : https://ethereum.org/

How to go from the Ethereum Blockchain to a random draw :

The idea is to use the cryptography embedded in the Ethereum blockchain to provide a random table of numbers. A blockchain is a list of blocks (made from transactions and smart contracts calls from all around the world) which link and secure between each others thanks to SHA256 encryption model. This Hash function is processing any type of data and providing a suite 256 bits that can be used as a base for a draw if we follow couple of steps.

Exemple of SHA256 generation :

UWW : 0DADC02F53A41189C6558D203829E6B68ED69022E045D50F8F467BDD3A665207
uww : 6F21E1F18F0503E5E474862BA25F0CA54531ABA651168310B5D7B879E2FC6006
United World Wrestling : 0F81721EA7E1E4C8FC1800A289BD1AC20DBFE56071F4F2A1A853F8E4C9F2FF47

As you can see in these examples, any difference in the text would generate a complete different Hash (but the same data will always produce the same hash), this is testable on any online generator. By itself, SHA256 is not fully random, but it's very hard to predict especially when you don't know what is going to be hashed, that's where the blockchain is a key point.

To get a "Random" table of numbers to apply to our athlete's entry list, we need to use the hash of something we can't predict, like the full content of an Ethereum block for example (some of the content could be predicted by the validator but not the data we are using to create the draw). The idea therefore is to get the most recent block available (minus 5*)  at the moment of the draw and use the hashes of that block to generate the bracket. The data we decided to collect in order to generate the draw is :

  1. the hash of the block (which is generated by hashing the whole block and it's content)
  2. the hash from the previous block in the blockchain
  3. the block's nonce (or StateRoot value if nonce value is 0)

There are many different Ethereum explorers that could present in a visual way the content of the blocks, but here are a few examples : 

By exploring any block, you will find the three different inputs we use to create the random table.

To add a layer or randomness, the athlete's entry list won't be sorted by NOC's (countries) list as it has been in the past, but by Last Name via alphabetical order. This simple addition will make the event even more unpredictable as entry lists often change due to last minute withdraws or injuries.

* The fifth most recent blocks are dropped in order to prevent collision with "forked" blocks. 

The Method

The goal of the method is to be clearly defined and testable by anybody with standard tools. Here is how it's done

Steps :

  1. Getting the last block (for example block no 12345) and importing the 3 inputs (hash of the block, hash from the previous block, nonce/stateRoot)
    • Result : 4c1635de / 78de38 / 7f0c (not actual hashes, they are way longer)
  2. Concatenate the 3 inputs (putting them together, one after the other)
    • Result : 4c1635de78de387f0c
  3. Dividing the long string by 2 units
    • Result : 4c / 16 / 35 / de / 78 / de / 38 / 7f / 0c
  4. Deleting the duplicates entries
    • Result : 4c / 16 / 35 / de / 78 /     / 38 / 7f / 0c
  5. Hexadecimal conversion (to get numbers instead of letters and numbers, many converters are available online)
    • Result : 76 / 22 / 53 / 222 / 120 /     / 56 / 127 / 12
  6. Apply to the athlete's entry list sorted by Last Name (and jumping over seeds if applicable)
    • Result :
      Athlete Alastname : 76
      Athlete Blastname : 22
      Athlete Clastname : 53
      Athlete Dlastname : Seed no2
      Athlete Elastname : 222
      Athlete Flastname : Seen no1
      Athlete Glastname : 120
      Athlete Hlastname : 56
      Athlete Ilastname : 127
      Athlete Jlastname : 12

In order to allow participants to check, each bracket PDF will contain the block number it has been built on (bottom of the page). We encourage you to go and check what was the block made from, who validated it, and ensure the brackets are reflected correctly in the content of the block. An online tool has been developed to display the different steps and make the process easier to check.

You can find more details with a real case scenario, and real data, below:

Documentation about blockchain use for building brackets

 

FAQ

Why is it so complicated ?

The draw has been a sensitive subject for years and li can fear that in the past, some draws has been manipulated. The first steps taken were to create randomizers, which were highly effective, but weren't setup for independent third-party validation. To compensate and create a 100% transparent method we are basing this system on the worldwide transactions made by Ethereum, the world's largest public blockchain. In order to get a random list of numbers big enough for one category, we had to make a list of standard operations that would be accessible to everybody without specific tools. Brackets can seem complicated, so we needed to trust a process strong enough to accommodate the need for a quick, systematic check.

How can I be sure a block has been used for the bracket ?

On every bracket page, the block used for the draw will be written at the bottom with a link to its full details. UWW will soon provide an online tool to allow everybody to enter a block number and check the outcome.

I’ve checked the block for a draw and the bracket, they don’t match, what should I do ?

In this case please contact us so we can check what happened. In theory this should be impossible. The bracket might have been manipulated.

Can it be used without internet ?

Yes and no. To avoid any random number prediction extracted from blocks, Arena only keep blocks for 15 minutes. For every draw, Arena caches the +10 most recent blocks for further draws. Therefore if there is a temporary network outage, but Arena has enough blocks for the remaining draws (not used and not expired blocks), it is possible to utilise the blockchain framework for those weight categories. Otherwise the Internet connectivity must be restored in order to continue drawing with blocks

Why sorting athletes by Last Name and not NOC anymore ?

This allows for an extra layer to ensure that nobody can effectively manipulate the blockchain or its results.

When this method will be used ?

Now and for all future events.

The category I want to draw has more that 80 athletes, is a block enough for 100 numbers ?

No, but Arena has been developed to use more blocks if needed. So at the end one category could have 1, 2 or 3 blocks.

I have questions about the way it works and how strong the security is.

Please write us an email to it@uww.org and we will do our best to answer you as soon as possible.