动态资助 Chainlink VRF

问题描述

我正在尝试围绕 Chainlink VRF 如何集成到 solidity 合约中,例如在这随机生成的 NFT 教程中:https://blog.chain.link/random-numbers-nft-erc721/

我的问题是关于预言机的实际资金。在 Chainlink VRF 文档中,显示此警告:“除非您部署的合约有足够的 LINK 来支付,否则请求随机性将失败。了解如何获取测试网 LINK 并为您的合约提供资金。”举例说明了如何通过 Metamask 和 Remix 为 VRF 合同提供资金。

但是,我不确定这将如何大规模运作。如果您的 NFT“工厂”变得非常受欢迎,每天/小时/分钟可能会有许多请求,您是否只是期望提前运行此 VRF 合同的资金以避免上述警告(似乎成本不会微不足道/难以预测)?

或者,如果您希望您的 NFT 消费者为其提供资金,您是否必须构建一些将 Ether 转换为 Link 然后将其发送到 oracle 合约的逻辑? (或者让他们去购买 Link 代币?)

我可能以错误的方式看待这个问题,但文档中似乎没有很好地描述可扩展性,并且仅从测试/测试网络的角度来看。谢谢。

解决方法

您可以:

  1. 将费用直接转给调用方

    需要 LINK 付款,或其他支付 oracle 请求费用的付款方式

  2. 以较小的频率请求 oracle 数据(如果您的用例允许)

    您是否从预言机收到了一些价格信息?每天更新一次价格信息而不是每小时更新一次是否足够?

  3. 改变你的合约逻辑,不需要(那么多)oracle 数据

    您的工厂真的需要链下随机数生成吗?从区块哈希、难度等中生成“随机”数字还不够吗?