区块链网站|NFTS Chainlink(Link) 详细解释如何在Matic网络上使用Chainlink预测器

详细解释如何在Matic网络上使用Chainlink预测器

广告位

详解如何在Matic网络上使用Chainlink预言机

自Matic今年早些时候上线以来,由于其安全和可扩展的基础设施以及即时交易的特点,这一网络迅速成为以太坊开发者的热门第二层解决方案。Matic的高性能、低成本基础设施为DeFi应用提供了一个可行的平台,促进大规模应用。在区块链Oracle的同领域,Chainlink已经成为DeFi协议的首选Oracle解决方案,Chainlink Price Feeds已经保证了数十亿美元的价值。在这篇技术文章中,我们将向您展示如何在您的Matic DeFi应用程序中使用Chainlink Oracle,以及如何使用Chainlink Price Feeds使您的应用程序访问高质量、防篡改的数据,这些数据不易受到Oracle漏洞和flash loan攻击等风险的影响。

对可扩展和安全的DeFi协议的需求今年,DeFi协议经历了爆发式增长,DeFi的总仓锁量(TVL)从1月份的6.8亿美元飙升到现在的140多亿美元。然而,这种增长伴随着连锁交易水平的提高和破坏者不必要的关注,破坏者试图利用这些协议为自己谋利。

以太坊的可扩展性有限,吞吐量低。由于DeFi的增长,链条上交易数量的增加阻碍了区块链的表现。这就导致了流量效应,导致DeFi协议用户体验差,成本高,交易时间慢。

交易速度慢和交易成本高是阻碍DeFi进入主流的两大限制因素。凭借其更高的可扩展性、高吞吐量和低成本交易,Matic和其他两层网络可以开始下一阶段的DeFi开发。Matic侧链也可组合,并与EVM完全兼容。DeFi的核心价值之一是无需许可的可组合性,因此Matic为希望构建各种有用的DeFi应用程序的开发人员提供了令人信服的选择,这些应用程序可以扩展,提供低成本的事务,确保无需许可的可组合性,并提供无缝的用户体验。

然而,这些DeFi应用仍然需要访问高质量和可靠的外部数据。正如我们今年多次看到的,DeFi协议可能会受到各种形式的攻击,比如价格预测机攻击,即作恶者将闪电贷与低质量的预测机结合起来,为了自己的利益操纵市场,损害其他用户的利益。

Chainlink Price Feeds提供来自不同高质量数据提供商的聚合数据,Chainlink网络上的分散式预测器对链进行反馈,从而降低DeFi应用易受这些攻击的风险。Chainlink的去中心化架构和广泛的高质量数据源保证了最终价格能够覆盖最广泛的市场,这实质上意味着价格是在汇总了整个市场的不同价格后确定的,而不仅仅是一个小的子集。

现在我们已经知道了在Matic网络上构建DeFi协议的优势,以及Chainlink Oracle和Price Feeds所起的关键作用,我们将通过一个例子介绍在Matic上构建DeFi应用程序时如何使用Chainlink Price Feeds。

使用Chainlink Price Feeds Matic network上的chain link Price Feeds使用许多高质量的数据输入,并将其与Chainlink predictor network结合,将价格数据输入参考合同,然后汇总结果。DeFi协议非常重视数据质量和完整性,而Chainlink Price Feeds为这些不想因为数据质量问题而受到各种DeFi漏洞影响的协议提供了最佳的实用生产环境解决方案。

以下两个教程也可以作为Remix中一个完整的智能合约。

在Matic网络上使用Chainlink价格馈送和预言机的第一步是设置您的MetaMask钱包以连接到Matic Mumbai Testnet,然后您可以获得一些Mumbai Testnet MATIC令牌以在您的DeFi智能合同中使用。

在MetaMask中建立Matic孟买测试网络

获取Testnet MATIC

Matic是MATIC网络的原生令牌。这类似于以太坊中的以太坊。为了与MATIC网络互动,Matic令牌需要支付汽油费。要获取Mumbai Testnet MATIC,请转到MATIC水龙头,选择MATIC令牌和Mumbai Testnet网络,输入您的MetaMask钱包地址,然后按提交。

获取测试网络MATIC

