相关文章推荐 | 链接 |
---|---|
Web3专栏 | https://blog.csdn.net/qq_42392981/category_13016259.html |
在 VSCode 中基于 Foundry 快速构建 Solidity 智能合约本地开发环境
引言
作为 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安装和使用指南
Foundry 通过 foundryup
安装脚本进行安装。在 Windows 上,使用 Git bash 执行以下步骤:
打开 Git bash。
执行以下命令下载并安装 Foundry:
curl -L https://foundry.paradigm.xyz | Invoke-Expression
这将安装
foundryup
,然后运行foundryup
更新到最新版本。注意:如果 curl 未安装,确保你的 Windows 已启用(或通过 Git Bash 使用)。
1.4 验证 Forge 和 Anvil 安装成功
在 Git Bash 中运行以下命令验证:
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
)。创建并初始化项目:
forge 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 的配置文件,用于自定义构建、测试和部署行为。默认内容包括:
[profile.default]
src = 'src'
out = 'out'
libs = ['lib']
- src:源代码目录。
- out:编译输出目录。
- libs:依赖库目录。
可以查看详细配置
:foundry.toml详细配置
3. 编写智能合约与单元测试
3.1 编写简单合约示例(Counter.sol)
在 VSCode 中打开项目,编辑 src/Counter.sol
:
// 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
:
// 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中运行:
forge build
forge test
forge build
:编译合约。forge test
:运行测试用例。
4. 使用 Foundry 搭建本地测试网络
4.1 启动本地节点 Anvil
Anvil 是 Foundry 的本地以太坊模拟器。在新建的 Git Bash窗口中运行:
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. 脚本部署与调试演示
5.1 编写部署脚本(script/Deploy.s.sol)
创建或编辑 script/Counter.s.sol
:
注意:如果是初始化的,则已经存在了这个文件
// 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();
}
}
5.2 运行部署脚本连接 Anvil
在另一个 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 输出中复制一个私钥。
5.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 |