3 releases

new 0.1.0-alpha.3 May 9, 2024
0.1.0-alpha.2 May 4, 2024
0.1.0-alpha.1 May 3, 2024

#728 in Database interfaces

Download history 345/week @ 2024-05-03

345 downloads per month

MIT/Apache

88KB
2K SLoC

crates-io Workflow Status

Indexer

InIndexer is a NEAR indexer framework.

Features

  • Different sources of near data: neardata-server (implemented), AWS Lake (only consecutive ascending ranges are supported), local file storage for backfilling (planned), you can add your own sources by implementing MessageStreamer or message_provider::MessageProvider trait.
  • Simple indexer interface: you only need to implement Indexer trait and handle receipts, blocks, transactions, or transactions with all receipts included, at a cost of some preprocessing overhead (around 1-2ms in release mode with 80-100 TPS on Slime's PC, this can be disabled in IndexerOptions::preprocess_transactions).
  • Retries, performance warnings, skipped blocks handling, and other features are built-in, so you can focus on your indexer logic.
  • Auto-Continue: the indexer will save the last processed block height to the file and continue from it on the next run. Includes a Ctrl+C handler for graceful shutdown.
  • Some helper functions and types for working with logs, balances, and other commonly used functionality in near_utils.

This crate only works with tokio runtime.

If you want to see some examples, check minimal examples in examples/ or real indexers used in Intear infrastructure (nft-indexer, potlock-indexer, trade-indexer). By the way, these repositories are libraries, so if you want the same functionality but with a different event handler, you can use them in your code.

To run multiple indexers at once without making a new request for each indexer, use MultiIndexer, with MapErrorIndexer if your indexers have different error types.

Dependencies

~30–48MB
~722K SLoC