Technical overview

Architecture

Indexing without Icedancer

  • Every project requiring indexing runs it's own archival solana node, a custom Geyser plugin, a database and an API gateway.

  • This results in duplication of effort and high cost.

  • Given the high speed and size of Solana transactions, the hardware requirement is high.

Indexing with Icedancer

  • RPC, geyser plugin, database and API gateway is pooled. This results in significant cost savings.

  • Each project deploys its subgraph to Icedancer, which is executed using Wasmer. Transactions having the subgraph's linked account are passed to the WASM module.

  • The WASM module processes the input. It has the ability entities to database.

  • Database entities can be consumed via a GraphQL API.

Tech stack

  • Forked and optimized Postgres geyser plugin

  • Define entities and API in GraphQL

  • Subgraphs written in Rust and compiled to WASM

  • Indexing server written in Rust that executes subgraphs with Wasmer

  • Postgres database for storage