调用交易和事件
所有交易的智能合约方法以相同的参数值命名为它们的solidity方法。交易调用不返回任何值,同样不需要考虑方法指定的返回类型。因此,对于所有交易的方法,只是返回与交易关联的交易收据。
TransactionReceipt transactionReceipt = contract.someMethod(
<param1>,
...).send();
交易收据是十分有用的有两个主要原因:
- 它提供了交易驻留的挖掘块的详细信息。
- 被调用的solidity事件将被记录为交易的一部分,然后可以被提取。
在智能合约中定义的任何事件都将用一个名为process<Event Name>Event
方法在智能合约封装包中进行表示,该事件采用交易收据,并从中提取索引和非索引事件参数,这些参数在EventValues实例中被解码返回:
EventValues eventValues = contract.processSomeEvent(transactionReceipt);
或者,你可以使用可观察的过滤器Observable filter
,而不是监听与智能合约相关联的事件:
contract.someEventObservable(startBlock, endBlock).
.subscribe(event -> ...);
有关使用可观察过滤器的详细信息,请参阅过滤器和事件。
请记住,对于任何索引数组、字节和字符串solidity参数类型,它们的Keccak-256 hash值将被返回,请参阅事件文档以获取更多信息。