使用 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/

相关推荐
木西4 天前
揭秘 Web3 隐私社交标杆:CocoCat 的核心架构与智能合约实现
web3·智能合约·solidity
木西5 天前
深度拆解 Grass 模式:基于 EIP-712 与 DePIN 架构的奖励分发系统实现
web3·智能合约·solidity
木西9 天前
深度解析|Form Network:BNX 迁移模块化 L2 的全流程技术实践
web3·智能合约·solidity
木西11 天前
STEPN相关内容延续篇:基于OpenZeppelinV5与Solidity0.8.24的创新点拆解
web3·智能合约·solidity
木西12 天前
深度实战:用 Solidity 0.8.24 + OpenZeppelin V5 还原 STEPN 核心机制
web3·智能合约·solidity
这儿有一堆花13 天前
OpenAI 和 Paradigm 推出 EVMbench:AI 帮智能合约把关的新工具
人工智能·智能合约
木西15 天前
实战|DeLinkedIn 全栈开发:Web3 身份验证 + 数字资产确权,搭建职场社交新生态
web3·智能合约·solidity
Rockbean19 天前
10分钟智能合约:进阶实战-3.3 拒绝服务攻击
web3·智能合约·solidity
EHagSJVNpTY20 天前
直流电机转速、电流双闭环无静差直流调速系统Matlab/Simulink仿真模型及其详细设计说明
智能合约
Rockbean20 天前
10分钟智能合约:进阶实战-3.2.2 跨函数重入
web3·智能合约·solidity