inindexer

Crates.ioinindexer
lib.rsinindexer
version0.1.0
sourcesrc
created_at2024-05-03 15:42:32.791743
updated_at2024-06-15 19:16:23.112785
descriptionA framework for building NEAR Protocol indexers
homepage
repositoryhttps://github.com/INTEARnear/inindexer
max_upload_size
id1228927
size218,454
(Sliman4)

documentation

https://docs.rs/inindexer

README

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.

Commit count: 42

cargo fmt