Oracles
根據獎勵改變隨機數的來源?
這是根據獎勵生成隨機數的可接受方式嗎?假設獎勵高到足以誘使礦工操縱區塊,那麼合約將使用 oraclize。
if (reward < x) {randNumber = (uint(keccak256(abi.encodePacked(block.difficulty))) % 100;} else {useOraclize();}
不,礦工會
block.difficulty
實時知道每個區塊的目前電流,而無需支付任何費用。這意味著無論何時reward < x
,人們都可以 100% 確定地知道您的“隨機”數字的值是多少。所以你的隨機數根本不是隨機的。