I think this part needs more explanation. Support for row-based reconstruction does not need 2D encoding. What it does need is:
- a row encoding: we already have that
- a row-wise communication method: we have that currently in the EL, but there are a few details that need to be fixed. We could also introduce it at the CL-level, as we’ve done in FullDAS.
- to make it really useful as the means to avoid relying on supernodes, we also need the results of these row-based roconstructions to feed back into the column channels. This is however easy, low-overhead, and in-fact the nim-lib2p based 2D FullDAS code always operated this way.
Where the 2D encoding comes in is allowing cheaper sampling. And, as you highlighted, this doesn’t even have to be on the critical path. I can easily imagine cell-based sampling serving delayed sampling needs. However, it is also to be said that cell-level samping can be implemented fast. We’ve implemented it in the FullDAS prototype.
Another note on the second dimension of encoding: it is not really about having to have a second Reed-Solomon encoding. The essence of it is to have an encoding once it is clear which blobs belong to the same block. It provides a code over the whole DA content bound to a block, enforcing all-or-nothing semantics, and allowing cheaper sampling at the same time.
Besides the second RS dimension, there are other constructs we can use. For example, I’ve published an RLC-based variant in the second FullDAS post.