主网已部署VRF合约将ChainLink fee设为0.1 LINK而非2 LINK无法运行如何修复?
Chainlink VRF费用上限设置错误解决方案
可直接修改fee的场景
如果你的VRF消费者合约预留了owner权限的fee修改接口,直接调用该接口将fee值更新为2 * 10 ** 18即可,无需重新部署合约,也不需要修改主合约的关联配置。
需重新部署合约的场景
如果fee变量在合约中定义为不可变变量,且没有预留修改接口,需按以下步骤操作:
- 修改构造函数中的fee赋值逻辑,将原错误的0.1 LINK改为要求的2 LINK,修正后的代码参考:
constructor () VRFConsumerBase( 0xf0d54349aDdcf704F77AE15b96510dEA15cb7952, // VRF Coordinator 0x514910771AF9Ca656af840dff83E8264EcF986CA// LINK Token ) { keyHash = 0xAA77729D3466CA35AE8D28B3BBAC7CC36A5031EFDC430821C02BC31A238AF445; fee = 2 * 10 ** 18; // 2 LINK }
- 在主网部署修正后的新VRF消费者合约
- 给新合约转入足够覆盖VRF请求的LINK代币
- 修改主合约中关联的VRF消费者合约地址,替换为新部署的合约地址
- 若你持有旧VRF合约的owner权限,可调用旧合约的
withdrawLINK()方法提取剩余的LINK代币,转入新合约复用,避免资产浪费
注意:如果VRF消费者合约有调用白名单限制,需要提前将主合约地址添加到新VRF合约的白名单中,避免调用失败。
内容的提问来源于stack exchange,提问作者un4given
相关产品推荐
相关产品推荐

