簡體   English   中英

Chainlink.Request 沒有 `add` 功能

[英]Chainlink.Request doesn't have `add` function

現在我正在使用這個依賴項: "@chainlink/contracts": "^0.1.7" 0.1.7 "@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功能...請告訴我如何修復它。

...
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_);
    }

在此處輸入圖片說明

編輯:總是對仍在開發分支中的合同感到厭煩。 話雖如此,v0.8 Chainlink Client 現在不在 dev 分支中,這個答案仍然相關。

我遇到了同樣的問題,並聯系了 Chainlink 團隊的 Avneet。 原來這是由從 v0.7 開始的 Solidity 語言的變化引起的:

v0.7 中的重大變化:

對 B 使用 A 只會影響它提到的合約。以前,效果是繼承的。 現在,您必須在所有使用該功能的派生合約中重復 using 語句。 https://docs.soliditylang.org/en/v0.7.0/070-break-changes.html

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

contract MyClient {
  using Chainlink for Chainlink.Request;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM