Unpredictable DAO: A DAO of unbiased, unpredictable, on-chain randomness

Intro

Hi, we are FreakCDev and Squan from Unpredictable DAO. Luckily, our team has recently won the ICE Network Challenge from Polkadot Hackathon: North America Edition, which is a big motivation for us to continue to develop Unpredictable DAO on ICE/SNOW Network and ICON. We believe that ICE/SNOW Network and ICON provide the best tooling and development environment, along with the extensive interoperability which will accelerate Unpredictable DAO’s potential in the future, so we decided it’s best to settle on this ecosystem.

Overall, Unpredictable DAO creates unbiased, unpredictable, and on-chain randomness for other dapps and systems to enhance their security, decentralization, and transparency. The dapps, systems, or users using service from Unpredictable DAO will pay fees, which will be distributed to Unpredictable DAO members having taken part in the running procedure of Unpredictable DAO.

Problems with randomness and our solution

In traditional centralized applications, services, where many people are present, don’t provide enough clarity and fairness. The centralized provider can definitely lie about randomness, cheat, and adjust results based on his bias, so we have come to a conclusion that we need a workable, unbiased, decentralized random number generator.

Environments like blockchains are decentralized but completely deterministic and isolated, thus making randomness fairly difficult to achieve. Some solutions were carried out for this problem. The common naive decision would normally be to use pseudorandom functions combined with changing properties on the blockchain to generate somewhat random numbers. This is often not a good idea because pseudorandom numbers often “look random” but are predictable or/and easily manipulated by block producers through censorship or block data modifications. So pseudorandom functions are definitely not the way to go, another solution is to use oracles. However, there are caveats in using oracles, with the main one being the lack of decentralization. Many existing oracles are either centralized or controlled by a limited group of node operators, which leads to centralization.

Blockchains and many applications running on them currently can not safely implement randomness in their smart contracts. Unpredictable DAO solves the randomness problem by creating a system where everyone can participate in the process of generating random numbers. The smart contracts using Unpredictable DAO service pay an amount of tokens, which will be distributed to all participants. Unpredictable DAO can generate random numbers on-chain, which can not be manipulated by anyone, leveraging security, and decentralization for dapps using our service.

Technical explanation

The random number generation process will be divided into 3 rounds. In the first round, participants lock an amount of money in the contract and submit a hash with the formula keccak256(value + dummy). In the second round, which happens during 7 blocks, participants will reveal value and dummy, then, funds will be returned to participants. In the third round, a random number will be generated using the formula value1 XOR value2 XOR value3 ... XOR valueN.

In round 1, we submit a keccak256 hash generated from value and dummy, with value being the data that goes into random number generation, and dummy is for entropy. The reason for a keccak256 hash is to hide the actual value which can only be revealed later in round 2. dummy is also a special property, we can see that if only keccak256(value) is used, a person might pre-calculate hashes for a lot of numbers, so he can guess which hash stands for which number, so we need dummy to make the value completely unpredictable.

In round 2, the reason why a seven-block timespan is needed is for bias and censorship resistance. It is unlikely that a single validator/miner can finalize 7 blocks in a row, so the transaction is passed to multiple block producers which should not be biased.
In round 3, values are XOR-ed together since this is by far the cheapest operation we can get for random number generation.

To prevent fraud, in round 1, participants’ funds are locked and only returned if he reveals in round 2, if he doesn’t, their fund will be divided into rewards for other participants. This system is created to fight against attacks where attackers might submit a hash in round 1 but don’t reveal it in round 2.

Economic model

First of all, participants will lock native tokens into the DAO to generate random numbers. Currently, the tokens used in this process are the token of the chain, for example, ICX, ICY, and ICZ, we have not released the token of Unpredictable DAO yet. After that, users, smart contracts, and dapps using the random number generator will pay fees to the DAO, which are then distributed to all DAO participants, along with their originally locked tokens.

According to this model, if the number of participants taking part in this process increases, the average reward for each member decreases. When the average reward of Unpredictable DAO drops lower than the interest that people can earn from other sources such as staking or Yield farming from DEX, more people will move out, which makes the average reward raised again, and more people will come back to participate in this process. Thus, the number of participants joining the process of creating randomness and the reward distributed to them are modified automatically. In the development of Unpredictable DAO, we are also going to finalize other mechanisms for staking tokens, locking tokens, and distributing rewards,…to ensure the fairness and stability of Unpredictable DAO.

Comparisons with existing solutions:

