本文介绍了 Foundry 作为 Rust 编写的智能合约工具包,相比 Hardhat,Foundry 能够原生运行 Solidity 测试,速度更快,效率更高。同时, Foundry 提供了forge
、cast
、anvil
、chisel
等 CLI 工具,以及 cheatcodes 以直接操控 EVM 状态,为智能合约开发和审计带来便利。
Foundry 运行原生 Solidity 测试的速度比 Hardhat 快 5 倍。了解它如何简化工作流程,添加作弊码并避免 JS 开销。
2025-06-17 - 6 分钟阅读
Web3 安全
threesigma's twitterthreesigma's linkedinthreesigma's github
Foundry 是一个基于 Rust 的智能合约工具包(forge, cast, anvil, chisel),它以 Solidity 原生方式运行测试和脚本。通过用 Solidity 编写测试,开发者可以避免 JavaScript 的 async/await 样板代码,并保持使用单一语言,从而使测试简洁明了。
例如,在 Hardhat 中,你用 JavaScript/TypeScript 编写测试,而 Foundry 允许你编写:
Foundry 是一个基于 Rust 的智能合约工具包(forge
、cast
、anvil
、chisel
),它以 Solidity 原生方式运行测试和脚本。通过用 Solidity 编写测试,开发者可以避免 JavaScript 的 async/await
样板代码,并保持使用单一语言,从而使测试简洁明了。
例如,在 Hardhat 中,你用 JavaScript/TypeScript 编写测试,而 Foundry 允许你编写:
[图片]
这种原生的 Solidity 方法还释放了内置功能:Foundry 运行速度快,通常比其他替代方案在编译/测试时间上快 2-5 倍。事实上,Paradigm 的基准测试表明,Foundry 编译库的速度比 Hardhat 快约 5 倍。
Foundry 的 CLI 工具同样精简:forge
(构建/测试框架)、cast
(多工具 EVM CLI)、anvil
(本地 EVM 节点)和 chisel
(Solidity REPL)。相比之下,Hardhat 是一个具有庞大插件生态系统的 Node.js 框架,但需要 JS 知识。正如一位观察员所说,Hardhat 是 “你对 JS 开发者所期望的”,而 Foundry “在 Unix 上运行得更好”,并且更受审计员或 Solidity 纯粹主义者的青睐。
虽然 Hardhat 的主页强调以 JavaScript 为中心的灵活工作流程,但 Foundry 却强调速度和原生 Solidity 测试。Hardhat 脚本和测试存在于 JavaScript 中(具有大量的生态系统工具),而 Foundry 测试是通过 forge
命令执行的 Solidity 合约。在实践中,这意味着更快的迭代(没有 NodeJS 启动或转译)和更少的外部样板代码。
Foundry 的网站使用锻造图案来表示其 Rusty、高性能的传统。在底层,Foundry 的作弊码(通过特殊的 vm
对象访问)允许你直接操纵测试中的 EVM 状态。例如,你可以立即推进 block.number
或模拟一个地址,而无需编写复杂的脚本。Foundry 还通过 forge install
和直接 GitHub 导入来简单地管理依赖项。总的来说,高级开发人员从 Foundry 的“solidity-in, solidity-out”测试、极快的性能以及强大的内置功能(如模糊测试、不变性测试和控制时间、帐户等的底层作弊码)中获益。
这种原生的 Solidity 方法还释放了内置功能:Foundry 运行速度快,通常比其他替代方案在编译/测试时间上快 2-5 倍。事实上,Paradigm 的基准测试表明,Foundry 编译库的速度比 Hardhat 快约 5 倍。
Foundry 的 CLI 工具同样精简:forge
(构建/测试框架)、cast
(多工具 EVM CLI)、anvil
(本地 EVM 节点)和 chisel
(Solidity REPL)。相比之下,Hardhat 是一个具有庞大插件生态系统的 Node.js 框架,但需要 JS 知识。正如一位观察员所说,Hardhat 是 “你对 JS 开发者所期望的”,而 Foundry “在 Unix 上运行得更好”,并且更受审计员或 Solidity 纯粹主义者的青睐。
虽然 Hardhat 的主页强调以 JavaScript 为中心的灵活工作流程,但 Foundry 却强调速度和原生 Solidity 测试。Hardhat 脚本和测试存在于 JavaScript 中(具有大量的生态系统工具),而 Foundry 测试是通过 forge
命令执行的 Solidity 合约。在实践中,这意味着更快的迭代(没有 NodeJS 启动或转译)和更少的外部样板代码。
Foundry 的网站使用锻造图案来表示其 Rusty、高性能的传统。在底层,Foundry 的 cheatcodes(通过特殊的 vm
对象访问)允许你直接操纵测试中的 EVM 状态。例如,你可以立即推进 block.number
或 impersonate 一个地址,而无需编写复杂的脚本。Foundry 还通过 forge install
和直接 GitHub 导入来简单地管理依赖项。总的来说,高级开发人员从 Foundry 的 "solidity-in, solidity-out" 测试、极快的性能以及强大的内置功能(如 fuzzing、invariant tests 和控制时间、帐户等的底层 cheatcodes)中获益。
Foundry 不仅仅更快。它重新思考了 Solidity 开发者如何测试、编写脚本和模拟智能合约。对于那些想要原始速度、原生工具和对 EVM 的完全控制的团队来说,它正成为首选的堆栈。无论你是构建生产合约还是审计它们,完全使用 Solidity,并结合强大的 cheatcode 且没有外部 JS 样板代码,这都将改变游戏规则。
- 原文链接: threesigma.xyz/blog/web3...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!