主页 > imtoken官网钱包app > 在 Solidity 智能合约中获取外汇汇率数据

在 Solidity 智能合约中获取外汇汇率数据

imtoken官网钱包app 2023-01-17 02:44:27

在Solidity智能合约中获取外汇汇率数据_第1张图片

价格数据是各种金融工具的核心,尤其是去中心化金融 (DeFi) 应用程序。外汇 (FX) 汇率数据在 DeFi 世界中对于创建期权、期货和其他复杂的衍生品尤为重要。除了能够获取[安全的加密货币价格数据](),Chainlink 价格信息还可以用于在智能合约中获取高质量的外汇价格数据。

在本技术教程中,我们将详细介绍如何在 Solidity 智能合约中使用 Chainlink FX 价格馈送。首先,让我们快速了解一下什么是外汇提要以及可以使用它们创建哪些类型的衍生品。

什么是外汇汇率馈送?

外汇市场是一个全球性的货币兑换市场,日交易量近7万亿美元。这个市场决定了每种货币的汇率,包括以当前或既定价格购买、出售和交换货币的各个方面。由于这个市场的高容量和受欢迎程度,许多 DeFi 应用程序使用 Chainlink 外汇价格馈送来确保外汇数据能够以安全和去中心化的方式传送到其衍生品合约,而不会出现任何单点故障。

Synthetix Exchange 是一个 DeFi 衍生品交易所,它使用 Chainlink 预言机提供的多个外汇价格馈送,以确保基于其标的资产的真实市场价格的防篡改和准确估值,即使在高波动价值期间也是如此。

在Solidity智能合约中获取外汇汇率数据_第2张图片

_

如何使用 Chainlink Forex 来提供价格?

Chainlink Price Feeds 使用数百个高质量数据源,并通过 Chainlink 预言机的去中心化网络将它们聚合,Chainlink 预言机将价格数据馈送到参考合约中,结果在聚合器合约中重复聚合并用作最多-日期,可信的答案。通过使用由去中心化节点网络聚合的大量数据源,Chainlink 预言机确保价格数据具有最高质量,并且不易受到漏洞利用或价格预言机攻击。

创建智能合约

为了在智能合约中使用 Chainlink 外汇价格馈送,您首先需要获取测试网 ETH 代币以用作智能合约中的 gas。一旦你有了一些 ETH 代币,开始构建使用 Chainlink FX 价格馈送的智能合约的最简单方法是部署价格消费者合约。这是一个基本合约,用于发起对 Chainlink 价格馈送的请求。首先,我们需要导入 AggregatorV3Interface 合约接口,它允许我们的智能合约引用 Kovan 测试网的链上价格馈送。

import "https://github.com/smartcontractkit/chainlink/blob/master/evm-contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";

然后在局部变量中创建它的实例。

AggregatorV3Interface internal priceFeed;

在喂价参考合约构造函数中,我们可以初始化我们需要使用的喂价合约的地址。通过浏览文档中的以太坊喂价信息页面,我们可以找到Chainlink目前提供的所有喂价合约的地址。导航到页面上的 Kovan 测试网部分并选择一个外汇提要。在本例中,我们将选择地址为 0x28b0061f44E6A9780224AA61BEc8C3Fcb0d37de9 的英镑/美元价格馈送合约。

priceFeed = AggregatorV3Interface(0x28b0061f44E6A9780224AA61BEc8C3Fcb0d37de9);

合约中已经定义了一个名为 getLatestPrice 的函数,用于从上述构造函数中实例化的价格聚合器合约中获取最新价格。为此,定义了一个新函数,该函数从聚合器合约调用 latestRoundData 函数。此函数返回聚合器合约的当前状态,在这种情况下,我们采用当前价格并在我们的消费者函数中返回其值。

function getLatestPrice() public view returns (int) {
        (
            uint80 roundID,
            int price,
            uint startedAt,
            uint timeStamp,
            uint80 answeredInRound
        ) = priceFeed.latestRoundData();
        return price;
}

部署和测试智能合约

现在我们准备好部署和测试我们的合约了。在 Remix 中编译合约,然后在 Deploy 选项卡上,将环境更改为“Injected Web3”,并确保下面的钱包地址是您的 MetaMask 钱包中包含一些以前获得的 ETH 代币的地址比特币汇率接口,点击部署按钮并按照步骤操作操作。最终结果是将智能合约部署到 Kovan 测试网。您应该记录部署的合约地址,您可以通过 Remix 控制台中的交易输出看到。

部署完成后,我们只需要执行“getLatestPrice”函数即可。结果应该是一个函数比特币汇率接口,它返回英镑/美元聚合器合约的最新价格,然后可以在我们的智能合约中链上使用。请注意,我们不需要为请求发送任何 LINK 代币,我们甚至不使用任何 ETH 代币,因为交易是对链上 GBP-USD 聚合器合约中数据的纯读取操作。

在Solidity智能合约中获取外汇汇率数据_第3张图片

总结

Chainlink 价格馈送提供了一种可靠的方式将高质量的外汇价格数据馈送到 Solidity 智能合约。此外,Chainlink 的预言机框架提供了快速轻松地获取股票、加密货币、商品和许多其他资产类型数据的灵活性。

如果您是一名开发人员,并希望将您的应用程序快速连接到 Chainlink 提要,请访问开发人员文档并加入 Discord 上的技术讨论。

有关此主题的更多信息

网站|Twitter|Discord|Reddit|YouTube|Telegram|活动|GitHub|Price Feeds|DeFi