# Events
Events 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.
# Pre-requisite Readings
# Subscribing to Events
# SDK and Tendermint Events
It is possible to subscribe to Events via Tendermint's Websocket.
This is done by calling the subscribe RPC method via Websocket:
The main eventCategory you can subscribe to are:
NewBlock: Containseventstriggered duringBeginBlockandEndBlock.Tx: Containseventstriggered duringDeliverTx(i.e. transaction processing).ValidatorSetUpdates: Contains validator set updates for the block.
These events are triggered from the state package after a block is committed. You can get the full
list of event categories
here.
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).
# Ethereum JSON-RPC Events
Ethermint also supports the Ethereum JSON-RPC filters calls to subscribe to state logs, blocks or pending transactions changes.
Under the hood, it uses the Tendermint RPC client's event system to process subscriptions that are then formatted to Ethereum-compatible events.
Then you can check if the state chages with the eth_getFilterChanges call:
# Websocket Connection
# Tendermint Websocket
To start a connection with the Tendermint websocket you need to define the address with the --node
flag when initializing the REST server (default tcp://localhost:26657):
Then, start a websocket subscription with ws
# Ethereum Websocket
Since Ethermint 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 Ethereum's PubSubAPI, Ethermint needs to cast the Tendermint responses retreived into the Ethereum types.
You can start a connection with the Ethereum websocket using the --wsport flag when initializing
the REST server (default 8546):
Then, start a websocket subscription with ws
# Next
Learn about Ethermint accounts