diff --git a/specs/src/specs/data_structures.md b/specs/src/specs/data_structures.md index c07d630cba..ee84145c7c 100644 --- a/specs/src/specs/data_structures.md +++ b/specs/src/specs/data_structures.md @@ -328,6 +328,8 @@ Finally, the `availableDataRoot` of the block [Header](#header) is computed as t The previous sections described how some original data, arranged into a `k * k` matrix, can be extended into a `2k * 2k` matrix and committed to with NMT roots. This section specifies how [available data](#available-data) (which includes [transactions](#transactiondata), [intermediate state roots](#intermediatestaterootdata), PayForBlob transactions, and [blobs](#blobdata)) is arranged into the matrix in the first place. +Note that each [share](./shares.md) only has a single namespace, and that the list of concatenated shares is lexicographically ordered by namespace. + Then, 1. For each of `transactionData`, `intermediateStateRootData`, PayForBlob transactions, [serialize](#serialization): @@ -338,8 +340,6 @@ Then, 1. Create a [share](./shares.md) out of each chunk. This data has a _reserved_ namespace ID, so the first [`NAMESPACE_SIZE`](./consensus.md#constants)`+`[`SHARE_RESERVED_BYTES`](./consensus.md#constants) bytes for these shares must be set specially. 1. Concatenate the lists of shares in the order: transactions, intermediate state roots, PayForBlob transactions. -Note that by construction, each share only has a single namespace, and that the list of concatenated shares is [lexicographically ordered by namespace ID](consensus.md#reserved-namespace-ids). - These shares are arranged in the [first quadrant](#2d-reed-solomon-encoding-scheme) (`Q0`) of the `availableDataOriginalSquareSize*2 * availableDataOriginalSquareSize*2` available data matrix in _row-major_ order. In the example below, each reserved data element takes up exactly one share. ![fig: Original data: reserved.](./figures/rs2d_originaldata_reserved.svg)