首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chainlink -作业未完成

Chainlink -作业未完成
EN

Stack Overflow用户
提问于 2021-06-08 10:52:46
回答 1查看 163关注 0票数 0

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

例如:“如果接口结果为true,我们将收取您$1,如果接口结果为false,我们将收取您$0.25”

我在Kovan Testnet上运行这个,合同是由LINK资助的。每次我运行"requestCompletedData“函数时,事务都是成功的。但是回调/实现函数永远不会运行。我已经用各种方式检查过了。

作为参考,它应该根据来自URL的数据生成completed == true

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

代码语言:javascript
复制
// 
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;
    }

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2021-06-09 10:52:30

删除fulfill()方法中的validateChainlinkCallback(_requestId)行,它就可以工作了。

代码语言:javascript
复制
function fulfill(bytes32 _requestId, bool _completed) public recordChainlinkFulfillment(_requestId) {
        completed = _completed;
    }

fulfill()方法已经有了recordChainlinkFulfillment修饰符,该修饰符运行与validateChainlinkCallback(_requestId)方法相同的验证。

参考:ChainlinkClient source code

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67880818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档