现在我使用的是这个依赖项:"@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_);
}发布于 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;添加到合同的顶部,如下所示:
contract MyClient {
using Chainlink for Chainlink.Request;https://stackoverflow.com/questions/68000782
复制相似问题