Consensus

如果合約有隨機輸出,如何在狀態中達成共識?

  • January 9, 2017

我對乙太坊很陌生,所以請原諒我在這個問題上缺乏細節和意識。

我已經看到一些建立在乙太坊上的賭博應用程序,我想知道網路如何就隨機過程的結果達成一致,以包含在區塊鏈中。因為當然,如果合約產生隨機結果,那麼每次執行時都會產生不同的結果。

謝謝!

合約提供確定性輸出,智能合約中沒有 rand 函式。您可以嘗試使案例如塊時間戳作為基礎編寫自己的 rand 函式。但是,對於 vdice.io,我查看了(只是一目了然)我發現他們使用 oracle(外部源)獲取隨機值的程式碼:

bytes32 myid = oraclize_query("URL", "json(https://api.random.org/json-rpc/1/invoke).result.random.data.0","BBX1PCQ9134839wTz10OWxXCaZaGk92yF6TES8xA+8IC7xNBlJq5AL0uW3rev7IoApA5DMFmCfKGikjnNbNglKKvwjENYPB8TBJN9tDgdcYNxdWnsYARKMqmjrJKYbBAiws+UU6HrJXUWirO+dBSSJbmjIg+9vmBjSq8KveiBzSGmuQhu7/hSg5rSsSP/r+MhR/Q5ECrOHi+CkP/qdSUTA/QhCCjdzFu+7t3Hs7NU34a+l7JdvDlvD8hoNxyKooMDYNbUA8/eFmPv2d538FN6KJQp+RKr4w4VtAMHdejrLM=", ORACLIZE_GAS_LIMIT + safeGas);

合約中沒有真正的隨機性。

在這種情況下,合約要求 Oraclize 從 random.org 獲取一個隨機。你相信 random.org 是誠實的,而且 Oraclize 不會多次呼叫 random.org 來尋找有益於它的數字。

引用自:https://ethereum.stackexchange.com/questions/11256