如何在Hardhat中使用Chainlink

  • Chainlink
  • 更新于 2022-04-01 13:27
  • 阅读 2937

在本篇技术文中,我们将展示如何使用 Hardhat 来构建、部署并和使用Chainlink网络的三种不同类型的智能合约进行交互:1. 获取外部数据的API消费者合约 2. 从Chainlink喂价中读取最新价格的喂价消费者合约 3. 使用Chainlink VRF请求随机数的VRF消费者合约

1.png

原文链接:https://blog.chain.link/using-chainlink-with-hardhat/

原文作者:Harry Papacharissiou

Hardhat专注于自动化和重复性任务以及它自带本地以太坊网络,Hardhat正快速成为众多以太坊开发者们的开发环境选项之一。在本篇技术文中,我们将展示如何使用Hardhat来构建、部署并和使用Chainlink网络的三种不同类型的智能合约进行交互:

  • 获取外部数据的API消费者合约
  • 从Chainlink喂价中读取最新价格的喂价消费者合约
  • 使用Chainlink VRF请求随机数的VRF消费者合约

概览和前置条件

Hardhat是面向以太坊开发者的开发环境,可帮助开发者管理和自动化重复性的任务。这些任务是简单可重复函数,它们包含某些元数据,比如任务需要哪些参数。一种示例任务是向已部署的合约中充值ETH或其他通证。

Hardhat还带有自己的本地开发网络Hardhat Network,该网络专注于Solidity调试和额外的日志记录功能,并为开发者提供了一个本地开发环境,非常适合开发和优化代码。

Hardhat的许多功能都由插件提供,这些插件本质上是注入到项目的任务或外部代码。Hardhat有两个流行的插件web3和ethers.js,开发者可用任意一个与以太坊网络进行交互。

在我们的源代码中,我们创建了一个“ Chainlink Hardhat Box”,它是一个Hardhat项目,包含所有任务以及在Solidity智能合约中需要实现和部署的,且由当前Chainlink网络提供的主要功能的智能合约。

第一步是下载Chainlink Hardhat Box的源代码并安装所需的依赖项:

git clone https://github.com/smartcontractkit/hardhat-starter-kit/cd hardhat-starter-kitnpm install

完成此操作后,需要按照项目readme文件中的说明来设置所需的环境变量。在本教程中,我们将使用Kovan测试网。现在,可以开始部署智能合约了。

部署智能合约

如本文第一段提到的,Chainlink Hardhat Box项目有三个智能合约。你可以部署全部三个合约,也可以仅部署其中的一部分。为了选择要部署的合约并设置所需的环境特定参数,可以对部署脚本进行适当的修改。如果保留所有内容不变,它将使用默认值将全部三个合约部署到Kovan网络。在下面的示例中,我们将详解并使用项目中的默认值。

为了将我们的智能合约部署到Kovan网络,我们将使用hardhat-deploy插件,这是可重复部署和测试的Hardhat插件。为部署合约,我们运行以下命令:

npx hardhat deploy

2.png

部署Chainlink Hardhat Box

运行Hardhat任务

现在已经部署了智能合约,我们将利用Hardhat任务来与部署的合约进行交互。

使用Chainlink喂价

喂价消费者合约有读取喂价的任务,会从指定的喂价合约中读取最新价格。如果使用了部署中的默认值,它将在Kovan网络上查询ETH/USD的价格。<span class="code-snippet_outer"><br/></span>

<span class="code-snippet_outer"></span>

npx hardhat read-price-feed --contract 0x0ef1181768A99E522FB5535fA2e0D172B36d3479

3.png

从喂价合约中读取数据

请求外部数据

API消费者合约有两个任务,一个基于一组参数请求外部数据,另一个查看数据请求的结果。首先需要向该合约充值一定的LINK:

npx hardhat request-data --contract  0xc719F4B720cB7cBcabB09dF0040b47f3F9CE6a58

4.png

充值合约

充完通证后,可以通过将多个参数传递到请求数据任务来请求外部数据。其中合约参数是强制性的,其余是可选的:

npx hardhat request-data --contract  0xc719F4B720cB7cBcabB09dF0040b47f3F9CE6a58

5.png

请求外部数据

成功发出对外部数据的请求后,可以使用读取数据任务读取从Chainlink预言机中返回的结果。

npx hardhat read-data --contract  0xc719F4B720cB7cBcabB09dF0040b47f3F9CE6a58

6.png

读取返回的数据

使用Chainlink VRF

VRFConsumer合约有两个任务,一个是请求随机数,另一个是读取随机数请求的结果。首先需要向该合约充值一定的LINK:<span class="code-snippet_outer"><br/></span>

<span class="code-snippet_outer"></span>``<span class="code-snippet_outer"><span class="code-snippet__attribute"></span></span>

npx hardhat fund-link --contract  0x524Bf15C1d63581Fcf27bC34105542F53AA378Bb

7.png

充值合约

充完通证后,可以使用请求随机数 任务来执行VRF请求,并传递所需的种子值:

npx hardhat request-random-number --contract  0x524Bf15C1d63581Fcf27bC34105542F53AA378Bb  --seed '777'

8.png

使用Chainlink VRF请求随机数

成功发出对随机数的请求后,可以使用读取随机数任务 读取Chainlink预言机返回的经过验证的随机数。

npx hardhat read-random-number --contract  0x524Bf15C1d63581Fcf27bC34105542F53AA378Bb

9.png

读取返回的随机数

概括

Hardhat是一个开发环境,允许以太坊开发者们在他们的智能合约中快速整合Chainlink预言机,并能通过使用可重复的预定义任务轻松地部署和测试合约。

本文首发于:https://mp.weixin.qq.com/s/VKGz0zOEXhHlR7UBjUihcw

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Chainlink
Chainlink
顶尖的智能合约去中心化预言机网络解决方案 https://chain.link/