Chainlink请求未返回指定路径下uint256整数的问题咨询
问题排查及解决步骤
1. 补全必填的请求参数
你使用的标准get>uint256类型Job,绝大多数的节点任务流中默认包含乘算适配器,必须传入times参数,否则适配器会默认乘以0,最终返回结果就是0。你可以在请求参数中补充这一行:
Req.addUint("times", 1);
加在Req.add("path", "...")行之后即可。这是此类问题最常见的诱因。
2. 确认API调用本身正常
把你代码中拼接的完整serpapi请求链接(包含api_key等所有参数)直接复制到浏览器访问,确认返回内容符合预期:
- 没有鉴权报错、参数错误等异常返回
- 存在
cited_by.table[1].h_index.all字段且值为非0整数
如果API返回异常,节点解析不到对应字段自然返回0。
3. 验证链上状态配置正确
- 确认你的合约地址持有至少0.1 LINK的余额,不足以支付手续费的请求不会被节点处理
- 确认你使用的Oracle地址、JobID是对应Kovan链公开可访问的,部分节点Job有白名单限制,未授权的请求不会被节点响应
4. 链上交易排查
在Kovan链浏览器中查询你的合约地址的交易记录:
- 如果没有来自Oracle地址调用
fulfill方法的交易:说明节点未处理你的请求,问题出在请求参数错误、节点权限不足、手续费不足这几类 - 如果存在
fulfill调用记录:查看交易的输入参数,若传入的_Hindex本身为0,说明是节点侧解析API结果失败;若传入的_Hindex非0,才需要检查合约逻辑是否有异常(你的当前合约逻辑没有问题,该情况概率极低)
你可以先按照顺序排查,优先补充times参数,90%以上的同类问题都是该参数缺失导致的。
内容的提问来源于stack exchange,提问作者Kacy Adams
相关产品推荐
相关产品推荐

