使用 Foundry 在 Polkadot Hub 上开发与部署智能合约完整指南(安装、部署、验证、交互详解)

原文作者:PaperMoon团队

Foundry 简介

Foundry 是一套使用 Rust 编写的高性能、可移植、模块化的以太坊应用开发工具集,具有极高的执行效率和良好的开发体验。

Foundry 主要包含以下组件:

• Forge:用于测试、构建和部署智能合约的命令行工具

• Cast:用于与合约交互、发送交易和获取链上数据的多功能工具

• Anvil:用于本地开发和测试的以太坊节点

• Chisel:Solidity REPL(交互式环境),用于测试代码片段

本文将介绍如何在 Polkadot Hub 上使用 Foundry 进行合约开发,包括安装、编译、部署、验证和交互等完整流程。

Foundry 对 Polkadot 的原生支持

Foundry 的 Nightly(夜间构建版)已经内置对 Polkadot 生态链的原生支持,可直接使用以下参数:

复制代码
--chain polkadot-testnet
--chain polkadot
--chain kusama

无需手动配置 RPC 地址,大幅简化了开发流程。

环境准备(Prerequisites)

在开始之前,请确保你已经满足以下条件:

• Unix 系统(Linux / macOS)或 Windows + WSL

• 已安装 Git

拥有一个 Polkadot Hub 账户,并且已获得测试网代币

安装 Foundry(必须使用 Nightly 版本)

1. 使用 Nightly 构建版本

在 Polkadot Hub 上使用 Foundry 时,必须安装 Nightly 版本,因为稳定版不支持合约验证功能。

安装命令如下:

复制代码
curl -L https://foundry.paradigm.xyz | bash

该命令会安装 Foundry 的管理工具 foundryup。

然后执行:

复制代码
foundryup --version nightly

安装最新版 Nightly 工具链。

2. 验证安装

复制代码
forge --version

示例输出:

复制代码
forge Version: 1.6.0-nightly
Commit SHA: 8b4f318e6a3e83a06dc4e989b9aba87894dca88e
Build Timestamp: 2026-01-28T06:06:35.086737000Z (1769580395)
Build Profile: dist

初始化 Foundry 项目

创建新项目:

复制代码
forge init my-foundry-project
cd my-foundry-project

生成目录结构如下:

复制代码
src/        合约源码
script/     部署脚本
test/       测试文件
lib/        依赖库
foundry.toml 配置文件

默认会生成一个 Counter.sol 示例合约。

编译智能合约

执行编译命令:

复制代码
forge build

示例输出:

复制代码
[⠊] Compiling...
[⠒] Compiling 3 files with Solc 0.8.28
[⠢] Solc 0.8.28 finished in 1.23s
Compiler run successful!

编译产物默认输出到 out/ 目录。

配置 Foundry 支持 Polkadot Hub

编辑 foundry.toml 文件:

复制代码
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
solc_version = "0.8.28"

[etherscan]
polkadot-testnet = { key = "verifyContract", url = "https://api.routescan.io/v2/network/testnet/evm/420420417/etherscan" }

说明:

• [etherscan] 用于配置合约验证接口

• 使用 Routescan API 进行验证

支持网络与 RPC 节点信息

网络 参数 RPC 地址 Chain ID
测试网 polkadot-testnet https://services.polkadothub-rpc.com/testnet 420420417
主网 polkadot https://services.polkadothub-rpc.com/mainnet 420420419
Kusama kusama https://kusama-asset-hub-eth-rpc.polkadot.io 420420418

部署智能合约

1. 设置环境变量

创建 .env 文件:

复制代码
PRIVATE_KEY=INSERT_PRIVATE_KEY_HERE

⚠️ 注意:务必加入 .gitignore,禁止提交私钥。

加载环境变量:

复制代码
source .env

2. 使用 Forge 部署

复制代码
forge create src/Counter.sol:Counter \
    --chain polkadot-testnet \
    --rpc-url https://services.polkadothub-rpc.com/testnet \
    --private-key $PRIVATE_KEY \
    --broadcast

示例输出:

