Blockchain

BlockHash 用於隨機數生成

  • November 15, 2017

我正在設計一個彩票智能合約。中獎彩票號碼是從彩票池中抽取的。為此,我使用以下程式碼:

bytes32 blockhash = block.blockhash(block.number - 1);
uint32 winner = uint32(blockhash) % ticketamount;

這是一種可靠且安全的方法嗎?我在網上閱讀了有關使用區塊雜湊的風險以及如何操縱它的資訊,但是我並不完全理解所涉及的風險,並希望進一步澄清使用上述程式碼的安全性。

這不安全!

一個人在看到一個帶有雜湊值的區塊後,可以等待以他們的賭注發布交易,這將使他們獲勝!他們可以使用高額交易費來獲得將他們的賭注包含在下一個區塊中的好機會,屆時他們將獲勝。

彩票的隨機數生成器當然應該始終使用賭徒下注時尚不知道的隨機數。這意味著您不能使用過去已知的數字,例如前一個區塊雜湊。

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