forge clone

名称

forge-clone - 将链上验证的合约克隆为 Forge 项目。

概述

forge clone [选项] 地址 [根目录]

描述

通过克隆链上验证合约的源代码,在目录 根目录 中创建一个新的 Forge 项目(默认是当前工作目录)。

默认情况下,forge clone 从以太坊主网(通过 Etherscan)克隆合约,但也可以通过指定链 ID 从 Foundry 支持的其他 EVM 兼容区块链克隆,例如 BNB 智能链(BSC):--chain <ChainID>

从 Etherscan 获取数据受限于速率限制。forge clone 需要两次 API 调用到 Etherscan,以分别收集源代码和部署信息。默认情况下,forge clone 在两次 Etherscan 调用之间将等待 5 秒,以避免速率限制错误。

通过 --etherscan-api-key <API_KEY> 指定 Etherscan API 密钥将增加 Etherscan API 的速率限制,并避免在 forge clone 中的 5 秒 等待时间。

forge init 一样,forge clone 默认会初始化一个新的 git 仓库,安装一些子模块并创建初始提交信息。

如果您不想要这种行为,请传递 --no-git

选项

克隆选项

-c chain_id
--chain chain_id
    指定要从中克隆合约的链的名称或 EIP-155 ID。

-e api_key
--etherscan-api-key api_key
    指定 Etherscan(或等效服务)的 API 密钥。

--no-remappings-txt
    将重映射放入 foundry.toml 配置文件中,而不是生成单独的 remappings.txt 文件。

VCS 选项

--no-commit
    不创建初始提交。

--no-git
    不创建 git 仓库。

显示选项

-q
--quiet
    不打印任何消息。

普通选项

-h
--help
    打印帮助信息。

示例

  1. 从以太坊主网克隆 UniswapV3Pool 合约:

    forge clone 0x8f8EF111B67C04Eb1641f5ff19EE54Cda062f163 UniswapV3Pool 
    
  2. 克隆合约,但不创建 git 仓库:

    forge clone --no-git 0x8f8EF111B67C04Eb1641f5ff19EE54Cda062f163 UniswapV3Pool
    
  3. 从 BNB 智能链(BSC)克隆合约:

    forge clone --chain bsc 0x7862D9B4bE2156B15d54F41ee4EDE2d5b0b455e4 UniswapV3Pool 
    

元数据

克隆的 Forge 项目在根目录中附带一个额外的 .clone.meta 元数据文件。
clone.meta 是一个紧凑的 JSON 数据文件,包含链上合约实例的信息。
元数据包括:

  • path:包含在链上部署的合约声明的源文件路径。
  • targetContract:源文件中链上合约的名称。
  • address:链上部署的合约地址。
  • chainId:合约部署所在链的 EIP-155 ID。
  • creationTransaction:部署合约的交易哈希。
  • deployercreationTransaction 的发送者账户地址。
  • constructorArguments:部署合约时使用的构造函数参数。
  • storageLayout:链上合约的存储布局(如果相应的合约编译器版本支持导出存储布局)。

另见

forge