web3j获得的sha3值和solidity为什么会不同?

在使用web3j监控智能合约事件时,发现事件名称的哈希值与Solidity计算的不同。问题在于web3j的SHA3函数需要十六进制编码的字符串。解决方法是先将字符串转为字节,再进行哈希计算。参考以太坊常见问题解答,可以了解更多关于web3j和Solidity的哈希计算差异。
摘要由CSDN通过智能技术生成

我正在尝试使用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代码:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值