light-client with DAS (rpc) #307
Labels
C:data-availability
Component: Data Availability Proofs
C:ipld
Access to the IPLD merkle dag
C:light
Component: Light client
Context
We discussed which node type in the MVP should do DA sampling. Options were:
Decision
We decided that the quickest turnaround for the MVP is Option 3. This only requires us to specify the light-client UX and the additional "mode" in which it does DAS.
Action items:
@Wondertan write ADR that defines the artifact that allows peers to download the data availably header from the (single) data root in the headerwhile we still need this (!) we can do a first implementation without this featurechange code s.t. peers store the merkelization of the row and column roots in IPLD too (inner and leaf nodes)same as aboveNote: the latter requires IPFS and that we additionally store the (regular binary) Merkle tree into IPLD - we currently only store the block data's row and column trees (the namespace Merkle trees) of the extended block. There are several ideas on this step (going from the single data root in the header -> DAHeader), which could be optimized in terms of networking latency.
One very simple idea is to store the row and column roots in flat DAG (as ipfs does by default). This would be more efficient and wouldn't even require us to define any additional IPLD plugin. The downside would be that if you download even a single particular row-root, you would also need to download all neighboring nodes (all row and column roots), to ensure the content you've downloaded actually matches the CID (or data root). Apparently, this is non-optimal for "super-light-clients". It would be good if their concrete requirements were written down more explicitly. I'm not sure we are making the right trade-offs here as the DA header is still small anyway (cc @adlerjohn @musalbas).
If I understand correctly, @Wondertan has some more sophisticated ideas for the dataroot->DAHeader downloading step. We should describe those as soon as we derisked shipping the MVP. Other optimizations include using IPLD selectors and graphsync.
Closing this and tracking the remaining tasks (see opening comment) in smaller separate issue: #378
The text was updated successfully, but these errors were encountered: