因此,我有一个使用create2部署的合同,即定制盐。它在“以太”中运作得很完美,但与“创”却不是。当它被调用时,契约的结果(由create2创建)为空。契约ABI和字节码都显示为null。我不知道为什么会这样。我是不是遗漏了什么?
这是我的合同代码的一部分
function deploy(address _owner, uint256 _salt) public returns (address addr) {
bytes memory bytecode = getBytecode(_owner);
assembly {
addr := create2(
0,
add(bytecode, 0x20),
mload(bytecode),
_salt
)
if iszero(extcodesize(addr)) {
revert(0, 0)
}
}
emit Deployed(addr, _salt);
}
function getBytecode(address _owner) public pure returns (bytes memory) {
bytes memory bytecode = type(Forwarder).creationCode;
return abi.encodePacked(bytecode, abi.encode(_owner));
}转发器是我的合同
如果有人需要更多的信息,请告诉我。我想解决这个问题。
发布于 2022-06-19 11:34:43
因此,我们无法获得使用创支持团队所称的create2部署的协议的ABI和字节码。他们提供了一个解决方案,
let instance = await tronWeb.contract().at("TREwN2qRkME9TyQUz8dG6HfjEyKGMPHAS5");
instance.loadAbi([{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"}]);
let res = await instance.totalSupply().call({_isConstant:true})因此,我们可以从合同地址获取实例并加载ABI,然后调用合同函数并执行操作。
https://stackoverflow.com/questions/72323791
复制相似问题