Pre-req: https://github.com/ethereum/consensus-specs#3531
PR: https://github.com/prysmaticlabs/prysm/compare/update-sync
ethpb.BlobSidecar
to ROBlob
.ROBlob
a first-class citizen?blob.Root()==block.Root()
for direct alignment checks.Sync package depends on the DB package, which in turn affects other packages.
Current State: Commented out DB-related code to prepare for the next PR. Which is ok, the feature is not ready for the 'develop' branch until all aspects are completed.
Open Question: What is the most efficient way to manage these cross-package dependencies while updating the sync package?
BlobSidecar
with SignedBlobSidecar
in BlobSubnetTopicFormat
.BroadcastBlob
to broadcast SignedBlobSidecar
.
BlobSidecar
over the network, instead of SignedBlobSidecar
.SignedBlobSidecar
to ROBlob
to optimize header hash tree root calculations.REJECT
label if conversion to ROBlob
fails, as this indicates an incorrect blob sidecar format. REJECT
makes more sense than IGNORE
RoBlock.Slot()
, ParentRoot()
, ProposerIndex()
to simplify calls.hasSeenBlobIndex
to take slot, proposer_index, and index
as parameters, in line with spec updates.
(block_header.slot, block_header.proposer_index, blob_sidecar.index)
.SendBlobSidecarByRoot
and SendBlobsByRangeRequest
will now return blobs in the new format.readChunkEncodedBlobs
and fetchBlobsFromPeer
to use ROBlob
.verifyAndPopulateBlobs
to work with ROBlob
.WriteBlobSidecarChunk
writes the updated blob sidecar format.BlobAlignsWithBlock
function to use hash tree roots for comparison, thereby reducing verification steps like slot, and proposer index. Hash tree root of block and header should be the same. (Yay)
BlockWithVerifiedBlobs
to use ROBlob
, thereby ensuring alignment between blocks and blobs. This is a very neat change imo.ReceiveBlob
functionality will be updated once the DB methods like SaveBlobSidecar
are revised.