@attestate/crawler
A JavaScript library for retrieving on-chain storage and generating data derivatives.
- Modular: Extract, Transform and Load stage separation makes composing simple components into complex workflows possible. Stages are reunnable to recover errors. 
- Embedded: Unlike Graph Protocol, Attestate’s Crawler does not have a separate server process. It writes directly to LMDB, an embedded database that can be read-from thread-safely at any time. 
- Batteries-included: Support for Ethereum, IPFS, Arweave, GraphQL and rate-limit pooling for Infura and Alchemy. 
Attestate’s Crawler is created to build a web3 of peer to peer applications.
Comparison
Compare Attestate’s crawler with the Graph Protocol and Ponder using the table below.
| Trait | Attestate Crawler | Graph Protocol | Ponder | 
|---|---|---|---|
| Embeddable/Local Development | ✓ (Run as your app) | ✘ (Runs as a network) | ✓ (Local dev server with hot reloading) | 
| Output Formats | CSV, JSON, LMDB | GraphQL | GraphQL (Postgres?) | 
| Web2 support | HTTP, JSON-RPC, GraphQL | Partial | N/A | 
| Free | ✓ | ✘ (tokens required) | ✓ | 
| Complexity | A few JS files | Big code base | TypeScript/Node.js code base | 
| Censorship-resistant | ✓ | N/A | |
| Customizable | ✓ (Compose & implement custom strategies) | ✓ (Query many subgraphs) | ✓ Same as graphql | 
| License | GPL-3 | Apache 2.0/MIT | MIT | 
| Replicate data | ✓ | ✓ | ✓ | 
| Derive data | ✓ | Multi-graph app | Multi-graph app | 
| Dependencies | Node.js, LMDB (optional) | Docker, IPFS, PostgreSQL, Node.js | Node.js, PostgreSQL (optional) | 
| Language/runtime | Node.js | AssemblyScript/WebAssembly | TypeScript/Node.js | 
| Package ecosystem | ✓ npm | ✘ no npm | ✓ npm | 
| Fulltext search queries | ✓ (use LMDB) | ✓ | (planned) | 
For a more in-depth discussion of uses cases, visit the use cases site.
Demotime!
Features
- Rerunnable crawls using Extract, Transform and Load stage separation 
- Fast: GB/s extraction from Ethereum (co-located Erigon) 
- Thread-safe reads with LMDB 
- Rate-limiting support for Infura & Alchemy 
- Efficient: Minimized network calls through separation of concerns 
- No token launch, no miners, no fees: Just a community FOSS GPL3 project 
- Support for Ethereum JSON-RPC, GraphQL, IPFS, Arweave 
- Production-ready & unit-tested 
Warning
We’re currently actively working on these documents. They’re still far from complete!
Strategies
Table of Contents
Concepts