blockchain - Chainlink 消费者合约中回调地址的用途是什么?
问题描述
我对 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”。第一个功能让您选择。
推荐阅读
- docker - Yii 2 入门套件 - docker 在文件 .\.env 中:环境变量名称“YII_DEBUG”可能不包含空格。事件返回错误代码 1
- python - 仅当序列在 python 正则表达式中的另一个序列中具有相同数量的字符时,如何匹配特定的字符序列?
- sql - SQL Server 中的 SET 指令不起作用
- c# - 我们如何才能禁用常规按钮,直到整个 dataGridView 完全用 C# 中的有效值填充
- jquery - 通过单击提交获取单选按钮的值
- tensorflow - 更高效的 Keras LSTM 输入?
- api - Ebay:返回已售商品数量的最佳 API 是什么
- php - Bootstrap Grid 中的 Wordpress 自定义查询
- unity3d - Unity2D 游戏对象在重力比例设置为 0 时下降
- javascript - React.js 在包含反引号的状态中转义字符