gpt4 book ai didi

blockchain - Chainlink - 工作没有完成

转载 作者:行者123 更新时间:2023-12-05 04:48:51 26 4
gpt4 key购买 nike

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

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

我在 Kovan Testnet 上运行这个,契约(Contract)由 LINK 提供资金。每次我运行“requestCompletedData”函数时,交易都是成功的。但是回调/实现函数永远不会运行。我已经以各种方式检查过了。

作为引用,它应该根据 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;
}

感谢您的帮助!

最佳答案

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

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

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

引用:ChainlinkClient source code .

关于blockchain - Chainlink - 工作没有完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67880818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com