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|