mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-30 14:17:56 +00:00
feat/view: assure heads in a view are sorted (#2493)
* feat/view: assure heads in a view are sorted Allows O(n) comparisons, adds an alternate equiv relation which takes O(n^2) for integrity verification. Ref #2133 * revert: remove custom PartialEq impl, there are no duplicates * fix: do not sort the live_heads, that alters the local view * refactor/view: heads should not be public * chore/spellcheck: add unfinalized * fix/view: add missing len() and is_empty() fns * quirk * vec is not view * Update node/network/approval-distribution/src/tests.rs Co-authored-by: Andronik Ordian <write@reusable.software> * Update node/network/bridge/src/lib.rs Co-authored-by: Andronik Ordian <write@reusable.software> * Update node/network/protocol/src/lib.rs Co-authored-by: Andronik Ordian <write@reusable.software> * fixup comment * fix botched test Co-authored-by: Andronik Ordian <write@reusable.software>
This commit is contained in:
committed by
GitHub
parent
571651e326
commit
e3f776abed
@@ -186,11 +186,11 @@ impl State {
|
||||
self.blocks_by_number.entry(meta.number).or_default().push(meta.hash);
|
||||
}
|
||||
for (peer_id, view) in self.peer_views.iter() {
|
||||
let intersection = view.heads.iter().filter(|h| new_hashes.contains(h));
|
||||
let view_intersection = View {
|
||||
heads: intersection.cloned().collect(),
|
||||
finalized_number: view.finalized_number,
|
||||
};
|
||||
let intersection = view.iter().filter(|h| new_hashes.contains(h));
|
||||
let view_intersection = View::new(
|
||||
intersection.cloned(),
|
||||
view.finalized_number,
|
||||
);
|
||||
Self::unify_with_peer(
|
||||
&mut self.blocks,
|
||||
ctx,
|
||||
@@ -634,7 +634,7 @@ impl State {
|
||||
let mut to_send = HashSet::new();
|
||||
|
||||
let view_finalized_number = view.finalized_number;
|
||||
for head in view.heads.into_iter() {
|
||||
for head in view.into_iter() {
|
||||
let mut block = head;
|
||||
let interesting_blocks = std::iter::from_fn(|| {
|
||||
// step 2.
|
||||
|
||||
@@ -330,7 +330,7 @@ fn spam_attack_results_in_negative_reputation_change() {
|
||||
overseer_send(
|
||||
overseer,
|
||||
ApprovalDistributionMessage::NetworkBridgeUpdateV1(
|
||||
NetworkBridgeEvent::PeerViewChange(peer.clone(), View { heads: Default::default(), finalized_number: 2 })
|
||||
NetworkBridgeEvent::PeerViewChange(peer.clone(), View::with_finalized(2))
|
||||
)
|
||||
).await;
|
||||
|
||||
@@ -666,7 +666,7 @@ fn update_peer_view() {
|
||||
overseer_send(
|
||||
overseer,
|
||||
ApprovalDistributionMessage::NetworkBridgeUpdateV1(
|
||||
NetworkBridgeEvent::PeerViewChange(peer.clone(), View { heads: vec![hash_b, hash_c, hash_d], finalized_number: 2 })
|
||||
NetworkBridgeEvent::PeerViewChange(peer.clone(), View::new(vec![hash_b, hash_c, hash_d], 2))
|
||||
)
|
||||
).await;
|
||||
|
||||
@@ -713,7 +713,7 @@ fn update_peer_view() {
|
||||
overseer_send(
|
||||
overseer,
|
||||
ApprovalDistributionMessage::NetworkBridgeUpdateV1(
|
||||
NetworkBridgeEvent::PeerViewChange(peer.clone(), View { heads: vec![], finalized_number })
|
||||
NetworkBridgeEvent::PeerViewChange(peer.clone(), View::with_finalized(finalized_number))
|
||||
)
|
||||
).await;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user