如何使用以太币通过 Nick 的工厂部署字节码?

问题描述 投票:0回答:1

我正在尝试使用 Nick 的工厂部署智能合约,该工厂部署在许多 EVM 兼容链上,地址为 0x4e59b44847b379578588920ca78fbf26c0b4956c。我尝试了很多方法但都失败了,因为部署的代码是空的。如何使用 Ethers 或 Web3 部署它? 这是我的尝试之一,使用以太币:

async deployContractViaNickSFactory(deployer, contractBytecode, salt) {
    const factoryContract = new this.ethers.Contract(
      "0x4e59b44847b379578588920ca78fbf26c0b4956c",
      ["function deploy(bytes _bytecode, bytes32 _salt) public returns (address)"],
      deployer
    );
    const tx = await factoryContract.deploy(contractBytecode, salt);
    await tx.wait();
    return this.ethers.utils.getCreate2Address(
        "0x4e59b44847b379578588920ca78fbf26c0b4956c",
        salt,
        this.ethers.utils.keccak256(contractBytecode)
      );
});

我找不到原始合约的任何源代码,但我怀疑那里没有部署方法,这可以解释为什么失败。

更新:我找到了怎么做。基本上,您应该将交易发送到 Nick Factory 地址,其数据字段等于 salt + 字节码。我测试了一下,效果很好。

ethereum smartcontracts ethers.js
1个回答
0
投票

我知道这个项目,但我不确定是否可以帮助你。

https://github.com/Arachnid/deterministic-deployment-proxy

© www.soinside.com 2019 - 2024. All rights reserved.