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
345 downloads per month
88KB
2K
SLoC
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
ormessage_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 inIndexerOptions::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