mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-16 11:22:56 +00:00
Implement Metadatav3 (#6303)
* Add a V3 variant for metadata * Add v3 for requests; persistence logic * Set custody_subnets on setting metadata * Fix tests * Address some comments * fmt * Address more comments * Fix tests * Update metadata rpc limits * Update method doc.
This commit is contained in:
@@ -256,6 +256,8 @@ impl<E: EthSpec> PeerDB<E> {
|
||||
.map(|(peer_id, _)| peer_id)
|
||||
}
|
||||
|
||||
/// Returns an iterator of all good gossipsub peers that are supposed to be custodying
|
||||
/// the given subnet id.
|
||||
pub fn good_custody_subnet_peer(
|
||||
&self,
|
||||
subnet: DataColumnSubnetId,
|
||||
@@ -263,15 +265,8 @@ impl<E: EthSpec> PeerDB<E> {
|
||||
self.peers
|
||||
.iter()
|
||||
.filter(move |(_, info)| {
|
||||
// TODO(das): we currently consider peer to be a subnet peer if the peer is *either*
|
||||
// subscribed to the subnet or assigned to the subnet.
|
||||
// The first condition is currently required as we don't have custody count in
|
||||
// metadata implemented yet, and therefore unable to reliably determine custody
|
||||
// subnet count (ENR is not always available).
|
||||
// This condition can be removed later so that we can identify peers that are not
|
||||
// serving custody columns and penalise accordingly.
|
||||
let is_custody_subnet_peer = info.on_subnet_gossipsub(&Subnet::DataColumn(subnet))
|
||||
|| info.is_assigned_to_custody_subnet(&subnet);
|
||||
// The custody_subnets hashset can be populated via enr or metadata
|
||||
let is_custody_subnet_peer = info.is_assigned_to_custody_subnet(&subnet);
|
||||
info.is_connected() && info.is_good_gossipsub_peer() && is_custody_subnet_peer
|
||||
})
|
||||
.map(|(peer_id, _)| peer_id)
|
||||
|
||||
Reference in New Issue
Block a user