A Walrus shard that loses its slivers recovers them by requesting recovery symbols from other shards. This recovery scenario continues the RedStuff encoding example and uses shard 3 as the failed shard.
Consider that shard 3 fails, losing its slivers, and needs to recover them. Recovery symbols are ordinary sliver symbols: each one is the symbol where a contacted shard's sliver intersects the lost sliver. This example recovers the primary sliver first. When the other shards hold their slivers, either order works, and storage nodes recover both slivers concurrently. Only in the worst-case initial sharing does the secondary sliver have to come first, because it needs only N−2f symbols.
In the matrices in this section, red marks the symbols of the lost slivers and green marks the recovery symbols that other shards provide. Shards never store the lower-right quadrant. In the following matrix, row 3 is the primary sliver of shard 3 and column 3 is its secondary sliver.
The node contacts 5 other shards and requests the recovery symbols for primary sliver 3.
Each contacted shard encodes its secondary sliver (highlighted as a column) to obtain its recovery symbol. This step is necessary because these symbols are repair symbols.
Each contacted shard provides its recovery symbol to shard 3.
For example, shards 0, 1, 2, 4, and 6 provide the symbols r3,0, r3,1, r3,2, r3,4, and r3,6, shown in green:
The node contacts at least 3 other shards to obtain recovery symbols.
Each contacted shard provides the recovery symbol from its primary sliver (highlighted as a row). The recovery symbols are already part of the primary slivers that the other shards store, so no re-encoding is necessary.
Shard 3 decodes the 3 symbols to obtain its secondary sliver, unless the symbols are the symbols of the secondary sliver itself.
For example, shards 0, 1, and 5 provide the recovery symbols s0,3, s1,3, and r5,3, shown in green:
Because r5,3 is a repair symbol, shard 3 decodes the 3 symbols to obtain its secondary sliver. If shards 0, 1, and 2 respond instead, they provide s0,3, s1,3, and s2,3, which are the symbols of the secondary sliver itself, so shard 3 does not need to decode.
For properties, Walrus-specific parameters, blob size limits, and sliver authentication details, see RedStuff properties and parameters.