【发布时间】:2019-08-07 14:33:06
【问题描述】:
我遇到了 remix.ethereum.org 上的 blockhash 函数的问题。 尽管多次尝试使用不同的代码,blockhash 函数总是会导致问题,结果是所有变量都返回零值。
在以下情况下,_previousBlockNumber 变量始终返回零。 如果blockhash函数行被注释掉,那么错误就不会发生,并且至少_previousBlockNumber变量可以正确返回。
我尝试了几种不同版本的编译器。
pragma solidity ^0.5.5;
contract Test {
constructor() public {
}
function rand() public view returns(uint,bytes32) {
uint _previousBlockNumber;
bytes32 _previousBlockHash;
_previousBlockNumber = uint(block.number - 1);
bytes32 _previousBlockHash = bytes32(blockhash(_previousBlockNumber));
return (_previousBlockNumber,_previousBlockHash);
}
}
这是一个错误问题?
感谢您的帮助。
【问题讨论】:
-
嗨,试着让你的函数不是“查看”,你可以看到如果执行了分配,事务确实会恢复。因此,由于您正在执行“本地”读取,因此您收到 0。也许,这是 Javascript VM 的问题。您是否尝试运行本地网络并将混音附加到正在运行的实例,我认为在这种情况下它应该可以工作
标签: blockchain ethereum solidity remix tron