Chainlink 反应热烈

问题描述 投票:0回答:1

我从 chainlink 文档运行此代码,但没有获得图像。

function requestBytes() public returns (bytes32 requestId) {
    address oracle = "0xc57B33452b4F7BB189bB5AfaE9cc4aBa1f7a4FD8";
    bytes32 specId = "7a97ff8493ec406d90621b2531f9251a";
    uint256 payment = 100000000000000000;
    Chainlink.Request memory req = buildChainlinkRequest(specId, address(this), this.fulfillBytes.selector);
    req.add("get","https://ipfs.io/ipfs/QmZgsvrA1o1C8BGCrx6mHTqR1Ui1XqbCrtbMVrRLHtuPVD?filename=big-api-response.json");
    req.add("path", "image");
    return sendChainlinkRequestTo(oracle, req, payment);
}

event RequestFulfilled(
    bytes32 indexed requestId,
    bytes indexed data
);

function fulfillBytes(
    bytes32 requestId,
    bytes memory bytesData
)
    public
    recordChainlinkFulfillment(requestId)
{
    emit RequestFulfilled(requestId, bytesData);
    data = bytesData;
    url = string(data);
}
ethereum solidity ipfs chainlink
1个回答
0
投票

解决作业执行问题的最佳方法是检查您的预言机合约,以了解相关区块浏览器中最近的任何交易:

  • 如果在相关时间范围内您的预言机合约中没有任何交易,这可能意味着 Chainlink 节点内的作业运行出错。检查您的 Chainlink 节点日志(或从 Chainlink GUI 中导航到相应的作业运行)以获取更多信息。

  • 如果您的预言机合约在相关时间范围内最近有一笔交易,但交易因

    out of gas
    异常而失败,您将需要增加相应预言机作业的 Gas 限制,因为写入您请求的数据超出了节点配置的限制(通常为 500000 Gas)。您可以通过将
    gasLimit
    属性添加到您的
    ethTx
    作业任务来针对每个作业配置此限制:https://docs.chain.link/chainlink-nodes/oracle-jobs/all-tasks#eth -tx-任务

  • 如果您的预言机合约在相关时间范围内最近有一笔交易,但由于其他原因导致交易失败

    execution error
    ,您的消费者合约的履行函数中可能存在一些逻辑错误。检查合约的履行函数是否有编码错误,然后重试。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.