What are event topics?
Topics are values used for indexing events. You cannot search for events without topics. Whenever an event is invoked, a default topic is generated, which is considered the first topic of the event. There can be up to four topics for an event. Topics are always generated in the same order. You can search for an event using one or more of its topics.
The first topic is the signature of the event. The rest of the three topics are the values of indexed parameters. If the index parameter is string
, bytes
, or array
, then the keccak-256 hash of it is the topic instead.
Let's take an example to understand topics. Suppose there is an event of this form:
event ping(string indexed a, int indexed b, uint256 indexed c, string d, int e); //invocation of event ping("Random String", 12, 23, "Random String", 45);
Here, these four topics are generated. They are as follows:
0xb62a11697c0f56e93f3957c088d492b505b9edd7fb6e7872a93b41cdb2020644
: This is the first topic. It is generated using...