chainlink交易所(详解如何在Matic网络上使用Chainlink预言机)

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

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

对可扩展和安全的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预言机和Price Feeds所发挥的关键作用,现在我们将通过一个例子来介绍在Matic上构建DeFi应用时如何使用Chainlink Price Feeds。

在Matic网络上使用Chainlink Price Feeds

Chainlink Price Feeds使用多个高质量的数据输入,并将其与Chainlink预言机网络相结合,将价格数据输入参考合约,然后将结果聚合。DeFi协议对数据质量和完整性的重视是极其重要的,Chainlink Price Feeds为这些不想因数据质量问题而发生的各种DeFi漏洞影响的协议提供了最佳的实战型生产环境解决方案。

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

在Matic网络上使用Chainlink Price Feeds和预言机的第一步是设置你的MetaMask钱包以连接到Matic Mumbai Testnet,然后你就可以获得一些Mumbai Testnet MATIC代币来用于你的DeFi智能合约。

在MetaMask中建立Matic Mumbai测试网

获取Testnet MATIC

MATIC是Matic网络的原生代币。这类似于Ethereum中的以太币。要与Matic网络进行交互,MATIC代币需要支付gas费。要获得Mumbai Testnet MATIC,请前往MATIC Faucet,选择MATIC代币和Mumbai Testnet网络,输入你的MetaMask钱包地址,然后按提交。

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

获取测试网MATIC

创建智能合约

在Matic上开始构建使用Chainlink Price Feeds的智能合约的最简单方法就是从标准的Price Consumer合约开始。这是一个基础的标准化合约,用于发起对Chainlink Price Feeds的请求。在Remix中打开这个合约,并根据需求进行修改。在本例中,我们将使用ETH/USD价格数据。第一步是在我们的构造函数中初始化一个[Matic Price Feed参考合约。

Mumbai Testnet上的ETH/USDPrice Feed参考合约部署在地址`0x0715A7794a1dc8e42615F059dD6e406A6594651A`。

接下来,我们需要从上面构造函数中实例化的Price Feed Aggregator合约,获取最新价格。现在我们已经有了从Aggregator合约中调用lastRoundData的函数。这是返回 Aggregator 合约当前状态的函数,在这种情况下,我们在消费者函数中取当前价格并返回它。

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

部署和测试智能合约

现在我们准备部署和测试我们的合约。在remix中编译合约,然后在部署选项卡上,将环境改为 "Injected Web3",并确保下面的钱包地址是你的MetaMask钱包中包含你的MATIC代币的地址,按下部署按钮,然后按照步骤操作。最终的结果是你的智能合约已经部署到了Matic Mumbai testnet。通过remix控制台中的交易输出可以获取部署的合约地址。

部署完毕后,我们只需要执行 "getLatestPrice "函数。结果应该是该函数返回ETH/USD聚合器合约的最新价格,然后可以在Matic网络上的DeFi应用中使用。

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

ETH/USD价格结果

在Matic网络上使用Chainlink预言机

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

获取Testnet LINK

你需要获得一些Testnet LINK来向Chainlink oracles发送请求。要获得Mumbai Testnet LINK,请加入Matic Discord,并在上面的步骤中发布你的MetaMask钱包地址,要求Matic团队成员给你发送一些Mumbai Testnet LINK。有了一些MATIC和LINK之后,你就可以进入智能合约了。

创建智能合约

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

首先,我们将把 "volume "参数改名为 "ethPrice",把 "requestVolumeData "函数改名为 "requestEthereumPrice"。完成后,我们需要修改构造函数如下。

  • Mumbai测试网的LINK token地址是`0x70d1F773A9f81C852087B77F6Ae6d3032B02D2AB` 所以我们把它传入 "setChainlinkToken "函数中

  • 按照Matic文档中的规定,Mumbai测试网上有一个oracle合约运行在`0x1cf7D49BE7e0c6AC30dEd720623490B64F572E17`,所以我们将oracle变量设置为这个值

  • API通过HTTP GET请求获得,返回值是一个无符号整数。在Mumbai testnet上运行的oracle有各种job specifications可以使用。根据Matic文档中的jobs列表,根据这些需求,适合我们的是`d8fcf41ee8984d3b8b0eae7b74eca7dd`,因为我们要执行HTTP GET请求,返回的数据是一个无符号整数,所以我们将 "jobId "变量设置为这个值。

  • 将 "fee"变量修改为1LINK。这是随外部数据请求一起发送给oracle的付款。

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

完成了构造函数,下面是 "requestEthereumPrice"和 "fulfill"函数。

对Chainlink预言机的请求使用Chainlink请求和响应设计模式工作,链上函数创建并发出请求,oracle检测请求,然后将响应发回给同一合约中的另一个函数。在我们的案例中,"requestEthereumPrice "函数创建并发出请求,"fulfill "函数处理响应,这是由`this.fulfill.selector`定义的。

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

在 "requestEthereumPrice "函数中,修改如下:

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

  • 将请求中的 "path "变量设置为 "EUR"。这是要找到并返回的JSON响应的路径,根据在浏览器中看到的API端点的输出,它包含了Ethereum的当前价格

  • 将结果乘以 100,因为 Solidity 不能处理数字中的小数

  • 将请求发送给Chainlink oracle

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

在 "fulfill "函数中,可以看到,预言机会将响应发回到`_price`参数中,然后在合约中存储在`ethereumPrice`变量中。

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

现在合约已经准备好了,可以编译并部署到Matic Mumbai测试网。

部署和测试智能合约

用remix编译合同,然后像我们在价格馈赠合同上所做的那样,将合同部署到Mumbai Testnet上。

下一步是用LINK为合约提供资金,以便它可以向Chainlink oracles发送请求。只需从上面的步骤中获取部署的合约地址,然后从你的MetaMask钱包中向它发送1个LINK token。

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

向合约中转入LINK

当合约部署完毕并拥有LINK后,我们就可以按下 "requestEthereumPrice "函数按钮,向Chainlink预言机发送当前Ethereum价格的请求。这也将向Chainlink预言机发送LINK支付作为完成请求的报酬。

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

测试已部署的合约

发起请求后,Chainlink预言机就会执行,然后我们合约中的fullfil函数就会被Chainlink节点预言机合约调用。这将需要几秒钟的时间来完成,然后我们可以通过执行 "ethereumPrice "getter函数来查看API请求的结果。结果应该是以欧元为单位的Ethereum的当前价格现在存储在合约中,并准备在Matic网络上运行的DeFi应用程序中使用。

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

查看返回的结果

总结

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

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

chainlink交易所(详解如何在Matic网络上使用Chainlink预言机)文档下载: PDF DOC TXT
文章来源: 理财天下网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2384272385@qq.com举报,一经查实,本站将立刻删除。