Why Sieve

What changes when you drop the RPC provider.

The problem

Every existing indexer requires an RPC endpoint. That means either running a full node or paying a provider like Alchemy or Infura. Providers cost $225–900/month for serious usage, enforce rate limits, and add a dependency you don't control.

Your indexing speed is capped by their rate limit. Your uptime depends on their infrastructure. Your bill scales with your query volume.

How Sieve is different

Sieve connects directly to Ethereum's P2P network using the same devp2p protocol that full nodes use. It fetches block headers and receipts from peers, filters logs against your config at sync time, decodes matched events, and writes only what you asked for to PostgreSQL. Everything else is discarded.

~1000blocks/sec on commodity hardware
$0per month. No API keys, no accounts, no billing
1TOML file. Zero code to write
AutoGraphQL API with filters, pagination, sorting

Architecture

pipeline
Ethereum P2P Network
       |
       v
  Sync Engine (parallel workers, bloom filter pre-screening)
       |
       |-----------------+-----------------+
       v                 v                 v
  Event Filter     Call Scanner     Transfer Scanner
       |                 |                 |
       v                 v                 |
  ABI Decoder      ABI Decoder            |
       |                 |                 |
       +-----------------+-----------------+
                         |
                         v
                   PostgreSQL -------> Webhooks / RabbitMQ
                         |
                         v
                   GraphQL API

The sync engine connects to Ethereum peers and fetches block headers and receipts in parallel batches. A bloom filter pre-screens blocks before fetching receipts, skipping ~98% of blocks that have no matching events. Matched logs are decoded using your ABI and written to PostgreSQL in batched transactions.

Checkpoint/resume restarts from where it left off
Reorg handling detects reorganizations and rolls back affected data
Follow mode after historical sync, follows the chain head in real-time
Graceful shutdown Ctrl+C stops cleanly, progress is saved

What you can index

Event logs

Filter by contract address, event signature, and indexed parameter values. Bloom filter pre-screening at sync time.

Function calls

Decode transaction calldata for specific function selectors. Only successful (non-reverted) transactions.

Native ETH transfers

Track value transfers with optional sender/receiver address filters. No ABI needed.

Factory contracts

Dynamically discover and index child contracts as they're deployed.

All configured in one TOML file. All stored in PostgreSQL. All queryable via GraphQL.

Next steps

Get Started install and run Sieve in five steps