Indexer Modules

An indexer module is the main place to implement your custom indexing logic. It consists of indexers for block data or contracts. Indexers are executed together and they share the same context data. The data are managed per block by the indexing cycle handler. An indexer module can also reference database entities used to store the indexed data.

For exact API, check docs of IndexerModule, or IndexerModuleUsingDb.

Indexing Cycle Handler

Creates initial context data for indexing each block. Also, it can be executed before or after other indexers are executed, and it should handle blockchain reorganization.

For exact API, check docs of IndexingCycleHandler, or IndexingCycleHandlerUsingDb.

Block Data Indexers

Provide extension points for indexing block parts like block itself, operation groups, operations, operations results, balance updates, etc.

For exact API, check docs of BlockDataIndexer, or BlockDataIndexerUsingDb.

Contract Indexers

Provide extension points for block parts related to a contract like origination, entrypoint, big map diff, storage change, etc. Firstly, a contract indexer decides if it wants to index a contract based on its address, definition, and other details. At that point, it can associate some additional data with a contract which will be passed in by Dappetizer on each contract call. For example, you want to index contracts with a particular big map type, so you examine it and store some big map details, e.g. its schema.

For exact API, check docs of ContractIndexer, or ContractIndexerUsingDb.

Database Entities

Database entities are usually classes used for storing the data to the database by the module. Check out TypeORM documentation for more details about entities.

For exact API, check docs of DbEntity.

Last updated