复制代码
Deployer: 0x3427D90f1Ee5c5D3627c2EBb37f90393526066fd
Deployed to: 0xF1fbAf96A16458A512A33b31c4414C4a81f50EF4
Transaction hash: 0x1cba7b61...

3. 使用脚本部署(推荐复杂项目使用)

创建脚本:

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

import {Script} from "forge-std/Script.sol";
import {Counter} from "../src/Counter.sol";

contract CounterScript is Script {
    function run() external {
        uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");

        vm.startBroadcast(deployerPrivateKey);

        Counter counter = new Counter();

        vm.stopBroadcast();
    }
}

执行:

复制代码
forge script script/Counter.s.sol:CounterScript \
    --chain polkadot-testnet \
    --broadcast

合约验证(Verify)

  1. 基础验证

    forge verify-contract INSERT_CONTRACT_ADDRESS
    src/Counter.sol:Counter
    --verifier-url 'https://api.routescan.io/v2/network/testnet/evm/420420417/etherscan'
    --etherscan-api-key "verifyContract"
    --chain polkadot-testnet

  2. 带构造函数参数的验证

    forge verify-contract INSERT_CONTRACT_ADDRESS
    src/Counter.sol:Counter
    --verifier-url 'https://api.routescan.io/v2/network/testnet/evm/420420417/etherscan'
    --etherscan-api-key "verifyContract"
    --chain polkadot-testnet
    --constructor-args $(cast abi-encode "constructor(uint256,address)" 42 INSERT_DEPLOYER_ADDRESS)

合约交互(Cast)

  1. 读取数据

    cast call INSERT_CONTRACT_ADDRESS "number()(uint256)"
    --chain polkadot-testnet

  2. 写入数据

    cast send INSERT_CONTRACT_ADDRESS "setNumber(uint256)" 42
    --chain polkadot-testnet
    --private-key $PRIVATE_KEY

  3. 查询余额

    cast balance INSERT_ACCOUNT_ADDRESS --chain polkadot-testnet

运行测试(Test)

执行全部测试:

复制代码
forge test

详细日志:

复制代码
forge test -vvv

指定测试:

复制代码
forge test --match-test testIncrement

Gas 报告:

复制代码
forge test --gas-report

总结

✅ Foundry 在 Polkadot Hub 的安装方式

✅ Nightly 版本配置方法

✅ 合约编译、部署、验证流程

✅ Cast 与 Forge 交互实践

✅ 自动化测试机制

通过 Foundry,开发者可以在 Polkadot EVM 生态中获得接近以太坊主网的开发体验,同时享受 Polkadot 的扩展性与跨链能力。

如果你正在构建 Polkadot EVM 项目,Foundry 是目前最推荐的开发工具之一。

原文链接:https://docs.polkadot.com/smart-contracts/dev-environments/foundry/

相关推荐
岁月刘声机20 小时前
电子签章在数字化进程中的占比重吗?
大数据·智能合约·业界资讯
Rockbean20 小时前
10分钟智能合约:进阶实战-3.2.1 单函数重入
web3·智能合约·solidity
暴躁小师兄数据学院3 天前
【WEB3.0零基础转行笔记】Rust编程篇-第2讲:Rust简介
笔记·rust·web3·区块链·智能合约
devmoon4 天前
为 Pallet 搭建最小化 Mock Runtime 并编写单元测试环境
开发语言·单元测试·区块链·智能合约·polkadot
devmoon4 天前
Chopsticks 本地分叉平行链实战指南
安全·智能合约·polkadot·erc-20·独立链
暴躁小师兄数据学院4 天前
【WEB3.0零基础转行笔记】Solidity编程篇-第一讲:简易存储
web3·区块链·智能合约
devmoon4 天前
运行时(Runtime)是什么?为什么 Polkadot 的 Runtime 可以被“像搭积木一样”定制
开发语言·区块链·智能合约·polkadot·runtmie
暴躁小师兄数据学院4 天前
【WEB3.0零基础转行笔记】Rust编程篇-第一讲:课程简介
rust·web3·区块链·智能合约
devmoon4 天前
在 Paseo 测试网上获取 Coretime:On-demand 与 Bulk 的完整实操指南
开发语言·web3·区块链·测试用例·智能合约·solidity