![](/img/trans.png)
[英]Building a chainlink node - ethereum ChainID doesn't match chainlink config.ChainID
[英]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.