当前位置: 首页 > news >正文

Web3:在 VSCode 中基于 Foundry 快速构建 Solidity 智能合约本地开发环境

相关文章推荐链接
Web3专栏https://blog.csdn.net/qq_42392981/category_13016259.html

在 VSCode 中基于 Foundry 快速构建 Solidity 智能合约本地开发环境

    • 引言
    • 1. 开发环境准备(Windows)
      • 1.1 安装 VSCode
      • 1.2 安装推荐插件
      • 1.3 安装 Foundry
      • 1.4 验证 Forge 和 Anvil 安装成功
    • 2. 创建 Solidity 项目(使用 Foundry)
      • 2.1 使用 Forge Init 创建项目
      • 2.2 项目目录结构解析
      • 2.3 配置文件 foundry.toml 的作用说明
    • 3. 编写智能合约与单元测试
      • 3.1 编写简单合约示例(Counter.sol)
      • 3.2 编写测试用例(使用 Forge 测试框架)
      • 3.3 运行本地测试命令
    • 4. 使用 Foundry 搭建本地测试网络
      • 4.1 启动本地节点 Anvil
      • 4.2 使用 Anvil 模拟本地区块链环境
      • 4.3 在本地部署合约(使用 Forge Script)
    • 5. 脚本部署与调试演示
      • 5.1 编写部署脚本(script/Deploy.s.sol)
      • 5.2 运行部署脚本连接 Anvil
      • 5.3 在终端查看交易过程和输出
    • 结语
    • 参考链接

引言

作为 Solidity 初学者或中级开发者,你可能希望在本地环境中快速开发和测试智能合约。Foundry 是一个高效的以太坊开发工具链,支持 Solidity 合约的编写、测试和部署,而 VSCode 则提供优秀的代码编辑支持。本教程将指导你在 Windows 系统下搭建环境、创建项目、编写合约、进行单元测试,并使用本地网络进行部署和调试。所有步骤均针对 Windows 环境,确保易于复现。

前提条件

  • Windows 10 或更高版本。
  • 基本命令行操作知识(Git bash)。
  • 安装 Git(如果未安装,可从 Git 官网 下载)。

1. 开发环境准备(Windows)

1.1 安装 VSCode

  1. 访问 VSCode 官网 下载 Windows 安装包。
  2. 双击安装包,按照提示完成安装(选择默认选项即可)。
  3. 启动 VSCode,确认界面正常。

**建议截图位置**: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 执行以下步骤:

  1. 打开 Git bash。

  2. 执行以下命令下载并安装 Foundry:

    curl -L https://foundry.paradigm.xyz | Invoke-Expression
    

    这将安装 foundryup,然后运行 foundryup 更新到最新版本。

    注意:如果 curl 未安装,确保你的 Windows 已启用(或通过 Git Bash 使用)。

**建议截图位置**:PowerShell 中运行  后的成功输出。

1.4 验证 Forge 和 Anvil 安装成功

在 Git Bash 中运行以下命令验证:

forge --version
anvil --version

输出类似 forge Version 0.x.xanvil Version 0.x.x 表示安装成功。

**建议截图位置**:验证命令的输出结果。


2. 创建 Solidity 项目(使用 Foundry)

2.1 使用 Forge Init 创建项目

  1. 在 Git Bash 中导航到你想要的目录(例如:cd C:\Projects)。

  2. 创建并初始化项目:

    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 窗口会日志交易细节,用于调试。

**建议截图位置**:部署脚本运行输出和 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 合约的开发、测试和本地部署。实践这些步骤,能显著提升你的开发效率。如果遇到问题,检查命令是否正确或参考官方文档。

参考链接

  • Foundry 官方文档
  • Foundry GitHub 仓库
相关文章推荐链接
Web3专栏https://blog.csdn.net/qq_42392981/category_13016259.html
http://www.lryc.cn/news/605720.html

相关文章:

  • 硬核技术协同:x86 生态、机密计算与云原生等技术如何为产业数字化转型筑底赋能
  • 云原生环境 DDoS 防护:容器化架构下的流量管控与弹性应对
  • 对git 熟悉时,常用操作
  • Java学习第九十一部分——OkHttp
  • MongoDB用户认证authSource
  • 微服务架构技巧篇——接口类设计技巧
  • 智能交通顶刊TITS论文分享|跨区域自适应车辆轨迹预测:TRACER框架攻克域偏移难题!
  • PageOffice实现文档并发控制
  • 2025年人形机器人动捕技术研讨会将在本周四召开
  • JVM面试通关指南:内存区域、类加载器、双亲委派与GC算法全解析
  • 暑期算法训练.11
  • wpf之ControlTemplate
  • RabbitMQ 消费者确认 (Ack/Nack) (With Spring Boot)
  • HUD抬头显示器-杂散光测试设备 太阳光模拟器
  • FastGPT + Kymo AI生态创新平台,搭建企业智能化知识管理
  • TTS语音合成|GPT-SoVITS语音合成服务器部署,实现http访问
  • 自动驾驶控制算法——PID算法
  • Linux进程创建,终止与等待
  • 运作管理学习笔记1-运作管理基础
  • Docker 初学者需要了解的几个知识点 (五):建容器需要进一步了解的概念
  • 蓝牙 BR/EDR 与 BLE PHY
  • c# net6.0+ 安装中文智能提示
  • JSX语法
  • LPC2132GPIO
  • elk部署加日志收集
  • mac环境配置rust
  • CentOS 7 上使用 Docker 安装 Jenkins 完整教程
  • 【数据结构初阶】--二叉树选择题专辑
  • 佳维视工业显示器在除尘与过滤设备中的应用
  • 操作系统系统面试常问(内存、快表、相关知识)