Keccak

隨機數安全嗎?

  • February 13, 2019

我的想法是我們在一個塊中提出一個隨機數並將其設為私有,這樣任何人都看不到它。計時器將允許探勘幾個塊,然後revealNumber 函式允許知道秘密數字,然後生成另一個隨機數。我認為這將消除塊操作的可能性?有什麼方法可以讓某人看到私人的東西?

pragma solidity ^0.5.4;


contract SKYLotto {

 uint256 private secretNumber;
 uint256 public releasedNumber;
 uint256 public time;

   function randomGen() public {
       secretNumber = uint(keccak256(abi.encodePacked(now, msg.sender))) % 10;
       time = now + 30 seconds;
   }    

   function revealNumber() public {
     enter code here  require(now > time);
       releasedNumber = secretNumber;
       randomGen();
   }
}

是的,有人可以看到私有值。Private 只是告訴合約他們能讀什麼和不能讀什麼。人們可以從私有值中提取數據。

請看這個執行緒。並且在api for solidity 中還聲明:“您在智能合約中使用的所有內容都是公開可見的,甚至局部變數和狀態變數標記為私有。”

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