我在试图编译时遇到这个错误
function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override {
randomResult = randomness.mod(20).add(1);
}我在本教程上看到的。
发布于 2022-01-04 11:22:12
使用mod操作符。
uint256 public randomResult;
function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override {
randomResult = (randomness % 50) + 1;
}发布于 2022-01-04 23:13:18
.add()/.sub()/.mul()/.div()函数来自实现检查算法的库。两种流行的是OpenZeppelin的SafeMath和dapphub的ds-数学。
例如,下面是如何使用SafeMath:
import {SafeMath} from "@openzeppelin/contracts/utils/math/SafeMath.sol";
contract C {
using SafeMath for uint256;
uint256 public randomResult;
function fulfillRandomness(bytes32 requestId, uint256 randomness) internal {
randomResult = randomness.mod(20).add(1);
}
}但是,请注意,如果您使用的是编译器的最新版本--从0.8.0开始使用所有仿真器操作符自动检查是否溢出。,那么您实际上并不需要使用这样的库,这样您就可以直接使用操作符而不会丢失任何检查:
randomResult = randomness % 50 + 1;https://ethereum.stackexchange.com/questions/117952
复制相似问题