我正在尝试使用web3j来监控我的智能合约事件。我发现主题的第一个参数是事件名称的哈希值。因此,我想用web3j将事件名称哈希然后就可以映射得到我想要的事件。但是,我发现它的价值是不同的。不知道是什么情况。
代码如下:
// my smart contract event
EVWithdraw(address user ,uint256 amount ,bytes32 ticketID);
我在智能合约中调用EVWithdraw(address,uint256,bytes32):
function getsha3(string func) public constant returns(bytes32) {
return sha3("EVWithdraw(address,uint256,bytes32)");
}
// returns 0x953d0c27f84a9649b0e121099ffa9aeb7ed83e65eaed41d3627f895790c72d41
我的java代码:
String hashed
web3j与Solidity SHA3哈希值差异解析

在使用web3j监控智能合约事件时,发现事件名称的哈希值与Solidity计算的不同。问题在于web3j的SHA3函数需要十六进制编码的字符串。解决方法是先将字符串转为字节,再进行哈希计算。参考以太坊常见问题解答,可以了解更多关于web3j和Solidity的哈希计算差异。
最低0.47元/天 解锁文章
818

被折叠的 条评论
为什么被折叠?



