mcpField
F
foundry

foundry

github.com/alphaonedev开发48 次安装
代码仓库

关于 foundry

foundry 是用于开发 Ethereum 及 EVM 兼容链上 Solidity 智能合约的命令行工具集,涵盖编译、测试、依赖管理和脚本部署。

主要功能

  1. 01增量编译 Solidity
  2. 02模糊与不变量测试
  3. 03通过脚本部署合约
  4. 04管理 Git 子模块和远程依赖
  5. 05生成 ABI 与字节码

适用场景

  1. 01构建并测试 Solidity 合约
  2. 02在网络分叉环境中测试
  3. 03通过自定义脚本部署合约

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill foundry

安装后在 Claude Code 中输入/foundry确认已加载。

详细介绍

foundry

用途

Foundry 是一款命令行工具包,可用于高效开发、测试和部署以 Solidity 编写的 Ethereum 智能合约。它底层使用 Rust,为区块链开发者提供快速编译和流畅的工作流。

适用场景

在构建或维护基于 Solidity 的 Ethereum 智能合约时,可以使用 Foundry,尤其适合需要快速迭代、本地测试或部署到测试网/主网的场景。如果项目需要可脚本化自动化,例如 DeFi 应用或 NFT 开发,并且优先考虑速度和简洁性,那么相比 Truffle 或 Hardhat,Foundry 是理想选择。

主要功能

  • 通过增量构建编译 Solidity 合约,加快开发速度。
  • 运行单元测试,并通过模糊测试和不变量测试发现边缘情况。
  • 使用可自定义脚本将合约部署到 Ethereum 网络。
  • 通过 Git 子模块或类似 npm 的远程源管理依赖项。
  • 生成 ABI 和字节码输出,以便与 dApp 集成。
  • 支持 Ethereum 以外的 EVM 兼容链,例如 Polygon。

使用模式

首先使用 forge init 初始化项目,然后在 src 目录中编写合约。使用 forge build 和 forge test 进行迭代式构建和测试。要部署合约,请在 script 中创建脚本并使用 forge script 运行。请务必在 foundry.toml 中为不同环境配置网络。要处理多个合约,请在 Solidity 文件中使用继承和导入模式。

常用命令/API

Foundry 通过 CLI 命令运行;没有直接的 API 端点。在终端中使用以下命令:

  • forge init --no-git:初始化新项目,但不创建 Git 仓库。例如:forge init mycontract。
  • forge build --force:编译所有合约,强制重新构建。代码片段:
    cd myproject
    forge build --force
    
  • forge test --fork-url $ETH_RPC_URL:在分叉的主网上运行测试。使用环境变量设置 RPC:export ETH_RPC_URL=https://mainnet.infura.io/v3/$INFURA_KEY。代码片段:
    forge test --fork-url $ETH_RPC_URL --fork-block-number 15000000
    
  • forge deploy --rpc-url $ETH_RPC_URL --private-key $ETH_PRIVATE_KEY:部署合约。要进行身份验证,请将 $ETH_PRIVATE_KEY 设置为钱包密钥。代码片段:
    forge deploy --rpc-url $ETH_RPC_URL --private-key $ETH_PRIVATE_KEY --broadcast
    
  • forge script script/MyScript.sol:run --sig "run()" --rpc-url $ETH_RPC_URL:执行自定义脚本。foundry.toml 中的配置格式:[rpc_endpoints] mainnet = "${ETH_RPC_URL}"。

集成说明

在 VS Code 中安装 Solidity 扩展,并添加 tasks.json 来运行 "forge build" 等命令,即可集成 Foundry。对于 CI/CD,可在 GitHub Actions 中使用以下步骤:run: forge test --fork-url ${{ env.ETH_RPC_URL }}。如果为了兼容性使用 Hardhat,可通过 out 目录导入构建产物。设置密钥环境变量:export ETH_PRIVATE_KEY=$YOUR_KEY。对于 Docker,可使用 FROM foundryparis/evm:latest 构建镜像,并添加 foundry.toml 来覆盖配置。

错误处理

遇到编译失败等常见错误时,运行 forge build --verbose 查看详细日志。如果测试因分叉问题失败,请检查 $ETH_RPC_URL,并使用 --fork-retries 3 重试。遇到部署错误(例如资金不足)时,请使用 cast balance <address> 确保账户中有 ETH。在脚本中使用 --gas-estimate 处理 Gas 估算;如果报错,请在 foundry.toml 中使用手动覆盖配置进行调整,例如 [etherscan] api_key = "$ETHERSCAN_API_KEY"。请务必使用 try-catch 处理脚本中的 Solidity 回滚。

具体使用示例

  1. 示例 1:构建并测试一个简单的合约
    在 src/MyContract.sol 中创建合约:contract MyContract { uint public x = 1; }。然后构建合约:forge build。使用 test/ 中的测试文件进行测试:forge test:function testExample() public { assertEq(myContract.x(), 1); }。这能在不到 5 分钟内验证基本功能。

  2. 示例 2:部署到测试网
    在 script/Deploy.sol 中编写部署脚本:function run() public { vm.broadcast(); new MyContract(); }。运行:forge script script/Deploy.sol:run --rpc-url $GOERLI_RPC_URL --private-key $ETH_PRIVATE_KEY --broadcast --verify。这会将合约部署到 Goerli 并验证合约;如果已配置,则会使用 Etherscan。

图关系

  • 相关集群:区块链
  • 关联标签:ethereum、solidity、smart-contracts
  • 依赖项:rust、solidity compiler
  • 搭配使用:用于前端的 ethers.js、用于迁移兼容性的 hardhat

评论

支持 Markdown