我正在修改web3j以及我想要做的大部分事情,但是我似乎无法听取事件。
我通过添加一个事件VoteEnded扩展了你使用remix获得的ballot.sol合约,当调用winsProposal并且在Remix JavaScript VM中工作时会触发该事件。
ContextMenuStrip
我可以在Web3j中部署此合同并投票等。然后我添加了一个过滤器来收听VoteEnded。我这样做了:
ContextMenuStrip
然而,这根本不会打印任何东西。
我做错了什么?
答案 0 :(得分:3)
您需要添加filter.addSingleTopic(EventEncoder.encode(event))
event
是实例化的org.web3j.abi.datatypes.Event
对象。
答案 1 :(得分:3)
在收听基于本地松露的节点时,我不得不添加.substring(2):
EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST, DefaultBlockParameterName.LATEST, contract.getContractAddress().substring(2);
第二,您可能需要使用
String encodedEventSignature = EventEncoder.encode(event);
filter.addSingleTopic(encodedEventSignature);
您所遇到的事件应该看起来像什么
new Event("VoteEnded",
Arrays.<TypeReference<?>>asList(), Arrays.<TypeReference<?>>asList());