使用 Hardhat 在 Polkadot Hub 测试网部署基础 Solidity 合约(完整实战指南)

原文作者:PaperMoon团队

前言

在智能合约开发实践中,浏览器工具(如 Remix)虽然简单易用,但并不适合团队协作、自动化测试和长期维护。

因此,在真实项目中,开发者通常会使用 Hardhat 作为完整开发框架,来完成:

• 合约编译

• 单元测试

• 调试分析

• 自动化部署

• 多网络管理

本文将演示如何使用 Hardhat,将一个基础 Solidity 合约部署到 Polkadot Hub TestNet,适合希望构建规范化开发流程的开发者阅读。

准备条件(Prerequisites)

在开始之前,请确保已具备以下环境和条件:

1. 基础 Solidity 知识

需要理解:

• 合约结构

• 状态变量

• 函数定义

• 访问修饰符

2. 安装 Node.js(22.13.1 或更高版本)

Hardhat 依赖 Node.js 运行环境,版本要求:

bash 复制代码
v22.13.1 或以上

可通过以下命令查看版本:

bash 复制代码
node -v

3. 测试币(Gas 费用)

需要从 Polkadot 官方 Faucet 获取测试代币,用于支付部署交易的 Gas 费用。

4. 准备私钥钱包

需要一个可用于签名交易的钱包私钥,用于部署合约。

科普说明:

Hardhat 是在本地发起交易的工具,因此需要直接使用私钥进行签名,而不是通过浏览器插件。

创建 Hardhat 项目(Set Up Your Project)

首先,通过终端创建项目目录并初始化 Hardhat 工程。

执行以下命令:

bash 复制代码
mkdir hardhat-deployment
cd hardhat-deployment
npx hardhat@^2.27.0 init

说明:

命令 作用
mkdir 创建项目文件夹
cd 进入目录
npx hardhat init 初始化 Hardhat 项目

初始化完成后,Hardhat 会生成基础项目结构。

配置 Hardhat(Configure Hardhat)

接下来需要配置网络信息,使 Hardhat 能连接到 Polkadot Hub 测试网。

1. 打开配置文件

编辑项目根目录中的:

bash 复制代码
hardhat.config.ts

2. 修改配置内容

将文件更新为以下示例内容:

bash 复制代码
import type { HardhatUserConfig } from 'hardhat/config';

import hardhatToolboxViemPlugin from '@nomicfoundation/hardhat-toolbox-viem';
import { vars } from 'hardhat/config';

const config: HardhatUserConfig = {
  plugins: [hardhatToolboxViemPlugin],
  solidity: {
    version: '0.8.28',
    settings: {
      optimizer: {
        enabled: true,
        runs: 200,
      },
    },
  },
  networks: {
    polkadotTestnet: {
      url: 'https://services.polkadothub-rpc.com/testnet',
      chainId: 420420417,
      accounts: [vars.get('PRIVATE_KEY')],
    },
  },
};

export default config;

3. 配置说明

重点配置项解释如下:

(1)Solidity 编译器版本

bash 复制代码
version: '0.8.28'

(2)优化器设置

bash 复制代码
optimizer: {
  enabled: true,
  runs: 200,
}

用于降低 Gas 消耗,提高合约执行效率。

(3)网络配置

bash 复制代码
polkadotTestnet: {
  url: 'https://services.polkadothub-rpc.com/testnet',
  chainId: 420420417,
  accounts: [vars.get('PRIVATE_KEY')],
}

作用:

• url:RPC 接口地址

• chainId:网络唯一标识

• accounts:用于签名的私钥

4. 私钥管理提示

建议通过 Hardhat 的变量系统管理私钥,避免明文写入配置文件。

创建智能合约(Create the Contract)

1. 删除默认合约

进入:

bash 复制代码
contracts/

删除目录中的默认示例文件。

2. 新建 Storage.sol

创建新文件:

bash 复制代码
contracts/Storage.sol

并写入以下代码:

bash 复制代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

contract Storage {
    uint256 private storedNumber;

    function store(uint256 num) public {
        storedNumber = num;
    }

    function retrieve() public view returns (uint256) {
        return storedNumber;
    }
}

