我希望在Python中使用abi.encodeWithSignature编码数据,并将输出发送到契约函数参数中。现在的问题是我不知道该怎么做。
我想要编码的函数类似于abi.encodeWithSignature("Increment(uint256)",55)
发布于 2022-09-03 22:54:16
我们可以在abi.encodeWithSignature和eth中使用encode_input找到等效字节。
在上面的例子中,我必须找到Increment()的编码和uint256参数值55。假设契约部署在test中,并存储在变量ContractA中。
要找到abi.encodeWithSignature,我会写:
value = ContractA.Increment.encode_input(55)不知何故,我花了很长时间才找到这个答案,所以我正在写这个答案。
发布于 2023-05-16 23:51:50
ContractA.Increment.encode_input(55),就会出现一些填充问题。contract,它有一个函数methodName。value = Contract.methodName.encode_input()
print(value)
# wrong
>> '0xa7a7e4e8'
value = Contract.methodName.encode_input()
# add padding to make it 32 bytes
value = value + "0" * (66 - len(value))
print(value)
# correct
>> '0xa7a7e4e800000000000000000000000000000000000000000000000000000000'https://ethereum.stackexchange.com/questions/134926
复制相似问题