我有一个关于RSK集成的问题(特别是关于如何使用回调地址)https://github.com/smartcontractkit/chainlink-RSK/blob/master/test-runner/src/contracts/Consumer.sol
function requestRIFPriceByCallback(uint256 _payment, address _callback) public {
Chainlink.Request memory req = buildChainlinkRequest(specId, _callback, this.fulfill.selector);
req.add("get", "https://api.liquid.com/products/580");
req.add("path", "last_traded_price");
req.addInt("times", 100000000);
sendChainlinkRequest(req, _payment);
}
https://github.com/smartcontractkit/chainlink/blob/develop/evm-contracts/src/v0.4/tests/Consumer.sol
function requestEthereumPrice(string _currency) public {
Chainlink.Request memory req = buildChainlinkRequest(specId, this, this.fulfill.selector);
req.add("get", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD,EUR,JPY");
string[] memory path = new string[](1);
path[0] = _currency;
req.addStringArray("path", path);
sendChainlinkRequest(req, ORACLE_PAYMENT);
}
这些来自Consumer.sol(来自RSK,其上方是原始),为什么RSK消费者需要回调地址,该地址起什么作用/如何工作?
这两个函数都有回调地址。您会在第二种方法中看到他们只使用'this'。回调地址是“ buildChainlinkRequest”函数中的参数。它指定将数据返回到哪个合同。结合了功能选择器,您可以选择要将数据返回到哪个合约和功能。
第二个方法没有回调地址,因为它设置为“ this”。第一个功能让您选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句