ZODA focuses on ensuring data availability through a three-step process:

Encoding: Encodes data as a matrix $X$ using a code $G$ (e.g., Reed–Solomon), and generates a secondary encoding $Y$ by scaling columns of $X$ with randomness and encoding rows using another code $G'$.

Sampling: Samplers verify correctness by sampling rows from $X$ and columns from $Y$, checking for consistency with the fully encoded matrix $Z$.

Decoding: After successful sampling, nodes can reconstruct the original data $X$ from sampled rows and columns using erasure decoding.

1. Encoding Algorithm

This step ensures that the data is encoded in a way that each row and column acts as proof of correct encoding.

Detailed Steps:

  1. Input Data: Original data $X$ is represented as a matrix $X̃ \in F^{n \times n}$.
  2. Encode Rows:
  3. Random Sampling:
  4. Encode Columns:
  5. Final Encoding:

Key Insight: Rows encode columns, and columns encode rows, creating redundancy that allows verification with minimal overhead.

2. Sampling Algorithm

This step allows any node to verify that the encoding is correct by sampling a small number of rows and columns.

Detailed Steps:

  1. Sampling Sets:
  2. Request Samples:
  3. Verification Checks: