使用 Hardhat 在 Polkadot Hub 上部署 ERC-20 代币完整指南

原文作者:PaperMoon团队


什么是 ERC-20?

ERC-20 是以太坊生态中最常见的一种同质化代币标准,广泛用于发行加密货币、治理代币、质押奖励代币等。只要遵循 ERC-20 标准规范,代币就可以被主流钱包、交易所和 DeFi 协议兼容和识别。

随着 Polkadot Hub 提供对以太坊虚拟机(EVM)的兼容支持,开发者现在也可以使用熟悉的 Solidity 语言和开发工具,在 Polkadot 生态中部署 ERC-20 合约。

本文将系统介绍如何使用 Hardhat,在 Polkadot Hub 测试网络上部署一个标准 ERC-20 合约,并完成编译、测试和发布全过程。

本教程将演示以下完整流程:
    •    使用官方示例模板初始化项目
    •    配置 Hardhat 连接 Polkadot 测试网
    •    编译 Solidity 合约
    •    执行自动化测试
    •    使用 Hardhat Ignition 完成部署

示例中的 ERC-20 合约来源于 OpenZeppelin 官方实现,也可以通过 OpenZeppelin Contract Wizard 生成。

环境准备与前置条件

在开始操作之前,需要确保已经具备以下条件:

首先,需要对 Solidity 语言和 ERC-20 标准有基本理解,了解代币合约的基本结构和工作原理。

其次,本地需要安装 Node.js,版本要求为 v22.13.1 或更高。

第三,需要准备测试网代币,用于支付交易手续费。这些测试代币可以通过 Polkadot 官方水龙头获取。

同时,还需要准备一个钱包私钥,用于签名部署交易。请务必妥善保存私钥,避免泄露。

项目初始化与模板获取

为了简化开发流程,本教程使用官方提供的 Hardhat ERC-20 示例模板。

1. 克隆示例仓库

首先,在终端中执行以下命令:

git clone https://github.com/polkadot-developers/revm-hardhat-examples/
cd revm-hardhat-examples/erc20-hardhat

该仓库中已经包含完整的 ERC-20 示例项目结构。

2. 安装项目依赖

进入项目目录后,执行:

npm i

该命令会自动安装 Hardhat、Ethers.js、TypeScript、测试工具等必要依赖。

安装完成后,项目即可用于合约开发和部署。

Hardhat 配置说明

在示例项目中,hardhat.config.ts 文件已经预先配置好连接 Polkadot 测试网的参数。

示例配置如下:

import { HardhatUserConfig, vars } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";

const config: HardhatUserConfig = {
  solidity: {
    version: "0.8.28",
    settings: {
      optimizer: {
        enabled: true,
        runs: 200,
      },
    },
  },
  networks: {
    polkadotTestnet: {
      url: vars.get("TESTNET_URL", "http://127.0.0.1:8545"),
      accounts: vars.has("TESTNET_PRIVATE_KEY") ? [vars.get("TESTNET_PRIVATE_KEY")] : [],
    },
  },
  mocha: {
    timeout: 40000,
  },
};

export default config;

配置说明

该配置文件主要包含以下内容:

首先指定了 Solidity 编译器版本为 0.8.28,并开启优化模式,以提升合约运行效率。

其次,在 networks 中定义了 polkadotTestnet 网络,通过环境变量读取 RPC 地址和私钥,避免将敏感信息直接写入代码。

此外,还设置了测试框架 Mocha 的超时时间,防止链上操作因网络延迟而失败。

这种方式符合安全最佳实践,建议开发者在正式项目中始终使用环境变量管理密钥信息。

编译智能合约

在完成配置后,可以开始编译合约。

在终端中执行:

npx hardhat compile

Hardhat 会自动调用 Solidity 编译器,并生成 ABI、字节码和 TypeChain 类型文件。

如果编译成功,终端会显示类似如下信息:

Generating typings for: 23 artifacts in dir: typechain-types for target: ethers-v6
Successfully generated 62 typings!
Compiled 21 Solidity files successfully (evm target: paris).

这表示所有合约文件已经成功编译。

运行合约测试

示例项目中已经包含完整的测试文件:

test/MyToken.test.ts

该测试文件主要验证以下内容:
    •    代币名称和符号是否正确
    •    合约所有者是否设置正确
    •    初始供应量是否为 0
    •    所有者是否可以铸币
    •    总供应量是否正确增长
    •    多次铸币后的余额变化是否准确

执行测试命令

运行以下命令:

npx hardhat test --network polkadotTestnet

如果测试通过,终端将显示:

6 passing (369ms)

这表示所有逻辑验证均已成功完成,合约行为符合预期。

自动化测试是智能合约开发中非常重要的一环,可以有效降低上线风险。

部署 ERC-20 合约

当合约编译和测试都完成后,就可以正式部署到测试网。

本示例使用 Hardhat Ignition 作为部署工具。

执行部署命令

在终端运行:

npx hardhat ignition deploy ./ignition/modules/MyToken.ts --network polkadotTestnet

系统会提示确认部署网络和链 ID:

✔ Confirm deploy to network polkadotTestnet (420420417)? … yes

确认后,Ignition 将开始执行部署流程。

部署过程示例输出

Hardhat Ignition 🚀

Deploying [ TokenModule ]

Batch #1
Executed TokenModule#MyToken

Batch #2
Executed TokenModule#MyToken.mint

[ TokenModule ] successfully deployed 🚀

部署完成后,会显示合约地址:

TokenModule#MyToken - 0xc01Ee7f10EA4aF4673cFff62710E1D7792aBa8f3

该地址即为你的 ERC-20 合约在 Polkadot 测试网中的实际部署位置。

部署结果说明

至此,你已经成功完成以下工作:
    •    使用 Hardhat 初始化项目
    •    配置 Polkadot 测试网环境
    •    编译并验证 ERC-20 合约
    •    通过自动化测试保障质量
    •    成功部署到链上网络

该 ERC-20 合约现在已经可以被钱包、区块浏览器和其他 DApp 调用和交互。

你可以基于该合约继续开发以下功能:
    •    代币空投系统
    •    质押挖矿模块
    •    治理投票系统
    •    DeFi 协议集成
    •    NFT 或 GameFi 经济模型

原文链接:https://docs.polkadot.com/smart-contracts/cookbook/smart-contracts/deploy-erc20/erc20-hardhat/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值