使用 Solidity 进行部署
在 Quai Network 上部署简单的单链智能合约的指南。
介绍
本文展示了如何使用 Hardhat 在 Quai Network 的任何链上部署 Solidity 智能合约。
先决条件
要在 Quai 上部署单链智能合约,我们需要一些工具包和依赖项。以下是我们将使用的所有依赖项的概述:
NodeJS 的 | Javascript 运行时环境。使用 LTS 版本。 |
hardhat 示例 | 一个 Hardhat 项目,其中包含 Quai Network 的示例合同和部署脚本。 |
Quais.js | 用于与 Quai Network 交互的 JavaScript 库。 |
环境设置
安装示例存储库
首先克隆存储库,导航到我们将用于本教程的目录,然后通过 .hardhat-example
Solidity
npm
智能合约
该目录附带 2 个示例 contracts:和目录内。这两个协定都是从 Open Zeppelin 库派生的实现。Solidity/
ERC20.sol
ERC721.sol
contracts/
在本教程中,我们将使用示例协定,但您也可以添加自己的协定或使用其他库中的协定。ERC20.sol
Quai Network EVM 支持最高 0.8.20 的 Solidity 版本。使用较新版本的 Solidity 可能会导致在部署智能时出现错误 合同。
环境变量
我们在存储库的根目录中包含一个示例环境文件 , file ,用于以安全的方式管理令牌详细信息、私钥和 RPC URL。.env.dist
hardhat-example
该文件是模板文件,不应按原样使用。您应该将文件复制到新文件。.env.dist
.env.dist
.env
此文件位于存储库的根目录中,用作 和 目录的配置文件。hardhat-example
Solidity/
SolidityX/
使用以下命令将根目录中的文件复制到存储库根目录中的新文件:.env.dist
.env
打开文件并添加您要部署的合约的私钥、RPC URL 和令牌参数。该文件应如下所示:.env
.env
这些值必须全部用于唯一地址,并且与区域名称相对应,即 your 应该是 Cyprus1 地址。PK
CYPRUS1_PK
有关 RPC 端点的更多信息,请参阅本地节点的本地网络规范部分和远程节点的 devnet 规范部分。
存储库使用 Quais SDK 仅使用单个 RPC URL 配置网络连接。要了解有关 SDK 如何配置网络提供商的更多信息,请访问 SDK 提供商示例部分。hardhat-example
填写您的私钥 RPC URL 后,我们现在就可以在 .hardhat.config.js
Hardhat 配置
Hardhat 使用文件来配置智能合同部署。配置文件允许您定义部署网络、任务、编译器等。hardhat.config.js
hardhat-example
包含一个预构建文件,其中包含用于在网络中的任何分片上部署和验证智能合约的配置。hardhat.config.js
示例 hardhat 配置文件
在部署或验证合约时,将从文件中提取您的私钥和 RPC URL,并使用它们来部署和验证您的合约。您还可以在对象中指定 Solidity 版本和编译器设置。hardhat.config.js
.env
solidity
部署和交互
使用 Hardhat 编译
使用 Hardhat 进行智能合约编译很简单,可以在 CLI 中使用来完成。npx
使用以下命令编译目录内的所有合约:contracts/
它应该输出:
配置部署脚本
在该目录中,您将找到 ERC20 和 ERC721 合约的部署脚本:和 .在本教程中,我们将部署 ERC20 合约。scripts/
deployERC20.js
deployERC721.js
该脚本从存储库根目录中的文件中提取您的网络配置和令牌参数,并使用它们来部署您的合约。deployERC20.js
hardhat.config.js
.env
令牌参数通过数组使用:tokenArgs
您指定的网络配置和部署帐户将在 and 变量中与编译的合约 ABI 和字节码一起使用,以创建新的合约实例:provider
wallet
我们将使用这些思路来适当修改 token args 和 network specification,以便在下一步中部署我们的合约。
该脚本以类似的方式运行,但具有不同的合约参数和不同的合约 ABI 和 字节码。您可以为要部署的任何合约复制此配置。deployERC721.js
部署您的合同
deploy 脚本采用一个标志来指定要部署到的网络(可用选项可在此处找到)。在本教程中,我们将部署到 .--network
cyprus1
它应该输出:
恭喜,您现在已经将 ERC20 代币部署到 Quai Network!
和 sample contracts 是每个代币的基本实现,例如。强烈推荐 修改这些合同以适应您的特定使用案例,然后再将其部署用于任何生产用途。ERC20.sol
ERC721.sol
总结
现在,您拥有创建简单的 Hardhat 项目、部署自己的智能合约并与之交互所需的所有工具。