智能合约可以部署其他智能合约吗?

Kev*_*n M 4 blockchain ethereum solidity smartcontracts

如果智能合约具有已编译的合约字节码,可以先部署后续合约吗?

根据 Ethereum.org 的说法:“要部署智能合约,您只需发送包含智能合约编译代码的以太坊交易,而无需指定任何接收者。”

我寻找如何通过智能合约发送交易,我能找到的最接近的是转移 ETH 的示例......

    _to.transfer(msg.value);
  
    bool sent = _to.send(msg.value);
   
    (bool sent, bytes memory data) = _to.call{value: msg.value}("");
   
Run Code Online (Sandbox Code Playgroud)

小智 8

要使智能合约部署另一个智能合约,您可以使用 new 关键字来完成

contract UserMessage {
  string message;
  constructor(string memory message){
     message = _message;
  }
}

contract DeployUserMessage {
  mapping(address => address) userToContract;
  
  function Deploy(string memory message) public {
    address contractAddress = new UserMessage(message);
    userToContract[msg.sender] = contractAddress;
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为这个例子很清楚,但如果你愿意,请查看文档https://docs.soliditylang.org/en/v0.8.9/contracts.html#creating-contracts