solidity - Chainlink VRF:无法获得随机数组
问题描述
我正在尝试编辑此演示:https ://www.youtube.com/watch?v= JqZWariqh5s 以获取带有随机数的数组。
pragma solidity 0.6.6;
import "https://raw.githubusercontent.com/smartcontractkit/chainlink/master/evm-contracts/src/v0.6/VRFConsumerBase.sol";
contract RandomNumberConsumer is VRFConsumerBase {
bytes32 internal keyHash;
uint256 internal fee;
uint256 public randomResult;
constructor() VRFConsumerBase(
0xdD3782915140c8f3b190B5D67eAc6dc5760C46E9, // VRF Coordinator
0xa36085F69e2889c224210F603D836748e7dC0088 // LINK Token
) public
{
keyHash = 0x6c3699283bda56ad74f6b855546325b68d482e983852a7a82979cc4807b641f4;
fee = 0.1 * 10 ** 18; // 0.1 LINK
}
function getRandomNumber(uint256 userProvidedSeed) public returns (bytes32 requestId) {
return requestRandomness(keyHash, fee, userProvidedSeed);
}
function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override {
randomResult = randomness.mod(50).add(1);
}
function getDraw(uint256 userProvidedSeed) public returns(uint256[] memory) {
uint256[] memory draw = new uint256[](5);
for(uint i = 0; i < 5; i++) {
draw[i] = getRandomNumber(userProvidedSeed);
}
return draw;
}
}
我收到此错误: contracts/RandomNumbers.sol:33:24: TypeError: Type bytes32 is not implicitly convertible to expected type uint256. draw[i] = getRandomNumber(userProvidedSeed); ^-------------------^
我究竟做错了什么 ?
解决方案
您不能将 bytes32 转换为 uint256。
您的draw
数组是一个uint256
s 数组。getRandomNumber
返回一个bytes32
。
在这条线上:
draw[i] = getRandomNumber(userProvidedSeed);
您正在设置draw[i]
为bytes32
. draw[i]
必须是 auint256
并getRandomNumber(userProvidedSeed)
返回 abytes32
看:
function getRandomNumber(uint256 userProvidedSeed) public returns (bytes32 requestId)
您可能想要做的是让您的绘图发生在fulfillrandomness
函数中,因为它看起来像您想要做的:
draw[i] = randomResult;
推荐阅读
- odoo - 如何在操作菜单odoo下编写删除组?
- java - 通过忽略所有现有消息开始仅使用来自 Kafka 主题的最新消息
- python - CS50 Python & JS Web:尝试“迁移”后无法操作网站
- java - 在 android studio 上运行时,资源“attr/actionBarSize”的重复值与配置“DEFAULT”和产品“保持一致”
- java - Java中的快捷键(助记符)
- excel - 如何为匹配的单元格自动复制不同工作表中的条目
- php - Implement slack with laravel logs
- powershell - 使用“运行方式”帐户与来自 Azure 自动化的团队联系
- node.js - Node.js MongoError: E11000 重复键错误集合:
- postgresql - PostgreSQL - 将数字视为字符串,大多数聚合函数不起作用