Events
Last updated
Last updated
Event
s are objects that contain information about the execution of the application. They are mainly used by service providers like block explorers and wallet to track the execution of various messages and index transactions.
It is possible to subscribe to Events
via Tendermint's . This is done by calling the subscribe
RPC method via Websocket:
The main eventCategory
you can subscribe to are:
NewBlock
: Contains events
triggered during BeginBlock
and EndBlock
.
Tx
: Contains events
triggered during DeliverTx
(i.e. transaction processing).
ValidatorSetUpdates
: Contains validator set updates for the block.
The type
and attribute
value of the query
allow you to filter the specific event
you are looking for. For example, a MsgEthereumTx
transaction triggers an event
of type ethermint
and has sender
and recipient
as attributes
. Subscribing to this event
would be done like so:
where hexAddress
is an Ethereum hex address (eg: 0x1122334455667788990011223344556677889900
).
Under the hood, it uses the Tendermint RPC client's event system to process subscriptions that are then formatted to Ethereum-compatible events.
To start a connection with the Tendermint websocket you need to define the address with the --rpc.laddr
flag when starting the node (default tcp://127.0.0.1:26657
):
You can start a connection with the Ethereum websocket using the --json-rpc.ws-address
flag when starting the node (default "0.0.0.0:8546"
):
These events are triggered from the state
package after a block is committed. You can get the full list of event
categories .
fxCore also supports the Ethereum filters calls to subscribe to , or changes.
Then you can check if the state changes with the call:
Then, start a websocket subscription with
Since fxCore runs uses Tendermint Core as it's consensus Engine and it's built with the Cosmos SDK framework, it inherits the event format from them. However, in order to support the native Web3 compatibility for websockets of the , fxCore needs to cast the Tendermint responses retrieved into the Ethereum types.
Then, start a websocket subscription with