我正在尝试使用 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 + 字节码。我测试了一下,效果很好。
我知道这个项目,但我不确定是否可以帮助你。