Lux DA provides data availability guarantees through 2D Reed-Solomon erasure coding. Block data is encoded into an extended matrix where any 50%+ of rows or columns suffice to reconstruct the original data. Light clients sample random cells to verify availability with statistical certainty without downloading full blocks.
Block data is arranged into a k x k matrix and extended to 2k x 2k using Reed-Solomon coding over GF(2^16):
1. Split block data into k^2 chunks of fixed size (512 bytes)
2. Extend each row from k to 2k using RS encoding
3. Extend each column from k to 2k using RS encoding
4. Compute Merkle roots for each row and column
The extended matrix has 4x the original data. Any k of 2k rows (or columns) can reconstruct the original block.
Each block header includes:
DACommitment {
dataRoot [32]byte // Merkle root of the 2k x 2k extended matrix
rowRoots [][32]byte // Merkle root per row (2k entries)
colRoots [][32]byte // Merkle root per column (2k entries)
originalK uint32 // original dimension before extension
}
Light clients verify data availability by sampling random cells:
1. Select s random (row, col) coordinates (default s=16)
2. Request each cell plus its Merkle proof from full nodes
3. Verify each cell against rowRoots[row] and colRoots[col]
4. If all s samples verify, DA is confirmed with probability 1 - (1/2)^s
With s=16, the probability of a false positive is 1/65536.
Full nodes download all cells and verify the complete extended matrix. If any row or column is inconsistent with its Merkle root, the node generates a fraud proof (LP-025) proving the inconsistency.
Applications submit data as blob transactions:
BlobTx {
to address
data []byte // calldata (execution layer)
blobs []Blob // DA blobs (availability layer only)
blobHashes [][32]byte // versioned hashes of blobs
}
Blobs are pruned after BLOB_RETENTION_EPOCHS (default 4096 epochs, ~18 days). Execution layer references blobs by hash only.
1. Minimum sampling: 16 samples provides 99.998% confidence. Applications requiring higher assurance increase s.
2. Reconstruction guarantee: with honest majority (>50% of network storing data), any light client can reconstruct via random sampling.
3. Blob pruning: pruned blobs are no longer available from the protocol. Long-term archival is an application concern.
github.com/luxfi/node/da/ |github.com/luxfi/node/da/rs/ |github.com/luxfi/evm/core/types/blob_tx.go |Copyright (C) 2024-2026, Lux Partners Limited. All rights reserved.
Licensed under the MIT License.