Problems with existing solutions

  • Relying on dynamic properties of the blockchain: A common naive solution that developers would think of is to rely on changing attributes from the blockchain such as blocks’ data (timestamp, hash, etc) or dynamic state properties like balances. These approaches would often make the result in favor of block producers, since they can change block’s data easily, and they can manipulate transactions’ order to gain state changes that would give out the “random” result they prefer.
  • Using VRFs from oracles: One of the most preferred solutions is to use centralized services that provide randomness for smart contracts, notably Chainlink VRFs. The problem with this approach is pretty clear, operators from the oracle can easily manipulate the randomness given.

How Unpredictable DAO differs

  • Unpredictable DAO requires 2 rounds to create a random number, with the first round used to submit masks of real values, so block producers can not pre-calculate the random number, and the second round revealing the submitted values but with a time delay to render block producers’ censorship obsolete. Overall, Unpredictable DAO can not be manipulated by block producers like the first solution mentioned.
  • Unpredictable DAO’s random number generator is decentralized with many participants joining to create a random number, whereas something like Chainlink VRFs is controlled by a small set of node operators.

Impacts on ICE/SNOW Network and the ICON ecosystem:

  • Unpredictable DAO helps bring truly unbiased and unpredictable randomness to the ICE/SNOW network and the ICON ecosystem.
  • Easily usable by any smart contracts and decentralized applications on ICE/SNOW, and through ICON BTP’s extensive interoperability, UnDAO’s RNG can also be used on existing networks like BSC, Near, Algorand, and more, bringing fair, unbiased, and unpredictable randomness to blockchain as a whole.
  • Further improve the decentralization and the security of the ecosystem as applications used to either have to use centralized randomness sources, notably from oracles like Chainlink’s VRF, or insecure randomness that is easily manipulatable, but with our random number generator, the problems are solved.
    Open many possibilities for a wide range of applications for games, NFTs, DeFi, etc, and make fair distribution and selection possible.

Our current features

  • Generating on-chain random numbers for smart contracts and dapps.
  • A simplified governance system for setting fees for smart contracts and dapps using our random number generator and rewards for participants.
  • Locking native tokens in Unpredictable DAO to earn rewards.

Potential targets with specific use cases

NFT games and metaverse

  • Making the game more fair and unmanipulated in the processes of generating Maps, generating Loot Box Contents, distributing loot items, placing Items on Maps, etc.
  • Randomly creating and distributing gaming NFT, characteristics of NFT, etc.
  • Bring true fairness to gambling games.

NFT project

  • Randomly assigning NFT Traits or assigning NFT Traits using given probability.
  • Fairness in distributing NFT, giving users access to verifiable proof that the NFT assets they get are generated and distributed using tamper-proof randomness.

Launchpad

  • Whitelisting Users for IDO Allocations in Launchpad.

DEFI

  • Staking with random rewards (like Moonpot).
  • Lottery ticket with fairness.

Airdrop platform

  • Transparently distributing airdrops.

Wait, there’s more!

Along with the development of the project and interaction with dapps, we are going to research and find other use cases to expand Unpredictable DAO! Also because we are DAO, we are driven by the community and encourage DAO members to suggest their ideals for the development of Unpredictable DAO.

Milestones

What we have done

  • Created a simplified implementation of Unpredictable DAO with the RNG and the governance token in Solidity.
  • Deployed the first implementation on the ICE’s Arctic testnet.
  • Created a simple client to participate/claim rewards/vote/withdraw.

First milestone (1 month)

  • Upgrade webapp design.
  • Run marketing campaigns, search for partnerships and cooperate with dapps
  • Create an official landing site for Unpredictable DAO.
  • Release technical papers and documentations for developers/users of our RNG.
  • Add more features and optimize for gas efficiency for Unpredictable DAO.
  • Test Unpredictable DAO on ICE Testnet, fix vulnerabilities.

Second milestone (2 months)

  • Deploy Unpredictable DAO smart contracts on ICON testnet.
  • Run marketing campaigns, search for partnerships and cooperate with dapps
  • Create Java implementation of Unpredictable DAO to be compliant with ICON’s runtime environment. (We planned to deploy on both ICON and ICE/SNOW).
  • Deploy Unpredictable DAO smart contracts on ICE/SNOW Network (if those networks go live).
  • Testing Unpredictable DAO with BTP

Third milestone (2 months)

  • Deploy Unpredictable DAO smart contracts on ICON mainnet.
  • Create token and tokenomics of Unpredictable DAO.
  • Includes bug fixes and ongoing updates
  • Run marketing campaigns, search for partnerships and cooperate with dapps
  • Interoperate with dapps cross-chain.

Budget

  • 1 Infrastructure engineer: $1,700 (5 months).
  • 1 Front-end engineer: $1,000 (2 months).
  • 1 Marketer: $1,000 (5 months).
  • 1 Business Development Executive: $1,000 (5 months).

Total budget: $20,500.

Portfolio Link

We look forward to your thoughts and suggestions about our project :smiling_face_with_three_hearts: