1

我一直在使用下面的一段代码,它一直运行良好。但是,今天我收到以下错误:

类型错误:在结构 >Chainlink.Request 内存中进行参数相关查找后,未找到成员“添加”或不可见。

我尝试将我的 Solidity 版本切换到 0.6.6,然后将 Chainlink 版本切换到 v0.6,它似乎与旧版本完美配合。

有人对可能出现的问题提出建议吗?

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.6;

import "@chainlink/contracts/src/v0.8/ChainlinkClient.sol";

    contract APIConsumer is ChainlinkClient {


    uint256 public volume;

    address private oracle;
    bytes32 private jobId;
    uint256 private fee;
    address public _link = 0xa36085F69e2889c224210F603D836748e7dC0088;

    constructor() {
        if (_link == address(0)) {
            setPublicChainlinkToken();
        } else {
            setChainlinkToken(_link);
        }
        oracle = 0x56dd6586DB0D08c6Ce7B2f2805af28616E082455;
        jobId = "b6602d14e4734c49a5e1ce19d45a4632";
        fee = 0.1 * 10 ** 18; // 0.1 LINK
    }


    function requestVolumeData() public returns (bytes32 requestId) 
    {
        Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.fulfill.selector);
    
        // Set the URL to perform the GET request on
        request.add("get", "https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&tsyms=USD");
    
   
        request.add("path", "RAW.ETH.USD.VOLUME24HOUR");
    
        int timesAmount = 10**18;
        request.addInt("times", timesAmount);
    
        // Sends the request
        return sendChainlinkRequestTo(oracle, request, fee);
    }   


    function fulfill(bytes32 _requestId, uint256 _volume) public recordChainlinkFulfillment(_requestId)
    {
        volume = _volume;
    }
}
4

1 回答 1

0

是的!好问题。

这是对较新合同的更新。

添加这一行:

contract APIConsumer is ChainlinkClient {
    using Chainlink for Chainlink.Request; // This is the new line
于 2021-08-27T21:05:03.120 回答