如何在Hardhat中使用Chainlink

原文链接:https://blog.chain.link/using-chainlink-with-hardhat/ 原文标题:How to Use Chainlink With Hardhat 原文作者:[Ha...

原文链接:[https://blog.chain.link/using-chainlink-with-hardhat/](https://blog.chain.link/using-chainlink-with-hardhat/) 原文标题:How to Use Chainlink With Hardhat 原文作者:[Harry Papacharissiou](https://blog.chain.link/author/harry/) ![image.png](https://img.learnblockchain.cn/2021/03/09_/174592483.png) Hardhat专注于自动化和重复性任务以及它自带[本地以太坊网络](https://hardhat.org/hardhat-network/),[Hardhat](https://hardhat.org/)正快速成为众多以太坊开发者们的开发环境选项之一。在本篇技术文中,我们将展示如何使用Hardhat来构建、部署并和使用Chainlink网络的三种不同类型的智能合约进行交互: 1. 获取外部数据的API消费者合约 1. 从[Chainlink喂价](https://docs.chain.link/docs/using-chainlink-reference-contracts)中读取最新价格的喂价消费者合约 1. 使用[Chainlink VRF](https://docs.chain.link/docs/chainlink-vrf)请求随机数的VRF消费者合约 # 概览和前置条件 Hardhat是面向以太坊开发者的开发环境,可帮助开发者管理和自动化重复性的任务。这些任务是简单可重复函数,它们包含某些元数据,比如任务需要哪些参数。一种示例任务是向已部署的合约中充值ETH或其他代币。 Hardhat还带有自己的本地开发网络[Hardhat Network](https://hardhat.org/hardhat-network/),该网络专注于Solidity调试和额外的日志记录功能,并为开发者提供了一个本地开发环境,非常适合开发和优化代码。 Hardhat的许多功能都由插件提供,这些插件本质上是注入到项目的任务或外部代码。Hardhat有两个流行的插件[web3](https://hardhat.org/plugins/nomiclabs-hardhat-web3.html)和[ethers.js](https://hardhat.org/plugins/nomiclabs-hardhat-ethers.html),开发者可用任意一个与以太坊网络进行交互。 在我们的源代码中,我们创建了一个“ Chainlink Hardhat Box”,它是一个Hardhat项目,包含所有任务以及在Solidity智能合约中需要实现和部署的,且由当前Chainlink网络提供的主要功能的智能合约。 第一步是下载Chainlink Hardhat Box的[源代码](https://github.com/pappas999/chainlink-hardhat-box)并安装所需的依赖项: ```bash git clone https://github.com/pappas999/chainlink-hardhat-box cd chainlink-hardhat-box yarn ``` 完成此操作后,需要按照项目[readme文件](https://github.com/pappas999/chainlink-hardhat-box)中的说明来设置所需的环境变量。在本教程中,我们将使用Kovan测试网。现在,可以开始部署智能合约了。 # 部署智能合约 如本文第一段提到的,Chainlink Hardhat Box项目有三个智能合约。你可以部署全部三个合约,也可以仅部署其中的一部分。为了选择要部署的合约并设置所需的环境特定参数,可以对[部署](https://github.com/pappas999/chainlink-hardhat-box/tree/main/deploy)脚本进行适当的修改。如果保留所有内容不变,它将使用默认值将全部三个合约部署到Kovan网络。在下面的示例中,我们将详解并使用项目中的默认值。 为了将我们的智能合约部署到Kovan网络,我们将使用[hardhat-deploy](https://hardhat.org/plugins/hardhat-deploy.html)插件,这是可重复部署和测试的Hardhat插件。为部署合约,我们运行以下命令: ```bash npx hardhat deploy ``` ![image.png](https://img.learnblockchain.cn/2021/03/09_/489703027.png) 部署Chainlink Hardhat Box # 运行Hardhat任务 现在已经部署了智能合约,我们将利用Hardhat任务来与部署的合约进行交互。 ## 使用Chainlink喂价 喂价消费者合约有读取喂价的任务,会从指定的喂价合约中读取最新价格。如果使用了部署中的默认值,它将在Kovan网络上查询[ETH/USD](https://feeds.chain.link/eth-usd)的价格。 ```bash npx hardhat read-price-feed --contract 0x0ef1181768A99E522FB5535fA2e0D172B36d3479 ``` ![image.png](https://img.learnblockchain.cn/2021/03/09_/420201960.png) 从喂价合约中读取数据 ## 请求外部数据 API消费者合约有两个任务,一个基于一组参数请求外部数据,另一个查看数据请求的结果。首先需要向该合约充值一定的LINK代币: ```bash npx hardhat fund-link --contract 0xc719F4B720cB7cBcabB09dF0040b47f3F9CE6a58 ``` ![image.png](https://img.learnblockchain.cn/2021/03/09_/368698717.png) 充值合约 充完代币后,可以通过将[多个参数](https://github.com/pappas999/chainlink-hardhat-box#request--receive-data)传递到请求数据任务来请求外部数据。其中合约参数是强制性的,其余是可选的: ``` npx hardhat request-data --contract 0xc719F4B720cB7cBcabB09dF0040b47f3F9CE6a58 ``` ![image.png](https://img.learnblockchain.cn/2021/03/09_/785330318.png) 请求外部数据 成功发出对外部数据的请求后,可以使用读取数据任务读取从Chainlink预言机中返回的结果。 ```bash npx hardhat read-data --contract 0xc719F4B720cB7cBcabB09dF0040b47f3F9CE6a58 ``` ![image.png](https://img.learnblockchain.cn/2021/03/09_/576593782.png) 读取返回的数据 ## 使用Chainlink VRF VRFConsumer合约有两个任务,一个是请求随机数,另一个是读取随机数请求的结果。首先需要向该合约充值一定的LINK代币: ```bash npx hardhat fund-link --contract 0x524Bf15C1d63581Fcf27bC34105542F53AA378Bb ``` ![image.png](https://img.learnblockchain.cn/2021/03/09_/887155128.png) 充值合约 充完代币后,可以使用**请求随机数**任务来执行VRF请求,并传递所需的种子值: ```bash npx hardhat request-random-number --contract 0x524Bf15C1d63581Fcf27bC34105542F53AA378Bb --seed '777' ``` ![image.png](https://img.learnblockchain.cn/2021/03/09_/400774346.png) 使用Chainlink VRF请求随机数 成功发出对随机数的请求后,可以使用**读取随机数任务**读取Chainlink预言机返回的经过验证的随机数。 ```bash npx hardhat read-random-number --contract 0x524Bf15C1d63581Fcf27bC34105542F53AA378Bb ``` ![image.png](https://img.learnblockchain.cn/2021/03/09_/366307906.png) 读取返回的随机数 # Summary # 概括 Hardhat是一个开发环境,允许以太坊开发者们在他们的智能合约中快速整合Chainlink预言机,并能通过使用可重复的预定义任务轻松地部署和测试合约。 如果你是开发人员,并且想要将智能合约连接到链下数据和系统,可以访问[开发者文档](https://docs.chain.link/)并加入[Discord](https://discordapp.com/invite/aSK4zew)上的技术讨论。如果你希望安排一个电话来更深入地讨论预言机的集成,可点击[此处](https://chainlink.typeform.com/to/gEwrPO)联系。 ## 更多有关本主题的信息 - [How to Fetch the Current Price of Cryptocurrencies in Solidity](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) - [Random Number Generation in Solidity](https://blog.chain.link/random-number-generation-solidity/) - [APIs, Smart Contracts, and How to Connect Them](https://blog.chain.link/apis-smart-contracts-and-how-to-connect-them/) - [如何在Solidity中获取加密货币的当前价格](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) - [Solidity中的随机数生成](https://blog.chain.link/random-number-generation-solidity/) - [API,智能合约以及如何连接它们](https://blog.chain.link/apis-smart-contracts-and-how-to-connect-them/) [Website](https://chain.link/) | [Twitter](https://twitter.com/chainlink) |[ Reddit](https://www.reddit.com/r/Chainlink/) | [YouTube](https://www.youtube.com/channel/UCnjkrlqaWEBSnKZQ71gdyFA) | [Telegram](https://t.me/chainlinkofficial) | [Events](https://blog.chain.link/tag/events/) | [GitHub](https://github.com/smartcontractkit/chainlink) | [Price Feeds](https://feeds.chain.link/) | [DeFi](https://www.chain.link/solutions/defi)

原文链接:https://blog.chain.link/using-chainlink-with-hardhat/ 原文标题:How to Use Chainlink With Hardhat 原文作者:Harry Papacharissiou

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

  1. 获取外部数据的API消费者合约
  2. 从Chainlink喂价中读取最新价格的喂价消费者合约
  3. 使用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/pappas999/chainlink-hardhat-box
cd chainlink-hardhat-box
yarn

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

部署智能合约

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

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

npx hardhat deploy

部署Chainlink Hardhat Box

运行Hardhat任务

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

使用Chainlink喂价

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

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

从喂价合约中读取数据

请求外部数据

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

npx hardhat fund-link --contract  0xc719F4B720cB7cBcabB09dF0040b47f3F9CE6a58

充值合约

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

npx hardhat request-data --contract  0xc719F4B720cB7cBcabB09dF0040b47f3F9CE6a58

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

npx hardhat read-data --contract  0xc719F4B720cB7cBcabB09dF0040b47f3F9CE6a58

读取返回的数据

使用Chainlink VRF

VRFConsumer合约有两个任务,一个是请求随机数,另一个是读取随机数请求的结果。首先需要向该合约充值一定的LINK代币:

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

读取返回的随机数

Summary

概括

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

如果你是开发人员,并且想要将智能合约连接到链下数据和系统,可以访问开发者文档并加入Discord上的技术讨论。如果你希望安排一个电话来更深入地讨论预言机的集成,可点击此处联系。

更多有关本主题的信息

  • How to Fetch the Current Price of Cryptocurrencies in Solidity

  • Random Number Generation in Solidity

  • APIs, Smart Contracts, and How to Connect Them

  • 如何在Solidity中获取加密货币的当前价格

  • Solidity中的随机数生成

  • API,智能合约以及如何连接它们

Website | Twitter | Reddit | YouTube | Telegram | Events | GitHub | Price Feeds | DeFi

区块链技术网。

  • 发表于 2021-03-07 22:22
  • 阅读 ( 830 )
  • 学分 ( 8 )
  • 分类:ChainLink

评论