Chainlink多变量响应是否支持单次请求返回多个变量
问题解答
这不是Chainlink第一版多变量响应(legacy JSON格式)的固有局限,完全可以通过自定义编写job spec实现仅发起1次API调用,就从单次响应结果中提取全部所需的多个字段返回,无需重复调用同个API。
官方示例多次调用的原因
官方给出的示例job spec是为了简化演示逻辑,给每个返回变量都配置了完整的「发起HTTP请求→提取对应字段→上链返回」独立流程,才会出现3个值就要调用3次API的情况,这只是演示用的最简写法,不是强制要求。
单次API调用的实现思路
你只需要调整job spec的任务流水线顺序即可:
- 第一步仅执行1次HTTP请求任务,将完整的API响应结果暂存在节点的任务缓存中
- 后续依次添加多个
jsonparse解析任务,分别从已经缓存的响应结果里提取不同的目标字段 - 最后将所有提取完成的字段按要求打包,统一返回上链即可
额外注意点
- 要确保返回的多个值的类型、顺序和智能合约中定义的接收参数完全匹配,避免解析出错
- 如果单次API返回的数据量过大,需要提前评估gas消耗和Chainlink节点的处理阈值,避免任务执行失败
内容的提问来源于stack exchange,提问作者Harry Papacharissiou
相关产品推荐
相关产品推荐

