相关文章推荐 | 链接 |
---|---|
Web3专栏 | https://blog.csdn.net/qq_42392981/category_13016259.html |
在 VSCode 中基于 Foundry 快速构建 Solidity 智能合约本地开发环境
-
- 引言
- [1. 开发环境准备(Windows)](#1. 开发环境准备(Windows))
-
- [1.1 安装 VSCode](#1.1 安装 VSCode)
- [1.2 安装推荐插件](#1.2 安装推荐插件)
- [1.3 安装 Foundry](#1.3 安装 Foundry)
- [1.4 验证 Forge 和 Anvil 安装成功](#1.4 验证 Forge 和 Anvil 安装成功)
- [2. 创建 Solidity 项目(使用 Foundry)](#2. 创建 Solidity 项目(使用 Foundry))
-
- [2.1 使用 Forge Init 创建项目](#2.1 使用 Forge Init 创建项目)
- [2.2 项目目录结构解析](#2.2 项目目录结构解析)
- [2.3 配置文件 foundry.toml 的作用说明](#2.3 配置文件 foundry.toml 的作用说明)
- [3. 编写智能合约与单元测试](#3. 编写智能合约与单元测试)
-
- [3.1 编写简单合约示例(Counter.sol)](#3.1 编写简单合约示例(Counter.sol))
- [3.2 编写测试用例(使用 Forge 测试框架)](#3.2 编写测试用例(使用 Forge 测试框架))
- [3.3 运行本地测试命令](#3.3 运行本地测试命令)
- [4. 使用 Foundry 搭建本地测试网络](#4. 使用 Foundry 搭建本地测试网络)
-
- [4.1 启动本地节点 Anvil](#4.1 启动本地节点 Anvil)
- [4.2 使用 Anvil 模拟本地区块链环境](#4.2 使用 Anvil 模拟本地区块链环境)
- [4.3 在本地部署合约(使用 Forge Script)](#4.3 在本地部署合约(使用 Forge Script))
- [5. 使用 Anvil 生成的私钥通过欧易连接本地区块链](#5. 使用 Anvil 生成的私钥通过欧易连接本地区块链)
-
- [5.1 下载欧易插件](#5.1 下载欧易插件)
- [5.2 导入私钥](#5.2 导入私钥)
- [5.3 设置自定义网络](#5.3 设置自定义网络)
- [6. 脚本部署与调试演示](#6. 脚本部署与调试演示)
-
- [6.1 编写部署脚本(script/Deploy.s.sol)](#6.1 编写部署脚本(script/Deploy.s.sol))
- [6.2 运行部署脚本连接 Anvil](#6.2 运行部署脚本连接 Anvil)
- [6.3 在终端查看交易过程和输出](#6.3 在终端查看交易过程和输出)
- 结语
- 参考链接
引言
作为 Solidity 初学者或中级开发者,你可能希望在本地环境中快速开发和测试智能合约。Foundry 是一个高效的以太坊开发工具链,支持 Solidity 合约的编写、测试和部署,而 VSCode 则提供优秀的代码编辑支持。本教程将指导你在 Windows 系统下搭建环境、创建项目、编写合约、进行单元测试,并使用本地网络进行部署和调试。所有步骤均针对 Windows 环境,确保易于复现。
前提条件:
- Windows 10 或更高版本。
- 基本命令行操作知识(Git bash)。
- 安装 Git(如果未安装,可从 Git 官网 下载)。
1. 开发环境准备(Windows)
1.1 安装 VSCode
- 访问 VSCode 官网 下载 Windows 安装包。
- 双击安装包,按照提示完成安装。
- 启动 VSCode,确认界面正常。

1.2 安装推荐插件
在 VSCode 中打开扩展面板(Ctrl + Shift + X),搜索并安装以下插件:
- Solidity(由 Juan Blanco 开发):提供 Solidity 语法高亮、自动补全和 linting。
- Prettier - Code formatter:自动格式化代码,确保一致性。
- Solidity Visual Developer:增强 Solidity 可视化,如函数调用图和审计工具。
安装后,重启 VSCode 以生效。

1.3 安装 Foundry
可以参考我的另外一篇详细安装Foundry的文章
:Foundry安装和使用指南
官网安装指南
:https://getfoundry.sh/
Foundry 通过 foundryup
安装脚本进行安装。在 Windows 上,使用 Git bash 执行以下步骤:
-
打开 Git bash。
-
执行以下命令下载并安装 Foundry:
powershellcurl -L https://foundry.paradigm.xyz | Invoke-Expression
这将安装
foundryup
,然后运行foundryup
更新到最新版本。注意:如果 curl 未安装,确保你的 Windows 已启用(或通过 Git Bash 使用)。

1.4 验证 Forge 和 Anvil 安装成功
在 Git Bash 中运行以下命令验证:
powershell
forge --version
anvil --version
输出类似 forge Version 0.x.x
和 anvil Version 0.x.x
表示安装成功。

2. 创建 Solidity 项目(使用 Foundry)
2.1 使用 Forge Init 创建项目
-
在 Git Bash 中导航到你想要的目录(例如:
cd C:\Projects
)。 -
创建并初始化项目:
powershellforge init my-solidity-project cd my-solidity-project
这将生成一个模板项目。

2.2 项目目录结构解析
初始化后,项目结构如下:
- src/:存放智能合约源代码(例如 Counter.sol)。
- test/:存放单元测试文件(例如 Counter.t.sol)。
- script/:存放部署和交互脚本(例如 Deploy.s.sol)。
- lib/:存放依赖库(如 Forge-Std)。
- foundry.toml:配置文件。
- .git/ :Git 版本控制目录。
2.3 配置文件 foundry.toml 的作用说明
foundry.toml
是 Foundry 的配置文件,用于自定义构建、测试和部署行为。默认内容包括:
toml
[profile.default]
src = 'src'
out = 'out'
libs = ['lib']
- src:源代码目录。
- out:编译输出目录。
- libs:依赖库目录。
可以查看详细配置
:foundry.toml详细配置
3. 编写智能合约与单元测试
3.1 编写简单合约示例(Counter.sol)
在 VSCode 中打开项目,编辑 src/Counter.sol
:
solidity
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
contract Counter {
uint256 public number;
function setNumber(uint256 newNumber) public {
number = newNumber;
}
function increment() public {
number++;
}
}

3.2 编写测试用例(使用 Forge 测试框架)
编辑 test/Counter.t.sol
:
solidity
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
import {Test, console} from "forge-std/Test.sol";
import {Counter} from "../src/Counter.sol";
contract CounterTest is Test {
Counter public counter;
function setUp() public {
counter = new Counter();
counter.setNumber(0);
}
function test_Increment() public {
counter.increment();
assertEq(counter.number(), 1);
}
function testFuzz_SetNumber(uint256 x) public {
counter.setNumber(x);
assertEq(counter.number(), x);
}
}

3.3 运行本地测试命令
在 Git Bash中运行:
powershell
forge build
forge test
forge build
:编译合约。forge test
:运行测试用例。

4. 使用 Foundry 搭建本地测试网络
4.1 启动本地节点 Anvil
Anvil 是 Foundry 的本地以太坊模拟器。在新建的 Git Bash窗口中运行:
powershell
anvil --accounts 10 --balance 100
--accounts 10
:生成 10 个测试账户。--balance 100
:每个账户初始余额 100 ETH。
Anvil 会输出 RPC URL(如 http://127.0.0.1:8545
)和测试账户私钥。

4.2 使用 Anvil 模拟本地区块链环境
Anvil 模拟完整的以太坊环境,支持合约部署和交易模拟。保持 Anvil 窗口打开,作为本地链。
4.3 在本地部署合约(使用 Forge Script)
使用脚本部署到 Anvil
本地链。
5. 使用 Anvil 生成的私钥通过欧易连接本地区块链
在区块链开发和测试中,本地模拟环境是必不可少的工具。Foundry 框架中的 Anvil 是一个高效的本地以太坊节点模拟器,它可以快速启动一个测试链,并生成测试账户和私钥。本文将介绍如何使用 Anvil 生成私钥,然后通过欧易(OKX)Web3 钱包导入这些私钥,并连接到本地区块链节点。这适用于开发者在本地测试智能合约、DApp 或钱包集成时使用。
shell
pc@DESKTOP-C1KR1ML MINGW64 /e/web3
$ anvil --accounts 10 --balance 100
_ _
(_) | |
__ _ _ __ __ __ _ | |
/ _` | | '_ \ \ \ / / | | | |
| (_| | | | | | \ V / | | | |
\__,_| |_| |_| \_/ |_| |_|
1.2.3-stable (a813a2cee7 2025-06-08T15:44:09.674540400Z)
https://github.com/foundry-rs/foundry
Available Accounts
==================
(0) 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 (100.000000000000000000 ETH)
(1) 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 (100.000000000000000000 ETH)
(2) 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC (100.000000000000000000 ETH)
(3) 0x90F79bf6EB2c4f870365E785982E1f101E93b906 (100.000000000000000000 ETH)
(4) 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 (100.000000000000000000 ETH)
(5) 0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc (100.000000000000000000 ETH)
(6) 0x976EA74026E726554dB657fA54763abd0C3a0aa9 (100.000000000000000000 ETH)
(7) 0x14dC79964da2C08b23698B3D3cc7Ca32193d9955 (100.000000000000000000 ETH)
(8) 0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f (100.000000000000000000 ETH)
(9) 0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 (100.000000000000000000 ETH)
Private Keys
==================
(0) 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
(1) 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d
(2) 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a
(3) 0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6
(4) 0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a
(5) 0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba
(6) 0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e
(7) 0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356
(8) 0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97
(9) 0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6
Wallet
==================
Mnemonic: test test test test test test test test test test test junk
Derivation path: m/44'/60'/0'/0/
Chain ID
==================
31337
Base Fee
==================
1000000000
Gas Limit
==================
30000000
Genesis Timestamp
==================
1754019204
Genesis Number
==================
0
Listening on 127.0.0.1:8545
5.1 下载欧易插件
要使用欧易(OKX)Web3 钱包与本地区块链交互,首先需要安装 OKX 钱包插件。以下是具体步骤:
-
访问 OKX 官网:
- 打开浏览器,前往 插件市场 (https://chromewebstore.google.com/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge?hl=zh-CN)。
- 下载浏览器扩展版本。
- 安装完成后,浏览器右上角会显示 OKX 钱包图标。
-
初始化钱包:
- 点击 OKX 钱包图标,按照提示设置密码并完成初始化。
- 备份助记词(若新建钱包),并妥善保存。注意:助记词仅用于新钱包创建,导入私钥时无需使用。
注意:确保从官方渠道下载插件,避免使用非官方来源以防止安全风险。
5.2 导入私钥
使用 Anvil 生成的私钥导入 OKX 钱包,可以快速接入测试账户。以下是导入步骤:
-
打开 OKX 钱包:
- 点击浏览器右上角的 OKX 钱包图标,进入钱包界面。
- 如果使用移动端 App,打开 OKX Web3 钱包应用。
-
选择导入选项:
- 在钱包界面,点击"添加钱包"或"我已经有钱包"。
- 选择"导入私钥"选项。
-
输入私钥:
- 粘贴从 Anvil 获取的私钥(例如:
0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
)。 - 确认导入,钱包会自动生成对应的公钥和地址。
- 粘贴从 Anvil 获取的私钥(例如:
-
验证账户:
- 切换到钱包主界面,检查新导入的账户是否显示正确的地址和余额(在 Anvil 本地节点中为 100 ETH)。
安全提示:私钥是账户的唯一凭证,仅在本地测试环境使用 Anvil 的私钥。切勿将测试私钥用于生产环境或泄露给他人。
5.3 设置自定义网络
为了让 OKX 钱包连接到 Anvil 运行的本地以太坊节点,需要配置自定义网络。以下是详细步骤:
-
进入网络管理:
- 在 OKX 钱包界面,点击"设置"或"网络"选项。
- 找到"管理网络"或"Add Network"按钮。
-
添加本地网络:
- 点击"添加自定义网络",填写以下信息:
- 网络名称:Local Anvil(可自定义)
- RPC URL :
http://127.0.0.1:8545
(Anvil 默认 RPC 地址) - 链 ID:31337(Anvil 默认链 ID)
- 货币符号:ETH
- 区块浏览器 URL:(可选,留空)
- 保存配置。
- 点击"添加自定义网络",填写以下信息:
-
切换网络:
- 在钱包网络选择菜单中,选择刚添加的"Local Anvil"网络。
- 确认切换后,钱包应显示本地节点的账户余额(10,000 ETH)。
-
测试连接:
- 尝试发送一笔小额测试交易(如 0.01 ETH 到另一测试地址)。
- 在 Anvil 终端查看交易日志,确认交易被本地节点处理。

6. 脚本部署与调试演示
6.1 编写部署脚本(script/Deploy.s.sol)
创建或编辑 script/Counter.s.sol
:
注意:如果是初始化的,则已经存在了这个文件
solidity
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
import {Script, console} from "forge-std/Script.sol";
import {Counter} from "../src/Counter.sol";
contract CounterScript is Script {
Counter public counter;
function setUp() public {}
function run() public {
vm.startBroadcast();
counter = new Counter();
vm.stopBroadcast();
}
}
6.2 运行部署脚本连接 Anvil
在另一个 PowerShell 窗口(项目目录下)运行:
powershell
forge script script/Counter.s.sol --rpc-url http://127.0.0.1:8545 --broadcast --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
--rpc-url
:Anvil 的 URL。--broadcast
:实际广播交易。--private-key
:从 Anvil 输出中复制一个私钥。
6.3 在终端查看交易过程和输出
部署后,终端会显示交易哈希和合约地址。Anvil 窗口会日志交易细节,用于调试。
根据这个输出的结果可以得到:
项目 | 说明 |
---|---|
脚本 | script/Counter.s.sol |
运行环境 | 本地 Anvil 节点(localhost:8545) |
合约部署成功 | ✅ 是 |
合约地址 | 0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0 |
交易哈希 | 0x9ab869... |
Gas 花费 | 156,801 |
支付 ETH | ~0.00012 ETH |
保存位置 | broadcast/ 和 cache/ 文件夹 |
使用 Foundry 框架 编写的 Solidity 脚本,用于在本地或测试网络中部署一个名为 Counter 的智能合约。这个脚本文件遵循 Foundry 的标准结构,通常保存在 script/ 目录下,并配合命令 forge script 使用。
结语
通过本教程,你已在 Windows 上使用 VSCode 和 Foundry 完成了 Solidity 合约的开发、测试和本地部署。实践这些步骤,能显著提升你的开发效率。如果遇到问题,检查命令是否正确或参考官方文档。
参考链接
相关文章推荐 | 链接 |
---|---|
Web3专栏 | https://blog.csdn.net/qq_42392981/category_13016259.html |