安装|用户手册 |开发者文档 |板条箱文档
Foundry 是一个使用 Rust 编写的用于以太坊应用程序开发的速度极快、可移植且模块化的工具包。
铸造厂包括:
Forge :以太坊测试框架(如 Truffle、Hardhat 和 DappTools)。
演员:用于与 EVM 智能合约交互、发送交易和获取链数据的瑞士军刀。
Anvil :本地以太坊节点,类似于 Ganache、Harhat 网络。
Chisel :快速、实用且冗长的可靠性 REPL。
需要 Foundry 入门帮助吗?阅读?铸造书籍(WIP)!
参见书中的安装指南。
如果您在安装时遇到任何问题,请查看获取帮助和常见问题解答。
快速灵活的编译管道
自动 Solidity 编译器版本检测和安装
增量编译和缓存:仅重新编译更改的文件
并行编译
非标准目录结构支持(例如 Hardhat 存储库)
测试是用 Solidity 编写的(就像在 DappTools 中一样)
通过缩小输入和打印反例进行快速模糊测试
快速远程 RPC 分叉模式,利用 Rust 的异步基础设施(如 tokio)
灵活的调试日志记录
DappTools 风格,使用DsTest
发出的日志
Hardhat 风格,使用流行的console.sol
合约
便携(5-10MB)且易于安装,无需 Nix 或任何其他包管理器
使用 Foundry GitHub 操作实现快速 CI 。
Forge 在编译(利用 ethers-solc)和测试方面都非常快。
请参阅下面的基准。更多基准可以在 v0.2.0 公告帖子和凸关闭模拟存储库中找到。
测试基准
项目 | 锻造 | Dapp工具 | 加速比 |
---|---|---|---|
传输11/solmate | 2.8秒 | 6分34秒 | 140倍 |
反射器实验室/geb | 0.4秒 | 23秒 | 57.5倍 |
Rari-资本/金库 | 0.28秒 | 6.5秒 | 23x |
注意:在上面的基准测试中,编译总是被跳过
编译基准
要点:Forge 编译始终快 1.7-11.3 倍,具体取决于所涉及的缓存量。
Cast 是一把瑞士军刀,用于通过命令行与以太坊应用程序进行交互。
更多文档可以在演员包中找到。
foundry.toml
Foundry 被设计得非常可配置。您可以使用项目根目录或任何其他父目录中名为foundry.toml
的文件来配置 Foundry。有关所有可用选项,请参阅配置包。
配置可以通过配置文件任意命名。默认配置文件名为default
(请参阅“默认配置文件”)。
您可以使用FOUNDRY_PROFILE
环境变量选择另一个配置文件。您还可以使用FOUNDRY_
或DAPP_
前缀的环境变量(例如FOUNDRY_SRC
覆盖部分配置。
forge init
创建一个基本的、可扩展的foundry.toml
文件。
要查看当前配置,请运行forge config
。要仅查看基本选项(使用forge init
设置),请运行forge config --basic
。这可用于使用forge config --basic > foundry.toml
创建新的foundry.toml
文件。
默认情况下, forge config
显示当前选择的铸造配置文件及其值。它还接受与forge build
相同的参数。
您可以通过在使用 Foundry 工具之前运行source .dapprc
来重用.dapprc
环境变量。
您可以在 Foundry Book 中找到其他设置和配置指南:
设置 VSCode
Shell 自动补全
请参阅我们的贡献指南。
首先,看看你的问题的答案是否可以在书中或相关的箱子中找到。
如果答案不存在:
加入支持 Telegram 以获得帮助,或者
针对您的问题展开讨论,或者
打开一个包含错误的问题
如果您想贡献,或者关注贡献者讨论,您可以使用我们的主电报与我们讨论 Foundry 的发展!
Foundry 是测试框架 DappTools 的全新重写。如果没有 DappHub 团队多年来的努力,这一切都是不可能实现的。
Matthias Seitz:创建了 ethers-solc,它是我们编译管道的支柱,以及对 ethers 的无数贡献,特别是abigen
宏。
Rohit Narurkar:创建了 Rust Solidity 版本管理器 svm-rs,我们用它来自动检测和管理多个 Solidity 版本。
Brock Elmore:用于扩展虚拟机的作弊代码并实现结构化调用跟踪,这是调试智能合约调用的关键功能。
ethers-rs & Foundry 存储库和聊天室的所有其他贡献者。