github.com/badrootd/nibiru-cometbft@v0.37.5-0.20240307173500-2a75559eee9b/docs/architecture/adr-021-abci-events.md (about) 1 # ADR 012: ABCI Events 2 3 ## Changelog 4 5 - *2018-09-02* Remove ABCI errors component. Update description for events 6 - *2018-07-12* Initial version 7 8 ## Context 9 10 ABCI tags were first described in [ADR 002](https://github.com/tendermint/tendermint/blob/v0.37.x/docs/architecture/adr-002-event-subscription.md). 11 They are key-value pairs that can be used to index transactions. 12 13 Currently, ABCI messages return a list of tags to describe an 14 "event" that took place during the Check/DeliverTx/Begin/EndBlock, 15 where each tag refers to a different property of the event, like the sending and receiving account addresses. 16 17 Since there is only one list of tags, recording data for multiple such events in 18 a single Check/DeliverTx/Begin/EndBlock must be done using prefixes in the key 19 space. 20 21 Alternatively, groups of tags that constitute an event can be separated by a 22 special tag that denotes a break between the events. This would allow 23 straightforward encoding of multiple events into a single list of tags without 24 prefixing, at the cost of these "special" tags to separate the different events. 25 26 TODO: brief description of how the indexing works 27 28 ## Decision 29 30 Instead of returning a list of tags, return a list of events, where 31 each event is a list of tags. This way we naturally capture the concept of 32 multiple events happening during a single ABCI message. 33 34 TODO: describe impact on indexing and querying 35 36 ## Status 37 38 Implemented 39 40 ## Consequences 41 42 ### Positive 43 44 - Ability to track distinct events separate from ABCI calls (DeliverTx/BeginBlock/EndBlock) 45 - More powerful query abilities 46 47 ### Negative 48 49 - More complex query syntax 50 - More complex search implementation 51 52 ### Neutral