LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > [Chainlink] 如何获取以太坊,比特币和其他加密货币的当前价格

[Chainlink] 如何获取以太坊,比特币和其他加密货币的当前价格

2021-01-06 wanbizu AI 来源:区块链网络

将价格数据提取到Solidity智能合约中是DeFi应用程序的普遍要求。 要获取Solidity中以太坊,比特币或其他加密货币的当前价格,您可以:

使用Chainlink价格供稿获取价格数据 通过Chainlink oracle使用外部API获取价格数据

在本技术教程中,我们将逐步介绍这两种方法并共享代码示例,以帮助您构建,部署和测试智能合约。 首先,让我们快速了解将外部输入输入智能合约时数据质量和端到端分散的重要性。

智能合约中准确,可靠的价格需求

今年,DeFi协议爆发式增长,DeFi的总价值(TVL)从1月份的6.8亿美元激增至现在的$ 14B。 这些DeFi协议依赖外部价格数据作为其数据源,因为区块链无法本地访问外部数据。 除此之外,这些应用程序还需要提供数据质量保证,以保护其应用程序免受价格预兆攻击等利用。

Chainlink Price Feed通过提供来自各种高质量数据提供商的汇总数据来减轻这些攻击的风险,这些数据是由Chainlink网络上的分散Oracle在链上提供的。 Chainlink的分散式预兆机制可确保最终价格值反映广泛的市场覆盖范围,这意味着最终价格是在整个市场上汇总了一系列不同的价格后确定的,而不只是一小部分,同时还考虑了数量和数量等方面流动性。

现在我们了解了Solidity智能合约中准确和可靠的价格数据的需求以及Chainlink Price Feed甲骨文扮演的重要角色,我们将通过一个示例使用Chainlink Price Feed获取Solidity中以太坊的最新价格智能合约。 以下步骤也适用于比特币和其他加密货币。

在以太坊上使用Chainlink价格供稿

Chainlink Price Feed使用多个高质量数据输入,并通过Chainlink oracle的分散网络将它们汇总,将价格数据输入参考合约,在该合约中,结果再次汇总到Aggregator Smart Contract中,作为最新的可信答案。 通过使用由多个节点聚合的多个数据源,我们可以确保我们的价格数据具有最高的质量,并且不受漏洞利用或价格预兆攻击。

创建智能合约

第一步是获取testnet ETH,将其用作智能合约中的天然气。 一旦有了一些ETH,开始建立使用Chainlink Price Feeds的智能合约的最简单方法就是从标准Price Consumer合约开始。 这是用于启动对Chainlink Price Feed的请求的基本合同。 在此演示中,我们将使用标准价格消费者合同中已定义的ETH / USD价格馈送,但我们将遍历代码的每个部分,以便您了解其工作原理。

首先,我们可以看到AggregatorV3Interface合同接口已导入。 这使我们的智能合约可以引用Kovan测试网上的链上价格供稿。 然后在局部变量中创建它的一个实例。

导入“ https://github.com/smartcontractkit/chainlink/blob/master/evm-contracts/src/v0.6/interfaces/AggregatorV3Interface.sol”; 聚合器V3接口内部价格Feed;

接下来,我们可以看到价格Feed参考合约已在我们的构造函数中初始化。 Kovan Testnet上的ETH / USD价格供给参考合约部署在地址0x9326BFA02ADD2366b30bacB125260Af641031331上。

priceFeed =聚合器V3接口(0x9326BFA02ADD2366b30bacB125260Af641031331);

然后,我们可以看到已经定义了一个函数,用于从上面的构造函数中实例化的Price Feed Aggregator合同中获取最新价格。 为此,定义了一个新函数,该函数从Aggregator协定中调用LatestRoundData函数。 这是返回聚集器合约当前状态的函数,在这种情况下,我们采用当前价格并将其返回到消费函数中。

函数getLatestPrice()公开视图返回(int){(uint80 roundID,int price,uint startsAt,uint timeStamp,uint80 AnswerInRound)= priceFeed.latestRoundData(); 退货价格 }部署和测试智能合约

现在,我们准备部署和测试我们的合同。 在Remix中编译合同,然后在“部署”选项卡上,将环境更改为“ Injected Web3”,并确保下面的钱包地址是您的MetaMask钱包中包含早些时候获得的ETH的钱包地址,按部署按钮,然后按照步骤操作。 最终结果是您将智能合约部署到了Kovan测试网。 您应该通过Remix控制台中的事务输出记录已部署的合同地址。

部署后,我们只需要执行“ getLatestPrice”功能。 结果应该是该函数从ETH / USD Aggregator合约返回最新价格,然后可以在我们的智能合约的链上使用。 请注意,我们不需要为请求发送任何LINK,我们甚至都不使用任何ETH,该交易是对链上ETH-USD Aggregator合约中数据的纯读。

ETH / USD价格供给结果以固态获取其他价格数据

Chainlink Price Feeds提供了顶级DeFi价格对的大量价格数据。 如果需要将价格数据输入到现有价格供稿未涵盖的资产的Solidity智能合约中,例如特定股票的价格,则可以自定义Chainlink oracle以调用任何外部API。

使用Chainlink oracles获取外部价格数据的最简单方法是从标准Chainlink APIConsumer合同开始。 这是用于通过Chainlink oracle启动对外部数据的请求的标准化合同。

创建APIConsumer合同后,即可找到要从中获取价格数据的API。 例如,您可以使用Alpha Vantage API查找IBM股票的当前价格。

一旦有了API端点,您只需要在合同中设置正确的参数并将请求发送给Chainlink oracle。 可以在Chainlink文档中找到有关此内容以及如何使用标准APIConsumer合同的更多信息。

请记住,在生产时,您将希望分散这种方法,或者在价格供稿本身上获取此特定数据。

概要

Chainlink Price Feeds提供了一种可靠的方法,可将高质量的比特币,以太坊和其他加密货币价格数据转换为Solidity智能合约。 除此之外,Chainlink的oracle框架提供了灵活性,可以快速轻松地获取股票,大宗商品和其他资产的其他价格数据。

如果您是开发人员,并且想快速将您的应用程序连接到Chainlink价格参考数据,请访问开发人员文档并加入Discord中的技术讨论。

网站| 推特| Reddit | YouTube | 电报| 大事记 GitHub | 价格提要| DeFi

>>在链节上查看

加入我们的电报

在推特上关注我们

在Facebook上关注我们

帖子 [Chainlink] 如何在实体中获取以太坊,比特币和其他加密货币的当前价格首先出现在AZCoin新闻上。

—-

原文链接:https://azcoinnews.com/chainlink-how-to-fetch-the-current-price-of-ethereum-bitcoin-and-other-cryptocurrencies-in-solidity.html

原文作者:Chainlink News

编译者/作者:wanbizu AI

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...