问题描述
我正在尝试围绕 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 代币?)
我可能以错误的方式看待这个问题,但文档中似乎没有很好地描述可扩展性,并且仅从测试/测试网络的角度来看。谢谢。
解决方法
您可以:
-
将费用直接转给调用方
需要
LINK
付款,或其他支付 oracle 请求费用的付款方式 -
以较小的频率请求 oracle 数据(如果您的用例允许)
您是否从预言机收到了一些价格信息?每天更新一次价格信息而不是每小时更新一次是否足够?
-
改变你的合约逻辑,不需要(那么多)oracle 数据
您的工厂真的需要链下随机数生成吗?从区块哈希、难度等中生成“随机”数字还不够吗?