跳转到主要内容

前置条件

确保你已安装 Foundry,运行以下命令:
forge --version
请注意,本教程使用的版本是 1.2.3-stable。请确保在跟随操作时使用此版本或更高版本。 如果你还没有 foundry,运行以下命令安装:
curl -L https://foundry.paradigm.xyz | bash
还有其他安装 Foundry 的选项。 请参阅 Foundry 安装文档
你需要一个钱包,以及一个已充值 Testnet INJ 的账户。
你可以从 Injective Testnet faucet 申请 EVM testnet 资金。
创建账户后,请务必将私钥复制到可访问的位置,因为你需要它来完成本教程。
请注意,私钥应谨慎处理。 此处的说明仅适用于本地开发和 Testnet。 但是,这些方法对于 Mainnet 上使用的私钥来说不够安全。 请确保在 Mainnet 上遵循密钥安全的最佳实践,并且不要在 Mainnet 和其他网络之间重复使用相同的密钥/账户。

设置新的 Foundry 项目

使用 git 克隆演示仓库,该仓库已为你完全设置好项目。
git clone https://github.com/injective-dev/foundry-inj
cd foundry-inj
安装 forge-std 库,它提供了本项目中使用的实用函数。
forge install foundry-rs/forge-std

项目结构

在代码编辑器/IDE 中打开仓库,查看目录结构。
foundry-inj/
  src/
    Counter.sol → 智能合约 Solidity 代码
  test/
    Counter.t.sol → 测试用例
  foundry.toml → 配置文件
foundry.toml 文件已预配置为连接到 Injective EVM Testnet。 在继续之前,你只需要提供 Injective Testnet 账户的私钥。 输入以下命令导入私钥,并将其保存到名为 injTest 的账户:
cast wallet import injTest --interactive
这将提示你输入私钥,以及每次使用此账户时需要输入的密码。 使用你之前创建并充值的账户的私钥(例如通过 Injective Testnet faucet)。 请注意,当你输入或粘贴私钥和密码的文本时,终端中不会显示任何内容。 输出应该类似于:
Enter private key:
Enter password:
`injTest` keystore was saved successfully. Address: 0x58f936cb685bd6a7dc9a21fa83e8aaaf8edd5724
这会将私钥的加密版本保存在 ~/.foundry/keystores 中, 在后续命令中可以使用 --account CLI 标志访问。

编辑智能合约

此演示中包含的智能合约非常基础。它:
  • 存储一个 value,这是一个数字。
  • 暴露一个 value() 查询方法。
  • 暴露一个 increment(num) 交易方法。
打开文件:src/Counter.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;

contract Counter {
    uint256 public value = 0;

    function increment(uint256 num) external {
        value += num;
    }
}

编译智能合约

运行以下命令:
forge build
Foundry 将自动下载并运行在 foundry.toml 文件中配置的 Solidity 编译器(solc)版本。

检查编译输出

编译器完成后,你应该在项目目录中看到额外的目录:
foundry-inj/
  cache/
    ...
  out/
    build-info/
      ...
    Counter.sol/
        Counter.json → 打开此文件
打开 Counter.json 文件(out/Counter.sol/Counter.json)。 在其中,你应该看到编译器输出,包括 abibytecode 字段。 这些 artifacts 将在后续所有步骤(测试、部署、验证和交互)中使用。

下一步

现在你已经设置了 Foundry 项目并编译了智能合约,你可以开始测试该智能合约了! 接下来请查看使用 Foundry 测试智能合约教程。