Waxwing: Handing a synced subgraph deployment from one Graph indexer to another, with enough evidence attached that the receiver can decide whether to trust it

waxwing: handing a synced subgraph between indexers, with evidence

I noticed there are many issues with graphman dump and restore, so I’m building waxwing, for handing a synced subgraph deployment from one indexer to another with enough evidence attached that the receiver can decide whether to trust it.

Works with stock graph-node, no patches:

  • seal refuses a dump taken on a reverted fork or pruned past its last layer, which graphman accepts
  • cut rewinds a dump to the finalized block
  • restore keeps the dump’s indexes and is about 2.6x faster than graphman restore in our test
  • attest signs a state root, counted against stake on Horizon

Tested on 6 real deployments on Arbitrum, Ethereum and Base, all identical after the handover. Not tried on a production sized one yet.

Anyone up for trying it?