PeerDAS Sync

Assumptions

The following notes assume that:

  1. Column index custody requirements for a node will only change at epoch boundries
  2. A syncing node must fetch the columns its required to custody from the past 4096 epochs (i.e. the data availability window)
  3. A syncing node must validate columns via sampling as its syncing

Non Finalized Sync

Theres some incompatabilities with the current sync infra. Currently there is an implicit assumption that at each "batch" (i.e. epoch), we will request both blobs and blocks from a single, randomly selected, peer. However with data columns, this assumption is no longer valid.

For each network request we make, we create a RequestId. For example, in a blobs by range request we create a single shared RequestId for both the block by range and blob by range request. Since these requests happen on different substreams, the rpc is able to differentiate between the shared RequestId's

We then store the request in a hashmap, where the key is the RequestId and the value is the RequestInfo.