首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chainlink.Request没有‘add’函数

Chainlink.Request没有‘add’函数
EN

Stack Overflow用户
提问于 2021-06-16 10:18:44
回答 1查看 212关注 0票数 2

现在我使用的是这个依赖项:"@chainlink/contracts": "^0.1.7"和solc v0.8

面对这个问题:Member "add" not found or not visible after argument-dependent lookup in struct Chainlink.Request memory

意思是Chainlink.Request没有add函数..。请告诉我怎么修理它。

代码语言:javascript
复制
...
import "@chainlink/contracts/src/v0.8/dev/ChainlinkClient.sol";

contract ContractName is Ownable, ChainlinkClient {
    constructor() {
         setPublicChainlinkToken();
    }

    function requestData(
        address _oracle,
        bytes32 _jobId,
        string memory _endpoint,
        string memory _round,
        string memory _seasonId
    ) public {
        Chainlink.Request memory req =
            buildChainlinkRequest(_jobId, address(this), this.fulfill.selector);
        req.add(req, "endpoint", _endpoint);
        req.add(req, "round", _round);
        req.add(req, "season_id", _seasonId);

        sendChainlinkRequestTo(_oracle, req, fee_);
    }

在这里输入图像描述

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-21 22:43:59

编辑:总是厌倦仍然在开发部门的合同。话虽如此,v0.8 Chainlink客户端现在已经脱离了dev分支,这个答案仍然是相关的。

我也遇到了同样的问题,联系了Chainlink团队的Avneet。结果发现,这是由从0.7开始的稳健语言的变化造成的:

在第0.7节中的重大变化: 使用A for B只影响合同中提到的合同。以前,这种影响是遗传的。现在,您必须在使用该特性的所有派生契约中重复using语句。https://docs.soliditylang.org/en/v0.7.0/070-breaking-changes.html

因此,您需要将using Chainlink for Chainlink.Request;添加到合同的顶部,如下所示:

代码语言:javascript
复制
contract MyClient {
  using Chainlink for Chainlink.Request;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68000782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档