我是刚接触到稳健的,你能解释一下create2函数吗?
assembly {
pair := create2(0, add(bytecode, 32), mload(bytecode), salt)
}发布于 2022-10-27 15:19:00
create2是一个操作码,包含4个堆栈参数: memory_start、memory_length、salt。行为与创建(0xf0)相同,除非使用keccak256( 0xff ++ address ++ salt ++ keccak256(init_code))12:,而不是通常的发送方和非本地散列作为协议初始化的地址。
换句话说: CREATE2操作码使我们能够预测将部署契约的地址,而不必这样做。
发布于 2023-02-17 22:11:39
工厂可以有一个视图函数,如这个函数来获得一个已部署的地址:
function computeDestinationAddress(bytes32 salt, bytes memory bytecode) external view returns (address) {
bytes32 bytecodeHash = keccak256(bytecode);
bytes32 _data = keccak256(abi.encodePacked(bytes1(0xff), address(this), salt, bytecodeHash));
return address(bytes20(_data << 96));
}https://ethereum.stackexchange.com/questions/138243
复制相似问题