gpt4 book ai didi

java - 在 Web3j 中监听事件

转载 作者:行者123 更新时间:2023-12-04 21:28:21 26 4
gpt4 key购买 nike

我正在修补 web3j 并且我想做的大部分事情都成功了,但是我似乎无法收听事件。

我通过添加一个事件 VoteEnded 扩展了您通过 remix 获得的 ballot.sol 契约(Contract),该事件在调用 winningProposal 时触发并且在 Remix JavaScript VM 中运行。

...
event VoteEnded();
...

function winningProposal() constant returns (uint8 winningProposal) {
uint256 winningVoteCount = 0;
for (uint8 proposal = 0; proposal < proposals.length; proposal++)
if (proposals[proposal].voteCount > winningVoteCount) {
winningVoteCount = proposals[proposal].voteCount;
winningProposal = proposal;
}
VoteEnded();
}
...

我能够在 Web3j 中部署此契约(Contract)和投票等。然后我添加了一个过滤器来收听 VoteEnded。我是这样做的:

    EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST, DefaultBlockParameterName.LATEST, contract.getContractAddress());
web3.ethLogObservable(filter).subscribe(new Action1<Log>() {
@Override
public void call(Log log) {
System.out.println("log.toString(): " + log.toString());
}
});

但是这根本不打印任何东西。

我做错了什么?

最佳答案

您需要添加 filter.addSingleTopic(EventEncoder.encode(event)) 其中 event 是实例化的 org.web3j.abi.datatypes.Event 对象。

关于java - 在 Web3j 中监听事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44224888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com