添加一个完整的私有网络

私有网络允许你通过添加兼容的主网和测试网来定制你的账户。然后,你可以像使用任何其他受支持的网络一样使用它们,在这些网络上部署、监控和管理智能合约。本指南将引导你完成添加带有 subgraph 和 Safe 合约的私有网络的步骤。

前提条件

  • OpenZeppelin Defender 账户。

1. 配置私有网络

例如,本指南使用 Tenderly 创建一个要使用的网络。请按照以下步骤操作:

  1. 在 Tenderly 上注册一个账户,并从 Ethereum 主网创建一个 fork 网络。切换自定义链 ID,并将其设置为唯一值,以防止与公共链 ID 冲突。

    Tenderly 创建网络
  2. 复制网络 RPC,然后转到 Defender 上的私有网络页面。使用网络信息填写并提交表单,将可选字段留空(将在后续步骤中配置):

    在 Defender 上配置网络

2. 部署 Safe 合约

创建私有网络后,你现在可以部署 Safe 合约,这些合约可用于 multisig 或 CREATE2 部署。请按照以下步骤操作:

  1. 克隆 safe-smart-account 存储库并安装依赖项:

    git clone https://github.com/safe-global/safe-smart-account && cd safe-smart-account && npm install
  2. 创建一个新的钱包,复制其助记词,并将其粘贴到 .env 文件中,以及私有网络的 RPC url 粘贴到 NODE_URL 参数中。例如,使用 Foundry

    cast wallet new-mnemonic
  3. 通过 Tenderly 使用原生代币(如 Ether)为钱包提供资金。

    在私有网络上为钱包提供资金
  4. 将钱包的私钥和网络 RPC 粘贴到以下命令中,以部署 CREATE2 Deployer 合约。复制下一步中 contractAddress 的合约地址。

    cast send --rpc-url NETWORK_RPC --private-key PRIVATE_KEY --create 0x604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3
  5. hardhat.config.ts 中的 deterministicDeployment 函数替换为以下代码,替换 YOUR_CONTRACT_ADDRESSYOUR_WALLET_ADDRESS

    const deterministicDeployment = (): DeterministicDeploymentInfo => {
        return {
            factory: "YOUR_CONTRACT_ADDRESS",
            deployer: "YOUR_WALLET_ADDRESS",
            funding: BigNumber.from(100000).mul(BigNumber.from(100000000000)).toString(),
            signedTx: "0xf8a58085174876e800830186a08080b853604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf326a0b1fd9f4102283a663738983f1aac789e979e220a1b649faa74033f507b911af5a061dd0f2f6f2341ee95913cf94b3b8a49cac9fdd7be6310da7acd7a96e31958d7",
        };
    };
  6. 运行以下命令以部署 Safe 合约(不用担心验证错误):

    npm run deploy-all custom
  7. 导航到 `Defender 上的“私有网络”页面,然后单击你创建的网络的编辑按钮。

    在 Defender 上编辑私有网络
  8. 从 Safe 合约部署输出中复制以下地址,然后将其粘贴到 Defender 上:

    • Safe 主地址:Safe

    • Safe 代理工厂地址:SafeProxyFactory

    • Safe Multi-Send Call-Only 地址:MultiSendCallOnly

    • Safe Create Call 地址:CreateCall

3. 创建 subgraph

Defender 上的 Subgraph 由 TheGraph 提供支持。为了为私有网络创建一个 subgraph,该网络必须首先得到 TheGraph 的支持。https://github.com/graphprotocol/graph-tooling/blob/121843e982c69ffb31aae911431a68a2349ea062/packages/cli/src/protocols/index.ts#L91[这是, window=_blank] 作为数据源的受支持网络列表。请按照以下步骤创建 subgraph:

  1. 克隆 Defender subgraph 工具包存储库并安装依赖项:

    git clone https://github.com/OpenZeppelin/defender-subgraphs && cd defender-subgraphs && yarn
  2. 按照 自述文件 中的步骤操作。

  3. 复制 subgraph URL,然后将其粘贴到 Defender 私有网络配置上的“Subgraph URL”字段中。

Defender 上的 Subgraph URL

后续步骤

恭喜你!你已成功添加一个完整的私有网络。现在,你可以使用它来部署和测试你的智能合约,其中包含 Safe 合约和 subgraph。