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