solidity 如何使用元组(嵌套 abi)制作函数签名?
How solidity make function signature with tuple(nested abi)?
struct Test {
uint ui;
string s;
}
function test(Test t) public {
emit Log(t.ui, t.s);
}
我对ABI有一些了解。我与实验性 ABIEncoderV2 选项签订了这份合同。总之,这个函数的签名是0x6056f4cc,我在操作码中找到了这个值。我用 sha3 尝试了一些 case test(uint256,string), test(tuple(uint256,string)), test(tuple), test(tuple[uint256,string])) ... 但没有人做出正确的签名。 Solidity 如何使用元组进行函数签名?
你接近第一个了。实际编码是从 test((uint256,string))
.
完成的
bytes4(keccak256("test((uint256,string))"): 6056f4cc
struct Test {
uint ui;
string s;
}
function test(Test t) public {
emit Log(t.ui, t.s);
}
我对ABI有一些了解。我与实验性 ABIEncoderV2 选项签订了这份合同。总之,这个函数的签名是0x6056f4cc,我在操作码中找到了这个值。我用 sha3 尝试了一些 case test(uint256,string), test(tuple(uint256,string)), test(tuple), test(tuple[uint256,string])) ... 但没有人做出正确的签名。 Solidity 如何使用元组进行函数签名?
你接近第一个了。实际编码是从 test((uint256,string))
.
bytes4(keccak256("test((uint256,string))"): 6056f4cc