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

原文作者:PaperMoon团队


前言

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

因此,在真实项目中,开发者通常会使用 Hardhat 作为完整开发框架,来完成:
    •    合约编译
    •    单元测试
    •    调试分析
    •    自动化部署
    •    多网络管理

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

准备条件(Prerequisites)

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

1. 基础 Solidity 知识

需要理解:
    •    合约结构
    •    状态变量
    •    函数定义
    •    访问修饰符

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

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

v22.13.1 或以上

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

node -v

3. 测试币(Gas 费用)

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

4. 准备私钥钱包

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

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

创建 Hardhat 项目(Set Up Your Project)

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

执行以下命令:

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. 打开配置文件

编辑项目根目录中的:

hardhat.config.ts

2. 修改配置内容

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

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 编译器版本

version: '0.8.28'

(2)优化器设置

optimizer: {
  enabled: true,
  runs: 200,
}

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

(3)网络配置

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. 删除默认合约

进入:

contracts/

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

2. 新建 Storage.sol

创建新文件:

contracts/Storage.sol

并写入以下代码:

// 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)

使用以下命令进行编译:

npx hardhat compile

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

Downloading solc 0.8.28
Compiled 1 Solidity file with solc 0.8.28

说明:
    •    自动下载指定版本编译器
    •    生成字节码和 ABI 文件

编写部署模块(Deploy Module)

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

1. 删除默认模块文件

进入:

ignition/modules/

删除默认文件。

2. 创建 Storage.ts

新建文件:

ignition/modules/Storage.ts

写入以下内容:

import { buildModule } from '@nomicfoundation/hardhat-ignition/modules';

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

3. 模块说明

该模块定义了:
    •    部署名为 Storage 的合约
    •    并将部署结果返回给 Hardhat

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

使用以下命令开始部署:

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

1. 确认网络信息

终端会提示确认网络:

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

输入:

yes

继续执行。

2. 部署成功提示

成功后终端会显示:

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 集成
    •    批量部署
    •    多环境管理
2. 更安全的密钥管理
    •    环境变量
    •    密钥隔离
    •    权限控制
3. 适合团队协作
    •    代码规范统一
    •    部署可复现
    •    版本可追踪

4. 易于扩展,可集成:
    •    测试框架
    •    审计工具
    •    分析插件

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值