-
Notifications
You must be signed in to change notification settings - Fork 843
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
Fullnodes to publish data columns from EL getBlobs
#7258
Fullnodes to publish data columns from EL getBlobs
#7258
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice!
let columns_to_publish = columns | ||
.into_iter() | ||
.filter(|c| custody_columns.contains(&c.index)) | ||
.collect(); | ||
self_cloned.publish_data_columns_gradually(columns_to_publish, block_root); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One small optimization here might be to skip the filtering if self.network_globals.is_supernode()
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated in 0c60a36
I was a bit tempted to remove the is_supernode
function - with the introduction of validator custody, some full nodes now performs the same tasks as supernodes - including distributed blob publishing and reconstruction, but I'll leave this change out of this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With validator custody, this becomes a bit complicated - the node should be publishing the columns that it imported into its database - so we need to be using the custody_group_count
tied to the Rpc or gossip verified beacon block instead of using the NetworkGlobals
, because CGC is now dynamic:
custody_columns_count: usize, custody_columns_count: usize,
However, there are a few moving pieces and this wiring hasn't been fully set up, I think it's best to wait until the following PR is completed:
8a8adb3
to
0c60a36
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Issue Addressed
Previously only supernode contributes to data column publishing in Lighthouse.
Recently we've updated the spec to have full nodes publishing data columns as well, to ensure all nodes contributes to propagation.
This also prevents already imported data columns from being imported again (because we don't "observe" them), and ensures columns that are observed in the gossip seen cache are forwarded to its peers, rather than being ignored.