适配器是每个Chainlink节点默认支持的数据操作功能。节点在这种情况下是分散的。它们满足数据请求,而Chainlink网络由数量不断增长的节点组成。其节点由众多独立的运营商运营。通过适配器,所有开发人员都具有用于发出数据请求的标准接口,而节点操作人员将遵循用于处理该数据的标准。这些适配器包括HTTP GET、HTTP POST、比较,复制等功能。适配器是dApp与外部世界数据的连接。
例如,这是HttpGet适配器的参数:
Get:获取包含API URL的字符串以向Get请求。
headers:将包含键作为字符串,将值作为字符串数组的对象。
queryParams:获取URL的查询参数的字符串或字符串数组。
extPath:采用斜杠分隔的字符串或字符串数组,以附加到作业的URL。
Chainlink请求
为了使通用智能合约与这些适配器进行交互,需要其他功能。从Chainlink Client继承的所有合同都可以创建Chainlink.Request结构,该结构允许开发人员向Chainlink分散的Oracle发出请求。该请求应根据要发出的请求将所需的适配器参数添加到结构中。提交这一请求需要一些基本字段,例如要用作Oracle的节点的地址、jobId和约定的费用。除了这些默认字段之外,还可以将所需的适配器参数添加到请求结构中:
//设置网址以在上执行Get请求
request.add("get", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD");
使用这个结构,其请求是灵活的,并且可以制定为适合各种情况的请求,这些情况涉及从任何API获取、发布和操作数据,因为请求可以包含任何适配器功能。使该系统去中心化的原因是Chainlink的Oracle网络由许多这些节点组成,并且开发人员可以根据自己的需求自由选择节点和数量。正如高可靠性dApp经常需要的那样,这可以通过多个来源实现冗余故障转移和错误检查。
有关构造请求以及在ChainlinkClient合同内提交请求和接收响应所需的功能的更多信息,可以查看Chainlink的完整HTTP GET请求示例。
对于常见请求,节点操作人员可能已经预先配置了现有的Oracle作业,在这种情况下,其请求要简单得多。而无需构建自定义请求结构并添加必要的适配器。无需其他适配器参数,选择的分散式预言集将基于创建请求结构时提供的jobId知道如何响应。
这一示例来自完整的CoinGecko Consumer API:
Chainlink.Request memory req = build Chainlink Request(jobId, address(this),this. fulfill Ethereum Price.selector);send Chainlink Request To(oracle, req, fee);
可以使用分散的Oracle数据服务(例如Chainlink Market)搜索现有的Oracle及其支持的作业以找到所需的jobId。
外部适配器
但是如果智能合约有复杂的用例,而默认适配器功能未涵盖这一用例,那么该怎么办?如果需要执行一些高级数据操作怎么办?也许不是要提交到合同的原始数据,而是由对多个数据点进行统计分析生成的元数据。也许可以使用默认适配器在链上操作数据,但希望降低成本。也许由于使用凭据来源,不希望其API请求在链上,并且不想在链上或在Oracle作业规范中指定这些凭据。这是外部适配器发挥作用的地方。
由于外部适配器是与Chainlink Oracle节点脱链存在的代码段,因此它们可以用选择的任何语言编写,并执行人们可以想到的任何功能,只要数据输入和输出遵循适配器的JSON规范。外部适配器充当Chainlink分散式Oracle网络与外部数据之间的接口,使节点操作员知道如何请求和接收JSON响应,然后在链上使用它们。
通过外部适配器在链外定义这一接口规范将带来巨大的可能性:现在可以根据个人安全标准在链外存储API凭据,可以采用选择的语言以任何方式对数据进行编程,所有这些无需使用任何
以太坊费用来资助链上交易的情况。从某种意义上说,外部适配器就像去中心化Oracle的另一层一样,以低成本、快速地将数据打包到
区块链外部,然后将其转换为整洁的JSON格式,以由Chainlink oracle节点在链上进行验证。
外部适配器是使Chainlink成为一个多功能的分散式Oracle网络的重要部分。合同开发人员可以根据需要自由实施这些适配器,也可以从Chainlink市场上的现有适配器中进行选择。如果是寻求创建外部适配器的智能合约开发人员,Chainlink只要求为数据请求和返回数据指定JSON接口。在这两个接口之间,开发人员可以自由创建和操作数据以适应其用例。作为Oracle节点操作人员,要支持外部适配器并处理其他请求,必须在节点用户界面中为其创建网桥,并将适配器的桥名称添加到支持的任务中。
你可以在Chainlink构建外部适配器页面上访问创建外部适配器的完整示例。
Chainlink致力于为区块链和智能合约开发人员提供工具,使他们可以根据实际需要,以真实数据来支持通用智能合约。
Chainlink致力于为区块链和智能合约开发人员提供工具,使他们可以根据实际需要,以真实数据来支持通用智能合约。Chainlink的设计结合了通过默认适配器和可扩展外部适配器对任何API的直接调用,为开发人员提供了一个灵活的平台,可以根据需要创建所需的任何数据。这为智能合约打开了一个真正的数据世界,并赋予新的用例。
版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。