【发布时间】:2021-10-05 09:57:27
【问题描述】:
我试图在与 Chainlink VRF 的 1 笔交易中获得一个可靠的随机数。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
import "@chainlink/contracts/src/v0.8/VRFConsumerBase.sol";
contract RandomNumberConsumer is VRFConsumerBase {
bytes32 internal keyHash;
uint256 internal fee;
uint256 internal randomResult;
constructor()
VRFConsumerBase(
0xdD3782915140c8f3b190B5D67eAc6dc5760C46E9, // VRF Coordinator
0xa36085F69e2889c224210F603D836748e7dC0088 // LINK Token
)
{
keyHash = 0x6c3699283bda56ad74f6b855546325b68d482e983852a7a82979cc4807b641f4;
fee = 0.1 * 10 ** 18; // 0.1 LINK (Varies by network)
}
function getRandomNumber() public returns (bytes32 requestId) {
require(LINK.balanceOf(address(this)) >= fee, "Not enough LINK - fill contract with faucet");
return requestRandomness(keyHash, fee);
}
function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override {
randomResult = randomness;
}
function letsGo() public {
bytes32 requestId;
requestId = getRandomNumber();
fulfillRandomness(requestId, 123456);
}
}
区块链有没有办法获取randomResult?
我正在专门查看我的 letsGo 函数。
【问题讨论】:
-
你的
uint256 internal randomResult;是内部的,你能把它改成public吗?另外,你的letsGo什么也没做...... -
我可以公开,我的问题是,是否可以在区块链中找到随机数?我的 let's go 只是一次性启动进程。
-
chainlink VRF 是一个 2 交易过程。第一个请求随机数的事务,第二个返回随机数的事务。 1 次无法得到随机数。
-
号码是
123456吗? -
不,randomResult 就像 515118454651515164848941000151515118454651515164848941000151
标签: blockchain ethereum solidity remix chainlink