Assume that we have $k$ blobs which include $\ell$ chunks each.
$data_1^1$ | $data_2^1$ | $\dots$ | $data_k^1$ |
---|---|---|---|
$\dots$ | |||
$data_1^\ell$ | $data_2^\ell$ | $\dots$ | $data_k^\ell$ |
Using RS-coding, encode this data in the evaluation form. In other words, we assume that $f_i(w^j)=data_{j+1}^{i}$ for $i=1,...,k$ and $j=0,...,\ell-1$. Now, we have;
$data_1^1$ | $data_2^1$ | $\dots$ | $data_k^1$ | $\dots$ | $data_n^1$ |
---|---|---|---|---|---|
$\dots$ | |||||
$data_1^\ell$ | $data_2^\ell$ | $\dots$ | $data_k^\ell$ | $\dots$ | $data_n^\ell$ |
Assume $n=2k$. For every node, we first calculate the hash of column data such that
$H_1=H(01data_1^1||02data_1^2||\dots||0\ell data_1^\ell)$
and also calculate the commitment of the column such that
$C_1=com(data_1^1,data_1^2,\dots,data_1^\ell)$
If we use a hash function that has an output size equal to 256-bit and BLS12-381 curve for commitment then the size of the $H_1$ is equal to 32-byte and the size of the $C_1$ is equal to 96-byte (which is an elliptic curve point). Let’s represent the $x$-coordinate of $C_1$ as $C_1(x)$ and the $y$ -coordinate of $C_1$ as $C_1(y)$ and each of one has a 48-byte size.
If you do this calculation for every column, we have the following;
$H_1$ | $C_1(x)$ | $C_1(y)$ | $H_2$ | $C_2(x)$ | $C_2(y)$ | $\dots$ | $H_n$ | $C_n(x)$ | $C_n(y)$ |
---|
Then calculate the commitment of this row. Represent this commitment as a $Com_{row}$. For the $node_i$, sent the column data $\{data_i^1,data_i^2,\dots,data_i^\ell\}$, $H_i$, $C_i(x)$, $C_i(y)$ and $Com_{row}$.
For the verification process, $node_i$, firstly wants the proofs of $H_i,C_i(x)$ , and $C_i(y)$ and verifies the proofs. After that, $node_i$ calculates the hash of the column data and checks the equality of this value and $H_i$. If this is true then $node_i$ calculates the commitment of this data and checks whether this value is equal to $C_i$ or not. If this is true, then this proves that this column is encoded correctly.
For light nodes, firstly choose a random $i$ value and want to opening of $C_i(x)$ and $C_i(y)$. If this proof holds, then choose another random value $j$ and want to opening of $data_i^j$. If this holds, then this proves that the chunk $data_i^j$ is encoded correctly.