You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chainlink VRF v1主网彩票合约报错‘Below agreed payment’求助

问题根源

'Below agreed payment'错误说明你请求随机数时设置的2 LINK手续费,低于当前Key Hash对应的VRF Coordinator要求的最低支付金额。主网的VRF最低手续费会随链上运行成本调整,官方文档的参数可能未实时更新。

解决步骤

  • 确认当前最低手续费要求
    调用VRF Coordinator合约的getConfig(bytes32 _keyHash)方法,传入你使用的Key Hash(0xAA77729D3466CA35AE8D28B3BBAC7CC36A5031EFDC430821C02BC31A238AF445),获取返回的minPayment参数,这个值就是当前该Key Hash要求的最低LINK手续费。你可以在区块浏览器上直接调用该合约的只读方法查询。

  • 调整请求手续费至达标
    如果查询到的minPayment高于2 LINK,需要修改你合约中请求随机数的逻辑,将手续费参数设置为不低于这个最低值。比如在调用requestRandomness()或requestRandomWords()时,把fee参数更新为符合要求的LINK数量(注意单位是wei,1 LINK = 1e18 wei)。

  • 关于订阅模式的调整
    如果你目前用的是直接请求模式,切换到订阅模式可以更灵活管理费用:

    1. 在Chainlink VRF订阅系统创建订阅,存入足够的LINK;
    2. 将你的彩票合约添加为订阅的消费者;
    3. 修改合约逻辑,使用订阅模式的请求方法(如requestRandomWords()传入订阅ID,无需单独设置fee参数),每次请求的费用会自动从订阅余额中扣除,无需在合约内保持LINK余额,也能避免单个请求手续费不足的问题。
  • 关于低Gas手动调用的误区
    Gas费用(ETH支付)和VRF手续费(LINK支付)是完全独立的两个概念。'Below agreed payment'是LINK手续费未达最低要求导致的,和ETH Gas无关,所以提高Gas限制或在低Gas时调用都无法解决这个问题。

后续验证

调整完成后,先在测试网验证手续费设置正确,再部署到主网。请求随机数前确保合约(或订阅)内的LINK余额充足,然后通过Tenderly模拟调用确认错误消失,再执行真实调用。

内容的提问来源于stack exchange,提问作者WeebleWobbinsinWibbenses99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:07:28