Chainlink-作业未完成 [英] Chainlink - Job not being fulfilled

查看:26
本文介绍了Chainlink-作业未完成的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在学习Chainlink API,并试图构建一个简单的协定,该协定将对API进行外部调用,并根据Oracle的请求结果向用户收费。

例如,如果API结果为true,我们将向您收取1美元,如果结果为false&Quot;

,我们将收取0.25美元

我在Kovan Testnet上运行这个,合同是由LINK提供资金的。每次我运行";questCompletedData";函数时,事务都成功。但是回调/实现函数从未运行过。我已经用各种方法检查过了。

作为参考,应根据URL中的数据生成completed == true

以下是Chainlink的Kovan测试节点的合同地址和作业ID:https://docs.chain.link/docs/decentralized-oracles-ethereum-mainnet/

// 
constructor() public {
        setPublicChainlinkToken();
        oracle = 0x2f90A6D021db21e1B2A077c5a37B3C7E75D15b7e;
        jobId = "6d914edc36e14d6c880c9c55bda5bc04";
        fee = 0.1 * 10 * 18; // 0.1 LINK
    }

    // Make Chainlink request
    function requestCompletedData() public returns (bytes32 requestId) {
        Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.fulfill.selector);
        
        // URL for request
        request.add("get", "https://jsonplaceholder.typicode.com/todos/4");
        
        // Path to the final needed data point in the JSON response
        request.add("path", "completed");
        
        return sendChainlinkRequestTo(oracle, request, fee);
    }

function fulfill(bytes32 _requestId, bool _completed) public recordChainlinkFulfillment(_requestId) {
        validateChainlinkCallback(_requestId);
        completed = _completed;
    }

感谢您的帮助!

推荐答案

删除fulfill()方法中的validateChainlinkCallback(_requestId)行,它将起作用。

function fulfill(bytes32 _requestId, bool _completed) public recordChainlinkFulfillment(_requestId) {
        completed = _completed;
    }

fulfill()方法已具有recordChainlinkFulfillment修饰符,该修饰符无论如何都会运行与validateChainlinkCallback(_requestId)方法相同的验证。

引用:ChainlinkClient source code

这篇关于Chainlink-作业未完成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