Multiprizer DApp has been created using the state-of-the-art blockchain secure design principles, and by integrating best practices formulated by several top sources such as Consensys and OpenZeppelin. The ‘Provable Random’ which is used to decide on the winner is derived from the most powerful and credible method of random number generation currently possible in blockchain – Ledger based Random with on-chain proof verification, of Oraclize.

This means that we are implementing random created by Ledger hardware devices and also deriving hardware & software based proof certificates, which is then verified inside the Smart Contract code itself! This makes sure that an insecure random cannot be generated or influenced by any of the party in blockchain, be it malicious player, or a rogue miner(s), or even the admin/creator of the game.

It is even possible for anyone to manually verify the proofs if they want to. This would require subscribing to the event generated by the Multiprizer Oraclize contract:

Ethereum Mainnet: 0x8E19A78146c50810da3FA93C3Adf237f8de70306

Ethereum Ropsten (testnet): 0xCb061C64c6Cfa3DC923a6a620A6E7BEFf0A0D16d

One could analyze the event arguments of the event object emitted from the above mentioned Multiprizer Oraclize Contract, and verify the Oraclize Proof manually as described in the article here. The complete event object is:

OraclizeValues(Oraclize_ID, isProofValid, Oraclize_Proof, bytes(RandomValue))

Event Variable Name Variable Description
OraclizeValues: Name of the Event Log
Oraclize_ID: Oraclize ID generated by Oraclize API
isProofValid: true (1) if positively validated, false (0) otherwise
Oraclize_Proof: The proof data created by Ledger Hardware
bytes(RandomValue): The string with random value - ‘RandomValue’, converted in bytes format

Next: Decentralization