Chainlink 示例未更新值

Chainlink example not updating value

我正在按照 Chainlink documentation(也在下方)中的示例进行操作,并一直在混音中对其进行测试。我已经在 kovan 测试网上部署了合约并向其发送了 LINK,我能够执行 requestVolumeData() 并收到交易已完成的通知,并且我能够在 etherscan 上查看它。

但是,当检查音量值时,它总是 returns 0。我知道这可能需要一些时间,但等待 20 分钟后该值没有改变。

我已经使用以下 oracle 地址/作业 ID 进行了测试。 从例子 (0xc57B33452b4F7BB189bB5AfaE9cc4aBa1f7a4FD8 & d5270d1c311941d0b08bead21fea7747) 来自随附的 youtube 视频 (0x2f90A6D021db21e1B2A077c5a37B3C7E75D15b7e & 29fa9aa13bf1468788b7cc4a500a45b8) 并来自 chainlink 市场(设置为 kovan 网络)。 (0xA1d76ABD287d87d6E1d92262F7D53Cbe4f290505 & fc3ea215bb9e44e088107b29bb495e2d)

我不确定哪里出了问题,我不认为是代码问题,因为它是从示例中复制粘贴的。但是没有一个地址有效。

pragma solidity ^0.8.7;

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

contract APIConsumer is ChainlinkClient {
    using Chainlink for Chainlink.Request;
  
    uint256 public volume;

    address private oracle;
    bytes32 private jobId;
    uint256 private fee;

    constructor() {
        setPublicChainlinkToken();
        oracle = 0xc57B33452b4F7BB189bB5AfaE9cc4aBa1f7a4FD8;
        jobId = "d5270d1c311941d0b08bead21fea7747";
        fee = 0.1 * 10 ** 18;
    }
    
    function requestVolumeData() public returns (bytes32 requestId) {
        Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.fulfill.selector);
        
        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);
        
        return sendChainlinkRequestTo(oracle, request, fee);
    }
    
    function fulfill(bytes32 _requestId, uint256 _volume) public recordChainlinkFulfillment(_requestId) {
        volume = _volume;
    }
}

request.add("path", "RAW.ETH.USD.VOLUME24HOUR"); 行应该是 request.add("path", "RAW,ETH,USD,VOLUME24HOUR");(注意逗号而不是点)。

Chainlink 节点 1.0.0 及更高版本支持这种新的“基于逗号”的格式。 1.0.0 之前的 Chainlink 节点支持您在原始问题中提供的“基于点”的格式。

据我所知,官方文档已更新以包含此更改。