该怎么猜智能合约上的随机数?
在链上创建随机数是一项复杂的任务。事实上,有一些方法可以做到这一点,但总的来说,强烈建议在链下进行,因为几乎所有用于熵的输入都是公开的,或者在某种程度上可以被操纵。
幸运的是,这个挑战要求我们猜测链上创建的一个“随机”数字。这是怎么回事?
猜随机数字挑战智能合约代码
合约的第一行是一个uint8变量,answer。记住uint8变量最多包含256个可能的整数:0到255。
这个变量在构造函数中被分配给两个输入的 keccak256 哈希:包含我们部署交易的那个区块的前一个区块的blockhash (block.blockhash(block.number - 1)
, of type bytes32)和我们的区块被挖的时间戳*(now
, of type uint256)*。
请记住,这个合约使用的是编译器版本^0.4.21,从那以后,一些语法发生了变化:block.blockhash()现在是blockhash(),now现在是block.timestamp。
正如我