Parallel replay
History is processed in parallel rather than one block after another.
Historical data
From genesis to the current block, into your own database, on a path you can stop and resume.
StreamingFast
ecosystem
01 Historical data
The request returned 200, and you still do not know whether the dataset covers the right contracts.
The backfill has been running for days, and nobody can say which block it is on.
It died at 70 percent, and the only option on the table is to start again.
Following the head and replaying years of blocks are two different jobs. Most teams use one code path for both, which is why the backfill is slow and still has holes. Firehose reads flat files instead of asking an endpoint for one block at a time, so history is replayed in parallel and the live stream is left to do its own job.
Read the guide01 specVersion: v0.1.0
02 package:
03 name: token_transfers
04 version: v0.1.0
05
06 modules:
07 - name: map_transfers
08 kind: map
09 inputs:
10 - source: sf.ethereum.type.v2.Block
11 output:
12 type: proto:transfers.TransfersHistory is processed in parallel rather than one block after another.
Persist where you are. A restart resumes there, not at the beginning.
The output is the entity your product uses, not a log you still have to interpret.
A record of what the dataset contains, so the next person does not have to guess.
When history is caught up, the stream continues. No second implementation.
02 Historical data
Name the network, the contracts and the period the dataset has to answer for.
Run the backfill, parallel, resumable, into flat files or straight into your database.
Check the first block, the last block and a sample inside, then record the coverage.
03 Historical data
Historical data
Define coverage, plan the backfill and verify the dataset before you rely on it.