Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Decoupling the by root request #3992

Closed
Tracked by #3989
realbigsean opened this issue Feb 16, 2023 · 2 comments
Closed
Tracked by #3989

Decoupling the by root request #3992

realbigsean opened this issue Feb 16, 2023 · 2 comments
Assignees
Labels

Comments

@realbigsean
Copy link
Member

realbigsean commented Feb 16, 2023

We need to update the BlockAndBlobsSidecar by root request we have implemented to a BlobSidecar by root request. When serving this request presently we check the early attester cache, now it seems like we should draw from whatever caching we have for blobs in gossip, this would let us serve blobs to peers even if we haven't been able to check data availability ourselves, this seems better for the network.

the BlobSidecar now includes a parent block root field, this would let us request for missing blob parents by root. This is interesting but may end up being tricky. I'm unsure how this ends up fitting into our current use of the ResourceUnavailable response. We're using it to denote the requrested blob was pre-4844.

@realbigsean realbigsean mentioned this issue Feb 16, 2023
10 tasks
@realbigsean realbigsean changed the title Decoupling the by root request @divagant-martian @realbigsean Decoupling the by root request Feb 16, 2023
@realbigsean
Copy link
Member Author

Some notes from talking to @pawanjay176 and @divagant-martian

  • Peers will be able to serve a block or blob even if they don't necessarily have both (haven't verified data availability)
  • If there’s any attestation for a block by a peer, that peer should have block and blob
  • If a missing parent comes from gossip and there’s no peer claiming attestations for that block we will still want to keep it, serve it and ask other peers for it's corresponding blobs. Is it possible we want a threshold of peer requests for associated blobs before we assume the data is not available?
  • The cache that we are building for observed blobs + blocks in gossip should be checked in order to serve blocks and blobs via these RPC by roots request
  • That cache should also be considered when we are searching for chains via series of parent by root requests (do we have one of the referenced parents cached already)
  • when we are searching for a new chain via a series of by roots requests, we should probably just consider the chain of block parent roots, and not consider the blob's block_parent_root field. The blob's block_parent_root field should be considered in blob validation, but probably shouldn't trigger a parent blob by root request as this may become tough to reconcile with a chain of block parent root requests happening in parallel, especially because both block + block will be necessary for import

@realbigsean
Copy link
Member Author

Completed in #4152

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants