Overview (Blockchain Indexing)

About SxT blockchain indexing

Space and Time indexes major blockchains and stores the data in a relational state. Our indexing service provides...

  • Chain-level data (i.e. tables like wallets, transactions, contracts, blocks, token transfers, etc.—full chain state from genesis block once indexing is complete for a chain) that’s stored in “core” tables.
  • Protocol-specific semantic datasets from protocols like Aave, Uniswap, Opensea, dYdX, or price feeds.
  • Custom tables for your own smart contract events via our smart contract indexing feature.

All SxT indexed blockchain data is...

  • Realtime and historical: We capture and store every event from every major block on every major chain in real time.
  • Decoded and relational: Query relational blockchain data tables, like blocks, wallets, and NFT transfers.
  • Self-service: Explore indexed data on our frontend and create new tables from your smart contract events with one click.
  • ZK-powered and tamperproof: Space and Time is the only blockchain indexer serving tamperproof blockchain data.
  • Free: Indexed blockchain data is included for free when you use Space and Time.

How it works

We built a powerful Rust-based indexer that grabs every smart contract event associated with each transaction from each block in a verifiable way. It first polls multiple RPC nodes for each chain and verifies that what it received from each RPC node is consistent. Then the indexer decodes the data via smart contract ABIs we cache locally. Finally, this data is transformed into a relational, easy-to-query form and loaded in the data warehouse—an exact copy of what’s currently onchain. When you submit your smart contract for indexing, the emitted events are separately written to a new table that you define. This entire process happens within block time.

The indexer service is a single Rust-based binary, so as Space and Time continues to decentralize, we plan to add a light node to it so that multiple indexers (Validators) can redundantly index each chain and send commitments on their indexed data to the Transaction nodes for consensus. This planned architecture is detailed in our whitepaper, but here’s a summary: The Transaction node layer is responsible for BFT consensus. Indexing nodes (called Validators) decode and transform raw blockchain data from RPC and build cryptographic commitments on the data that are used later for ZK-proof verification. Both the commitments and the indexed data are sent to the Transaction nodes which come to consensus given multiple redundant indexing nodes that have indexed each chain.