sieve
ethereum indexer that connects directly to p2p.
no rpc provider. no api keys. no bills.
sieve ~/my-indexer
$
sieve diff --others
# what changes when you drop the RPC provider
Data sourceRPC provider ($225-900/mo)Ethereum P2P ($0)
SpeedProvider rate limit~1000 blocks/sec
SetupAPI keys, accounts, billingcurl install | bash
ConfigTypeScript / YAML / subgraphOne TOML file
QueryCustom API / hosted subgraphAuto GraphQL API
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
# ready?
install
$ curl -fsSL https://raw.githubusercontent.com/slvDev/sieve/main/sieveup/install | bash