原文作者: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/

5454

被折叠的 条评论
为什么被折叠?



