👋Welcome to Flair

Real-time and historical custom data indexing for any evm chain

Flair offers reusable indexing primitives (such as fault-tolerant RPC ingestors, custom processors, re-org aware database integrations) to make it easy to receive, transform, store and access your on-chain data.

Why Flair?

Compared to other alternatives the main reasons why are:

  • 🚀 Adopting parallel and distributed processing paradigm means high scalability and resiliency for your indexing stack. Instead of constrained sequential processing (e.g Subgraph).

  • 🧩 Work out-of-box with any EVM chain, you plug-in an RPC and indexer starts.

  • 🚄 Native real-time stream processing for certain data workload (such as aggregations, rollups) for things like total volume per pool.

  • ☁️ Managed cloud services avoid DevOps and irrelevant engineering costs for dApp developers.

Features

  • ✅ Listen to any EVM chain with just an RPC URL.

    • Free managed RPC URLs for +8 popular chains already included.

    • Works with both websocket and https-only RPCs.

  • ✅ Track and ingest any contract for any event topic.

    • Auto-track new contracts deployed from factory contracts.

  • Custom processor scripts with Javascript runtime (with Typescript support)

    • Make external API or Webhook calls to third-party or your backend.

    • Get current or historical USD value of any ERC20 token amount of any contract address on any chain

    • Use any external NPM library.

  • Stream any stored data to your destination database (Postgres, MognoDB, Kafka, Elasticsearch, Timescale, etc)

  • ╳ For generic pre-indexed blockchain data it will be more cost-effective to consider services that sell that data, instead of running an indexer. e.g. Try Dune which has already indexed most of generic blockchain data and can sell them cheaper than cost of indexing.

Getting Started

  1. Clone the starter boilerplate template and follow the instructions:

git clone https://github.com/flair-sdk/starter-boilerplate.git
# ... follow instructions in README.md

Boilerplate instructions will create a new cluster, generate an API Key, and set up a manifest.yml to index your first contract with sample custom processor scripts.

Learn more about the structure of manifest.yml.

  1. Explore your custom indexed data:

Visit https://graph.flair.dev and run this query:

Replace "fuji-finance" with your own namespace selected in step 1 above.

query {
  sql(
    # Any arbitrary SQL query with JOIN or aggregations on your entities
    query:
    """
      SELECT
        COUNT(*) as totalCount,
        entityType
      FROM entities WHERE namespace = 'fuji-finance'
      GROUP BY entityType
      ORDER BY totalCount DESC LIMIT 100
    """
  ) {
    stats {
      elapsedMs
    }
    rows
  }
}
  1. Stream the data to your own database.

What next?

Tap into available features and primitives to make the best out of the indexing toolbox:

Learn about some advanced features if you want to expand your work:

Last updated

Was this helpful?