Consider a Walrus instance with N=7=3f+1 shards. This means the number of primary source symbols is N−2f=3, and secondary N−f=5. A blob of size S=15⋅s can therefore be divided into 15 symbols of size s, and arranged in the matrix as follows.
Then, the primary encoding acts on the columns of the matrix, expanding them such that each column is composed of 4 source symbols and 6 recovery symbols (si,j indicates source symbols, while ri,j indicates recovery symbols).
Each of the columns of this row expansion is a secondary sliver. For example, [r0,6,r1,6,r2,6].
The ith sliver pair is composed of the ith primary and ith secondary slivers. For simplicity, consider that the ith sliver pair is stored on shard i. The sliver-pair-to-shard mapping section discusses the full mapping.
Thanks to the linearity of RaptorQ, the expansion of:
the recovery secondary slivers (columns 5 and 6) with the primary encoding, and
the recovery primary slivers (rows 3, 4, 5, and 6) with the secondary encoding,
results in the same set of symbols, which is essential for recovery. These symbols can be represented as the lower-right quadrant of what is called the fully expanded message matrix.
These symbols do not need to be stored on any node because they can always be recomputed by expanding either a primary or secondary symbol. For example, r4,5 can be obtained by:
the secondary-encoding expansion of the 4th primary sliver: [r4,0,r4,1,r4,2,r4,3,r4,4,r4,5,r4,6], or
the primary-encoding expansion of the 5th secondary sliver: [r0,5,r1,5,r2,5,r3,5,r4,5,r5,5,r6,5].