feat(shred,repair): shred publish to repair #4561
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR changes the shred tile and topo such that shred now publishes to repair (Firedancer-only). The idea is the repair tile will now fan-in the shred tiles, and will be a single tile. It will handle merkle chaining validation (which requires serial ordering). It will also know how to repair late shreds inside in-progress FECs, and do this intelligently (only repair shreds in a FEC set that aren't redundant with what's already been received). Finally, repair will also receive and recover duplicate block issues, subsuming / removing the need for the separate eqvoc tile.
The shred_repair sig is now encoded as two different types (shred header or FEC set complete). Previously this was encoded in a single bit on a common message type.
Now the shred tile publishes different message types indicated in the sig. It only publishes to the link if it exists, and only writes to the blockstore if it exists. This simplifies the logic in the shred tile publishing.
Closes #4528