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.
Architecture
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 APIThe 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.
What you can index
Filter by contract address, event signature, and indexed parameter values. Bloom filter pre-screening at sync time.
Decode transaction calldata for specific function selectors. Only successful (non-reverted) transactions.
Track value transfers with optional sender/receiver address filters. No ABI needed.
Dynamically discover and index child contracts as they're deployed.
All configured in one TOML file. All stored in PostgreSQL. All queryable via GraphQL.