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

Chainlink v0.8调用requestOracleData触发白名单函数错误如何解决

错误原因
  1. 冗余调用冲突:你在createRequestTo函数中同时调用了requestOracleData()和sendChainlinkRequestTo()两个Chainlink请求发送方法,v0.8版本的ChainlinkClient库对请求逻辑做了更严格的校验,不再兼容这种冗余写法。
  2. 方法适配错误:requestOracleData()是专门为支持大响应的新版Operator合约设计的请求方法,调用时要求目标Operator合约将该方法加入白名单。你当前使用的Rinkeby测试网Oracle还是旧版普通Oracle,没有开放该方法的白名单权限,所以触发了execution reverted: Must use whitelisted functions报错。
修复方案

根据你的实际需求二选一即可:

方案一:需要使用大响应功能(切换v0.8的初衷)

  • 删除sendChainlinkRequestTo(RINKEBY_ORACLE, req, FEE);这行代码,仅保留requestOracleData(req, FEE);
  • 将当前使用的旧版Rinkeby Oracle地址、JobID替换为支持大响应的Operator合约地址和对应的大响应JobID
  • 将回调函数fulfill的入参bytes32 _data修改为bytes memory _data,适配大响应的返回格式

方案二:不需要大响应功能,仅保留v0.6版本的原有功能

直接删除requestOracleData(req, FEE);这行冗余代码即可,原有sendChainlinkRequestTo逻辑可以正常运行,和v0.6版本行为完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:57:02