mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 18:37:59 +00:00
Dispute spam protection (#4134)
* Mostly notes. * Better error messages. * Introduce Fatal/NonFatal + drop back channel participation - Fatal/NonFatal - in order to make it easier to use utility functions. - We drop the back channel in dispute participation as it won't be needed any more. * Better error messages. * Utility function for receiving `CandidateEvent`s. * Ordering module typechecks. * cargo fmt * Prepare spam slots module. * Implement SpamSlots mechanism. * Implement queues. * cargo fmt * Participation. * Participation taking shape. * Finish participation. * cargo fmt * Cleanup. * WIP: Cleanup + Integration. * Make `RollingSessionWindow` initialized by default. * Make approval voting typecheck. * Get rid of lazy_static & fix approval voting tests * Move `SessionWindowSize` to node primitives. * Implement dispute coordinator initialization. * cargo fmt * Make queues return error instead of boolean. * Initialized: WIP * Introduce chain api for getting finalized block. * Fix ordering to only prune candidates on finalized events. * Pruning of old sessions in spam slots. * New import logic. * Make everything typecheck. * Fix warnings. * Get rid of obsolete dispute-participation. * Fixes. * Add back accidentelly deleted Cargo.lock * Deliver disputes in an ordered fashion. * Add module docs for errors * Use type synonym. * hidden docs. * Fix overseer tests. * Ordering provider taking `CandidateReceipt`. ... To be kicked on one next commit. * Fix ordering to use relay_parent as included block is not unique per candidate. * Add comment in ordering.rs. * Take care of duplicate entries in queues. * Better spam slots. * Review remarks + docs. * Fix db tests. * Participation tests. * Also scrape votes on first leaf for good measure. * Make tests typecheck. * Spelling. * Only participate in actual disputes, not on every import. * Don't account backing votes to spam slots. * Fix more tests. * Don't participate if we don't have keys. * Fix tests, typos and warnings. * Fix merge error. * Spelling fixes. * Add missing docs. * Queue tests. * More tests. * Add metrics + don't short circuit import. * Basic test for ordering provider. * Import fix. * Remove dead link. * One more dead link. Co-authored-by: Lldenaurois <Ljdenaurois@gmail.com>
This commit is contained in:
@@ -888,17 +888,6 @@ fn test_dispute_coordinator_msg() -> DisputeCoordinatorMessage {
|
||||
DisputeCoordinatorMessage::RecentDisputes(sender)
|
||||
}
|
||||
|
||||
fn test_dispute_participation_msg() -> DisputeParticipationMessage {
|
||||
let (sender, _) = oneshot::channel();
|
||||
DisputeParticipationMessage::Participate {
|
||||
candidate_hash: Default::default(),
|
||||
candidate_receipt: Default::default(),
|
||||
session: 0,
|
||||
n_validators: 0,
|
||||
report_availability: sender,
|
||||
}
|
||||
}
|
||||
|
||||
fn test_dispute_distribution_msg() -> DisputeDistributionMessage {
|
||||
let dummy_dispute_message = UncheckedDisputeMessage {
|
||||
candidate_receipt: Default::default(),
|
||||
@@ -930,7 +919,7 @@ fn test_chain_selection_msg() -> ChainSelectionMessage {
|
||||
// Checks that `stop`, `broadcast_signal` and `broadcast_message` are implemented correctly.
|
||||
#[test]
|
||||
fn overseer_all_subsystems_receive_signals_and_messages() {
|
||||
const NUM_SUBSYSTEMS: usize = 21;
|
||||
const NUM_SUBSYSTEMS: usize = 20;
|
||||
// -3 for BitfieldSigning, GossipSupport and AvailabilityDistribution
|
||||
const NUM_SUBSYSTEMS_MESSAGED: usize = NUM_SUBSYSTEMS - 3;
|
||||
|
||||
@@ -1009,9 +998,6 @@ fn overseer_all_subsystems_receive_signals_and_messages() {
|
||||
handle
|
||||
.send_msg_anon(AllMessages::DisputeCoordinator(test_dispute_coordinator_msg()))
|
||||
.await;
|
||||
handle
|
||||
.send_msg_anon(AllMessages::DisputeParticipation(test_dispute_participation_msg()))
|
||||
.await;
|
||||
handle
|
||||
.send_msg_anon(AllMessages::DisputeDistribution(test_dispute_distribution_msg()))
|
||||
.await;
|
||||
@@ -1069,7 +1055,6 @@ fn context_holds_onto_message_until_enough_signals_received() {
|
||||
let (approval_voting_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY);
|
||||
let (gossip_support_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY);
|
||||
let (dispute_coordinator_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY);
|
||||
let (dispute_participation_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY);
|
||||
let (dispute_distribution_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY);
|
||||
let (chain_selection_bounded_tx, _) = metered::channel(CHANNEL_CAPACITY);
|
||||
|
||||
@@ -1091,7 +1076,6 @@ fn context_holds_onto_message_until_enough_signals_received() {
|
||||
let (approval_voting_unbounded_tx, _) = metered::unbounded();
|
||||
let (gossip_support_unbounded_tx, _) = metered::unbounded();
|
||||
let (dispute_coordinator_unbounded_tx, _) = metered::unbounded();
|
||||
let (dispute_participation_unbounded_tx, _) = metered::unbounded();
|
||||
let (dispute_distribution_unbounded_tx, _) = metered::unbounded();
|
||||
let (chain_selection_unbounded_tx, _) = metered::unbounded();
|
||||
|
||||
@@ -1114,7 +1098,6 @@ fn context_holds_onto_message_until_enough_signals_received() {
|
||||
approval_voting: approval_voting_bounded_tx.clone(),
|
||||
gossip_support: gossip_support_bounded_tx.clone(),
|
||||
dispute_coordinator: dispute_coordinator_bounded_tx.clone(),
|
||||
dispute_participation: dispute_participation_bounded_tx.clone(),
|
||||
dispute_distribution: dispute_distribution_bounded_tx.clone(),
|
||||
chain_selection: chain_selection_bounded_tx.clone(),
|
||||
|
||||
@@ -1136,7 +1119,6 @@ fn context_holds_onto_message_until_enough_signals_received() {
|
||||
approval_voting_unbounded: approval_voting_unbounded_tx.clone(),
|
||||
gossip_support_unbounded: gossip_support_unbounded_tx.clone(),
|
||||
dispute_coordinator_unbounded: dispute_coordinator_unbounded_tx.clone(),
|
||||
dispute_participation_unbounded: dispute_participation_unbounded_tx.clone(),
|
||||
dispute_distribution_unbounded: dispute_distribution_unbounded_tx.clone(),
|
||||
chain_selection_unbounded: chain_selection_unbounded_tx.clone(),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user