Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

disputes: reject single-sided disputes #3903

Merged
merged 2 commits into from
Sep 27, 2021
Merged

Conversation

rphmeier
Copy link
Contributor

@rphmeier rphmeier commented Sep 22, 2021

This adds logic to the DIsputes module in the runtime to reject disputes which have votes only on a single side. This also alters the filtering logic used by block authors to determine which dispute votes to include on-chain to filter out single-sided disputes, and adjusts a bunch of tests which were submitting single-sided disputes.

I also fixed a bug in the runtime's dispute filtering logic where we'd count votes that were later rejected due to bad signatures. It's unlikely to be triggered in practice as honest nodes would only supply checked signatures to the InherentData in the first place.

@rphmeier rphmeier added A0-please_review Pull request needs code review. B0-silent Changes should not be mentioned in any release notes C1-low PR touches the given topic and has a low impact on builders. D3-trivial 🧸 PR contains trivial changes in a runtime directory that do not require an audit. labels Sep 22, 2021
Comment on lines +389 to +390
valid: bool,
new_participant: bool,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make sense to use an enum instead of two booleans?

Do we need to cover all 4 cases?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We would need to cover all 4 cases, yeah.

Comment on lines +1473 to +1484
statements: vec![
(
DisputeStatement::Valid(ValidDisputeStatementKind::Explicit),
ValidatorIndex(0),
v0.sign(
&ExplicitDisputeStatement {
valid: true,
candidate_hash: candidate_hash.clone(),
session: start - 1,
}
.signing_payload(),
),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Strange that rustfmt didn't format this concisely. Must be due to the 1.54 rustc upgrade.

@rphmeier rphmeier merged commit 2257112 into master Sep 27, 2021
@rphmeier rphmeier deleted the rh-disputes-only-when-2-votes branch September 27, 2021 17:16
ordian added a commit that referenced this pull request Sep 29, 2021
* master:
  feat: measured oneshots (#3902)
  remove `AllSubsystems` and `AllSubsystemsGen` types (#3874)
  Companion for Substrate#9867 (#3938)
  Substrate Companion for #9552 (#3834)
  CI: run disputes tests (#3962)
  Bump parity-scale-codec from 2.3.0 to 2.3.1 (#3959)
  approval-voting: populate session cache in advance (#3954)
  Bump libc from 0.2.102 to 0.2.103 (#3950)
  fix master (#3955)
  Docker files chore (#3880)
  Bump nix from 0.19.1 to 0.20.0 (#3587)
  remove connected disconnected state, 3rd attempt (#3898)
  fix flaky chain-selection tests (#3948)
  Add benchmarking for parachain runtime initializer pallet (#3913)
  minor chore changes (#3944)
  disputes: reject single-sided disputes (#3903)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A0-please_review Pull request needs code review. B0-silent Changes should not be mentioned in any release notes C1-low PR touches the given topic and has a low impact on builders. D3-trivial 🧸 PR contains trivial changes in a runtime directory that do not require an audit.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants