sieve

self-hosted indexer for ethereum and the op-stack.
connects straight to p2p. no rpc provider. no bills.

ethereum · base · op mainnet · unichain · world chain

sieve ~/my-indexer
$
sieve diff --others
# what changes when you drop the RPC provider
Data sourceRPC provider ($225-900/mo)P2P network ($0)
SpeedProvider rate limit~1000 blocks/sec (mainnet)
ChainsWhatever the provider sellsEthereum + OP-Stack (5)
SetupAPI keys, accounts, billingcurl install | bash
ConfigTypeScript / YAML / subgraphOne TOML file
QueryCustom API / hosted subgraphAuto GraphQL API
# benchmarked on a Hetzner dedicated server, ethereum mainnet
sieve.toml
# that's the entire config
[[contracts]]
name = "USDC"
address = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
abi = "abis/erc20.json"
start_block = 6_082_465
[[contracts.events]]
name = "Transfer"
table = "usdc_transfers"
context = ["block_timestamp", "tx_from"]
sieve inspect
# what you get
✓ Table usdc_transfers
├─ block_number BIGINT
├─ tx_hash TEXT
├─ log_index INTEGER
├─ from_address TEXT
├─ to_address TEXT
├─ value NUMERIC
├─ block_timestamp BIGINT
└─ tx_from TEXT
sieve --capabilities
# what sieve can index
events Filter by contract, event signature, indexed params
topic0 + address matching at sync time, bloom pre-screening
calls Decode function calldata for specific selectors
only successful (non-reverted) transactions
transfers Track native ETH transfers with address filters
no ABI needed, sender/receiver filtering
factory Dynamically discover and index child contracts
auto-subscribe on PoolCreated, PairCreated, etc.
graphql Auto-generated API with filters, pagination, sorting
_in, _not_in, _gte, _lte, AND/OR composition
stream Webhooks and RabbitMQ for real-time pipelines
per-event JSON messages, lazy reconnect
chains Ethereum, Base, OP Mainnet, Unichain, World Chain
one chain key in TOML, own devp2p network each
verify Peer quorum on each segment's canonical hash
header chain linked + payload roots checked, no quorum no commit
# ready?
install
$ curl -fsSL https://raw.githubusercontent.com/slvDev/sieve/main/sieveup/install | bash