创建智能合同从Matic开始使用Chainlink价格源创建智能合同的最简单方法是从标准价格消费者合同开始。这是一个基本的标准化合同,用于启动对Chainlink价格源的请求。在Remix中打开此合同,根据要求进行修改。在本例中,我们将使用ETH/USD价格数据。第一步是在我们的构造函数中初始化一个[Matic Price Feed参考契约。

Mumbai Testnet上的ETH/USDPrice Feed参考契约部署在地址‘0x 0715 a 7794 a 1 dc8e 42615 f 059 DD 6e 406 a 6594651 a’。

接下来,我们需要从上述构造函数中实例化的价格提要聚合器契约中获取最新价格。现在我们有了从聚合器契约调用lastRoundData的函数。这个函数返回聚合器契约的当前状态。在这种情况下,我们获取消费者函数中的当前价格并将其返回。

部署和测试智能合约现在,我们已经准备好部署和测试我们的合约。在remix中编译合同,然后在deployment选项卡上,将环境更改为“Injected Web3”,并确保下面的wallet地址是包含MATIC令牌的MetaMask wallet的地址,按deployment按钮,然后按照步骤操作。最终结果是您的智能合同已经部署到Matic Mumbai testnet。部署的合同地址可以通过remix控制台中的事务输出获得。

部署完成后,我们只需要执行“getLatestPrice”函数。结果应该是该函数返回ETH/USD聚合器合同的最新价格,然后可以在Matic network上的DeFi应用程序中使用该价格。

瑞士法郎/美元价格结果

在Matic网络上使用Chainlink预言机在某些情况下,您可能需要使用Chainlink Price Feeds在Matic上的智能合约中无法获得的链外数据。此时,您可以使用链节预测器。现在,我们将修改我们的智能合约,以获得使用Chainlink价格源无法获得的市场价格,例如ETH/EUR价格。

获取Testnet链接您需要获取一些test net链接,以便向Chainlink oracles发送请求。要获得孟买测试网链接,请加入Matic Discord并在上述步骤中发布您的MetaMask钱包地址,并要求Matic团队成员向您发送一些孟买测试网链接。通过一些MATIC和LINK,你可以进入智能合约。

创建智能合约使用Chainlink Oracle on Matic构建智能合约的最简单方法是从标准Chainlink APIConsumer合约开始。这是一个基本的标准化合同,用于通过Chainlink Oracle发起对外部数据的请求。所以我们会在Remix中打开这个合同,根据我们的需要进行修改。

首先,我们将把“volume”参数重命名为“ethPrice”,把“requestVolumeData”函数重命名为“requestEthereumPrice”。之后,我们需要如下修改构造函数。

孟买测试网的链接令牌地址是`0x 70 D1 f 773 a9 f 81 c 852087 b 76 f 6 AE 6d 3032 b 02d 2 ab `,所以我们将其传入\’ setChainlinkToken \’函数。

根据Matic文档中的规定,孟买测试网上的`0x 1 cf 7d 49 be 7 e 0 c 6 AC 30 de 720623490 b 64 f 572 e 17 \’中运行着一个oracle契约,所以我们将oracle变量设置为这个值。

通过API HTTP GET请求获取,返回值为无符号整数。运行在Mumbai testnet上的Oracle有各种各样的作业规范。根据Matic文档中的工作列表,根据这些要求,\’ D8 FCF41EE8984D3 B8B0EAE74ECA7DD \’适合我们。因为我们要执行HTTP GET请求,返回的数据是一个无符号整数,所以我们将\’ jobId \’变量设置为这个值。

将“费用”变量修改为1链接。这是与外部数据请求一起发送给oracle的付款。

完成了构造函数,这里是\’ requestEthereumPrice \’和\’ fulfill \’函数。

对Chainlink的请求oracle使用Chainlink请求和响应设计模式,chain函数创建并发出请求,Oracle检测请求,然后将响应发送回同一契约中的另一个函数。在我们的例子中,‘requestEthereumPrice’函数创建并发出请求,而‘fulfill’函数处理由‘this . fulfill . selector’定义的响应。

选择的API是crypto.com ETH/EUR价格的公共API。如果在浏览器中打开这个链接,可以看到以JSON格式返回的数据。

在“requestEthereumPrice”函数中,修改如下:

将URL设置为[ETH/EUR](ETH/EUR) API的端点。

将请求中的“路径”变量设置为“EUR”。这是要找到并返回的JSON响应的路径,其中包含了根据浏览器中看到的API端点输出的以太坊当前价格。

将结果乘以100,因为Solidity无法处理数字中的小数。

将请求发送到Chainlink oracle

在\’ fulfill \’函数中,您可以看到预测机会将响应发送回` _ price \’参数,然后将其存储在合同中的` ethereumPrice变量中。

现在合同准备好了,可以编译部署到Matic孟买测试网。

并部署和测试智能合约。用remix编译合同,然后像我们在price gift合同上所做的那样,将合同部署到Mumbai Testnet。

下一步是为与LINK的合同提供资金,以便它可以向Chainlink oracles发送请求。只需从上面的步骤中获取部署的契约地址,然后从MetaMask wallet向其发送1个链接令牌。

将链接转移到合同中

当合约已部署且我们有LINK时,我们可以按“requestEthereumPrice”功能按钮将当前以太坊价格的请求发送到Chainlink预测器。这也将向Chainlink Oracle发送链接付款,作为完成请求的奖励。

测试已部署的合同。

请求发起后,Chainlink Oracle会执行,然后我们契约中的fullfil函数会被Chainlink节点Oracle契约调用。这将需要几秒钟来完成,然后我们可以通过执行\’ ethereumPrice \’getter函数来检查API请求的结果。结果应该是,以太坊的当前欧元价格现在存储在合同中,并准备好在Matic network上运行的DeFi应用程序中使用。

查看返回的结果。

总结Matic网络以其快速、廉价和可靠的交易为DeFi协议提供了一个可行的二层网络。Chainlink oracles和Chainlink Price Feeds进一步增强了在Matic上构建DeFi协议的价值主张,使这些协议能够访问外部数据和事件,包括高质量的聚合价格数据,这些数据可用于各种有用的DeFi应用,如分散交易所(DEX)、流动性池、贷款协议、分散保险和自动做市商(AMM)。

如果您是开发人员,并且希望您的应用程序快速连接到Chainlink价格参考数据,请访问开发文档并加入Discord中的技术讨论。如果您想预约深入讨论Matic/Chainlink的集成,请在此联系。

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/jzb/link/8266.html
上一篇
下一篇

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回顶部