Indexing ABCI events

The pd software emits ABCI events (opens in a new tab) while processing blocks. By default, these blocks are stored in CometBFT's key-value database locally, but node operators can opt-in to writing the events to an external PostgreSQL database. Furthermore, the pindexer software can be used to take these raw ABCI events, and produce Penumbra-specific "app views" with rich formatted data.

Motivation for maintaining an event database

Any application that requires detailed information about Penumbra chain state needs access to an event database, in order to display information to a user. Penumbra nodes are designed to record only information that is relevant to processing new blocks. Therefore Penumbra uses ABCI events as a means for external software to track historical happenings on the chain, and maintain heavier indices of non-consensus-critical state.

Examples of applications that use a pindexer backend database include:

In order to make sense of chain state, operators must configure a Penumbra node to record events in an external database. Most likely, they will then also want to configure a pindexer database, as well.