在本篇技术文中,我们将展示如何使用 Hardhat 来构建、部署并和使用Chainlink网络的三种不同类型的智能合约进行交互:1. 获取外部数据的API消费者合约 2. 从Chainlink喂价中读取最新价格的喂价消费者合约 3. 使用Chainlink VRF请求随机数的VRF消费者合约
原文链接:https://blog.chain.link/using-chainlink-with-hardhat/
原文作者:Harry Papacharissiou
Hardhat专注于自动化和重复性任务以及它自带本地以太坊网络,Hardhat正快速成为众多以太坊开发者们的开发环境选项之一。在本篇技术文中,我们将展示如何使用Hardhat来构建、部署并和使用Chainlink网络的三种不同类型的智能合约进行交互:
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
部署Chainlink Hardhat Box
现在已经部署了智能合约,我们将利用Hardhat任务来与部署的合约进行交互。
喂价消费者合约有读取喂价的任务,会从指定的喂价合约中读取最新价格。如果使用了部署中的默认值,它将在Kovan网络上查询ETH/USD的价格。<span class="code-snippet_outer"><br/></span>
<span class="code-snippet_outer"></span>
npx hardhat read-price-feed --contract 0x0ef1181768A99E522FB5535fA2e0D172B36d3479
从喂价合约中读取数据
API消费者合约有两个任务,一个基于一组参数请求外部数据,另一个查看数据请求的结果。首先需要向该合约充值一定的LINK:
npx hardhat request-data --contract 0xc719F4B720cB7cBcabB09dF0040b47f3F9CE6a58
充值合约
充完通证后,可以通过将多个参数传递到请求数据任务来请求外部数据。其中合约参数是强制性的,其余是可选的:
npx hardhat request-data --contract 0xc719F4B720cB7cBcabB09dF0040b47f3F9CE6a58
请求外部数据
成功发出对外部数据的请求后,可以使用读取数据任务读取从Chainlink预言机中返回的结果。
npx hardhat read-data --contract 0xc719F4B720cB7cBcabB09dF0040b47f3F9CE6a58
读取返回的数据
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
充值合约
充完通证后,可以使用请求随机数 任务来执行VRF请求,并传递所需的种子值:
npx hardhat request-random-number --contract 0x524Bf15C1d63581Fcf27bC34105542F53AA378Bb --seed '777'
使用Chainlink VRF请求随机数
成功发出对随机数的请求后,可以使用读取随机数任务 读取Chainlink预言机返回的经过验证的随机数。
npx hardhat read-random-number --contract 0x524Bf15C1d63581Fcf27bC34105542F53AA378Bb
读取返回的随机数
Hardhat是一个开发环境,允许以太坊开发者们在他们的智能合约中快速整合Chainlink预言机,并能通过使用可重复的预定义任务轻松地部署和测试合约。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!