在 Quai Network 上部署简单单链智能合约的指南。
NodeJS | Javascript 运行时环境。请使用 LTS 版本。 |
hardhat-example | 包含 Quai Network 示例合约和部署脚本的 Hardhat 项目。 |
Quais.js | 用于与 Quai Network 交互的 JavaScript 库。 |
hardhat-example
仓库,导航到本教程将使用的 Solidity
目录,并通过 npm
安装依赖项。
Solidity/
目录包含 2 个示例合约:contracts/
目录中的 ERC20.sol
和 ERC721.sol
。这两个合约都是从 Open Zeppelin 库 派生的实现。
本教程将使用 ERC20.sol
示例合约,但您也可以添加自己的合约或使用其他库的合约。
hardhat-example
仓库的根目录中包含了一个示例环境文件 .env.dist
,用于安全地管理代币详情、私钥和 RPC URL。
.env.dist
文件是一个模板文件,不应直接使用。您应该将 .env.dist
文件复制到新的 .env
文件。此文件位于 hardhat-example
仓库的根目录,作为 Solidity/
目录的配置文件。.env.dist
文件复制到仓库根目录的新 .env
文件:
.env
文件并添加您的私钥、RPC URL 和要部署的合约的代币参数。.env
文件应如下所示:
PK
值必须都是唯一地址的私钥,并对应于区域名称,即您的 CYPRUS1_PK
应该是您的 Cyprus1 地址的私钥。hardhat-example
仓库使用 Quais SDK 仅使用一个 RPC URL 配置网络连接。要了解有关 SDK 如何配置网络提供者的更多信息,请访问 SDK 提供者示例部分。
填写私钥和 RPC URL 后,我们现在可以在 hardhat.config.js
中安全地使用它们了。
hardhat.config.js
文件来配置智能合约部署。配置文件允许您定义部署网络、任务、编译器等。
hardhat-example
包含一个预构建的 hardhat.config.js
文件,其中包含用于在网络中的任何分片上部署和验证智能合约的配置。
示例 hardhat 配置文件
hardhat-example
仓库的一部分提供。cyprus1
cyprus2
cyprus3
paxos1
paxos2
paxos3
hydra1
hydra2
hydra3
hardhat.config.js
将从 .env
文件中提取您的私钥和 RPC URL,并使用它们来部署和验证您的合约。您还可以在 solidity
对象中指定 Solidity 版本和编译器设置。
使用 Hardhat 编译
npx
完成。使用以下命令编译 contracts/
目录中的所有合约:配置部署脚本
scripts/
目录中,您会找到 ERC20 和 ERC721 合约的部署脚本:deployERC20.js
和 deployERC721.js
。在本教程中,我们将部署一个 ERC20 合约。deployERC20.js
脚本从 hardhat.config.js
中提取您的网络配置,从仓库根目录的 .env
文件中提取您的代币参数,并使用它们来部署您的合约。代币参数通过 tokenArgs
数组使用:provider
和 wallet
变量中与编译的合约 ABI 和字节码结合使用,以创建新的合约实例:deployERC721.js
脚本以类似的方式运行,但具有不同的合约参数和不同的合约 ABI 和字节码。您可以为要部署的任何合约复制此配置。部署您的合约
--network
标志来指定您要部署到的网络(可用选项可以在这里找到)。在本教程中,我们将部署到 cyprus1
。ERC20.sol
和 ERC721.sol
示例合约是每种代币的基本实现,仅供示例使用。强烈建议在将这些合约用于任何生产用途之前,根据您的具体用例进行修改。