Chain Link VRF 获取随机数耗时较长
Chain Link VRF takes a long time to get random numbers
描述
获取随机数需要很长时间。执行 getRandomNumber 函数后,几分钟后我就可以与我的随机数进行交互了。
基本上,我单击 getRandomNumber 后必须等待 2-3 分钟,直到随机数出现在 randomResult 变量中。
重现步骤
- 前往此处查看文档:https://docs.chain.link/docs/get-a-random-number/
- 向下滚动并单击“使用 Remix 部署此合约”(蓝色轮廓 btn)
- 单击类似于 536123b61468ad4442cfc4278e8de577 的文件夹之一,然后单击 RandomNumberConsumer.sol
- 将 LINK 令牌、VRF 协调器和密钥哈希替换为 rinkeby 独有的 https://docs.chain.link/docs/vrf-contracts/
- 导航到 Solidity 编译器选项卡并单击编译 RandomNumber.sol。
- 在 Rinkeby 上部署合约
- 复制到合约地址并发送 LINK 代币为合约提供资金。
- 点击 remix 中的橙色 getRandomNumber 按钮
- 点击 randomResult 并观察 randomResult 中的值改变需要多长时间。 (一直点击直到它最终改变)
附加信息
我不确定这种行为是故意的还是我需要更改代码。理想情况下,我希望在 getRandomNumber 函数完成执行后获得 randomResult 的值。现在我不知道 randomResult 的值什么时候会出现。
Chainlink VRF 遵循 request and receive 获取数字的循环。这意味着,它必须在区块链之外查看才能获得响应。
因此,实际发生了 2 笔交易:
- 您请求的交易
- 响应交易
有必要像这样查看区块链外部,否则您将得到一个确定性数字而不是随机数。返回随机数的速度取决于您使用的区块链的出块时间。
因此对于以太坊,返回随机数的最快时间是 2 * 块时间,或大约 30 秒。
在像多边形这样更快的链上,这个数字要低得多。
描述
获取随机数需要很长时间。执行 getRandomNumber 函数后,几分钟后我就可以与我的随机数进行交互了。
基本上,我单击 getRandomNumber 后必须等待 2-3 分钟,直到随机数出现在 randomResult 变量中。
重现步骤
- 前往此处查看文档:https://docs.chain.link/docs/get-a-random-number/
- 向下滚动并单击“使用 Remix 部署此合约”(蓝色轮廓 btn)
- 单击类似于 536123b61468ad4442cfc4278e8de577 的文件夹之一,然后单击 RandomNumberConsumer.sol
- 将 LINK 令牌、VRF 协调器和密钥哈希替换为 rinkeby 独有的 https://docs.chain.link/docs/vrf-contracts/
- 导航到 Solidity 编译器选项卡并单击编译 RandomNumber.sol。
- 在 Rinkeby 上部署合约
- 复制到合约地址并发送 LINK 代币为合约提供资金。
- 点击 remix 中的橙色 getRandomNumber 按钮
- 点击 randomResult 并观察 randomResult 中的值改变需要多长时间。 (一直点击直到它最终改变)
附加信息
我不确定这种行为是故意的还是我需要更改代码。理想情况下,我希望在 getRandomNumber 函数完成执行后获得 randomResult 的值。现在我不知道 randomResult 的值什么时候会出现。
Chainlink VRF 遵循 request and receive 获取数字的循环。这意味着,它必须在区块链之外查看才能获得响应。
因此,实际发生了 2 笔交易:
- 您请求的交易
- 响应交易
有必要像这样查看区块链外部,否则您将得到一个确定性数字而不是随机数。返回随机数的速度取决于您使用的区块链的出块时间。
因此对于以太坊,返回随机数的最快时间是 2 * 块时间,或大约 30 秒。
在像多边形这样更快的链上,这个数字要低得多。