3. 合约功能说明

该合约提供最基础的存储功能:

函数 功能
store 保存数值
retrieve 读取数值

用于演示链上状态读写。

编译合约(Compile the Contract)

使用以下命令进行编译:

bash 复制代码
npx hardhat compile

成功后,终端将显示类似信息:

bash 复制代码
Downloading solc 0.8.28
Compiled 1 Solidity file with solc 0.8.28

说明:

• 自动下载指定版本编译器

• 生成字节码和 ABI 文件

编写部署模块(Deploy Module)

Hardhat 使用 Ignition 模块系统 管理部署流程。

  1. 删除默认模块文件

进入:

bash 复制代码
ignition/modules/

删除默认文件。

  1. 创建 Storage.ts

新建文件:

bash 复制代码
ignition/modules/Storage.ts

写入以下内容:

bash 复制代码
import { buildModule } from '@nomicfoundation/hardhat-ignition/modules';

export default buildModule('StorageModule', (m) => {
  const storage = m.contract('Storage');
  return { storage };
});
  1. 模块说明

该模块定义了:

• 部署名为 Storage 的合约

• 并将部署结果返回给 Hardhat

部署合约到测试网(Deploy the Contract)

使用以下命令开始部署:

bash 复制代码
npx hardhat ignition deploy ignition/modules/Storage.ts --network polkadotTestnet
  1. 确认网络信息

终端会提示确认网络:

bash 复制代码
✔ Confirm deploy to network polkadotTestnet (420420417)? ... yes

输入:

bash 复制代码
yes

继续执行。

  1. 部署成功提示

成功后终端会显示:

bash 复制代码
Deploying [ StorageModule ]
[ StorageModule ] successfully deployed 🚀

Deployed Addresses

Storage - 0x12345.....

其中:

• 0x12345... 为合约部署地址

• 可用于后续交互与验证

部署流程回顾

完整流程总结如下:

1️⃣ 初始化 Hardhat 项目

2️⃣ 配置 Polkadot 测试网

3️⃣ 编写 Storage 合约

4️⃣ 编译源码

5️⃣ 编写 Ignition 模块

6️⃣ 发起部署交易

7️⃣ 获得合约地址

至此,已完成完整标准化部署流程。

Hardhat 部署模式的实践价值

与 Remix 相比,Hardhat 更适合真实项目开发。

主要优势包括:

  1. 支持自动化流程

• CI/CD 集成

• 批量部署

• 多环境管理

  1. 更安全的密钥管理

• 环境变量

• 密钥隔离

• 权限控制

  1. 适合团队协作

• 代码规范统一

• 部署可复现

• 版本可追踪

  1. 易于扩展,可集成:

• 测试框架

• 审计工具

• 分析插件

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

相关推荐
威胁猎人2 小时前
【黑产大数据】2025年全球KYC攻击风险研究报告
大数据·区块链
焦点链创研究所3 小时前
去中心化实体基础设施网络的崛起:比较分析
网络·去中心化·区块链
MicroTech20259 小时前
微算法科技(NASDAQ :MLGO)量子测量区块链共识机制:保障数字资产安全高效存储与交易
科技·安全·区块链
区块链蓝海10 小时前
Ardor v2.6.0 正式发布:Nxt迁移完成,Ardor迈入多链协同新阶段
人工智能·区块链
MQLYES10 小时前
02-UniswapV1-源码篇
去中心化·区块链
devmoon10 小时前
快速了解兼容 Ethereum 的 JSON-RPC 接口
开发语言·网络·rpc·json·区块链·智能合约·polkadot
devmoon10 小时前
用Remix IDE在Polkadot Hub部署一个最基础的Solidity 合约(新手友好)
web3·区块链·智能合约·编译·remix·polkadot
暴躁小师兄数据学院11 小时前
【WEB3.0零基础转行笔记】Golang编程篇-第4讲:Go语言中的流程控制
开发语言·后端·golang·web3·区块链
devmoon11 小时前
使用 Remix IDE 在 Polkadot Hub 测试网部署 ERC-20 代币(新手完整实战教程)
web3·区块链·智能合约·solidity·remix·polkadot·erc-20