Tsvetomir Dimitrov
988e30f102
Implementation of the new validator disabling strategy ( #2226 )
...
Closes https://github.com/paritytech/polkadot-sdk/issues/1966 ,
https://github.com/paritytech/polkadot-sdk/issues/1963 and
https://github.com/paritytech/polkadot-sdk/issues/1962 .
Disabling strategy specification
[here](https://github.com/paritytech/polkadot-sdk/pull/2955 ). (Updated
13/02/2024)
Implements:
* validator disabling for a whole era instead of just a session
* no more than 1/3 of the validators in the active set are disabled
Removes:
* `DisableStrategy` enum - now each validator committing an offence is
disabled.
* New era is not forced if too many validators are disabled.
Before this PR not all offenders were disabled. A decision was made
based on [`enum
DisableStrategy`](https://github.com/paritytech/polkadot-sdk/blob/bbb6631641f9adba30c0ee6f4d11023a424dd362/substrate/primitives/staking/src/offence.rs#L54 ).
Some offenders were disabled for a whole era, some just for a session,
some were not disabled at all.
This PR changes the disabling behaviour. Now a validator committing an
offense is disabled immediately till the end of the current era.
Some implementation notes:
* `OffendingValidators` in pallet session keeps all offenders (this is
not changed). However its type is changed from `Vec<(u32, bool)>` to
`Vec<u32>`. The reason is simple - each offender is getting disabled so
the bool doesn't make sense anymore.
* When a validator is disabled it is first added to
`OffendingValidators` and then to `DisabledValidators`. This is done in
[`add_offending_validator`](https://github.com/paritytech/polkadot-sdk/blob/bbb6631641f9adba30c0ee6f4d11023a424dd362/substrate/frame/staking/src/slashing.rs#L325 )
from staking pallet.
* In
[`rotate_session`](https://github.com/paritytech/polkadot-sdk/blob/bdbe98297032e21a553bf191c530690b1d591405/substrate/frame/session/src/lib.rs#L623 )
the `end_session` also calls
[`end_era`](https://github.com/paritytech/polkadot-sdk/blob/bbb6631641f9adba30c0ee6f4d11023a424dd362/substrate/frame/staking/src/pallet/impls.rs#L490 )
when an era ends. In this case `OffendingValidators` are cleared
**(1)**.
* Then in
[`rotate_session`](https://github.com/paritytech/polkadot-sdk/blob/bdbe98297032e21a553bf191c530690b1d591405/substrate/frame/session/src/lib.rs#L623 )
`DisabledValidators` are cleared **(2)**
* And finally (still in `rotate_session`) a call to
[`start_session`](https://github.com/paritytech/polkadot-sdk/blob/bbb6631641f9adba30c0ee6f4d11023a424dd362/substrate/frame/staking/src/pallet/impls.rs#L430 )
repopulates the disabled validators **(3)**.
* The reason for this complication is that session pallet knows nothing
abut eras. To overcome this on each new session the disabled list is
repopulated (points 2 and 3). Staking pallet knows when a new era starts
so with point 1 it ensures that the offenders list is cleared.
---------
Co-authored-by: ordian <noreply@reusable.software >
Co-authored-by: ordian <write@reusable.software >
Co-authored-by: Maciej <maciej.zyszkiewicz@parity.io >
Co-authored-by: Gonçalo Pestana <g6pestana@gmail.com >
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com >
Co-authored-by: command-bot <>
Co-authored-by: Ankan <10196091+Ank4n@users.noreply.github.com >
2024-04-26 13:28:08 +00:00
Juan
bdbe982970
Restructure dispatch macro related exports ( #1162 )
...
* restructure dispatch macro related exports
* moved Dispatchable to lib.rs
* fix .gitignore final newline
* ".git/.scripts/commands/fmt/fmt.sh"
* fix rustdocs
* wip
---------
Co-authored-by: Liam Aharon <liam.aharon@hotmail.com >
Co-authored-by: command-bot <>
Co-authored-by: ordian <write@reusable.software >
2023-08-31 14:08:44 +03:00
Liam Aharon
078699c354
Migration hook fixes ( #14174 )
...
* fix offences pre_upgrade hook
* identify source of ensure! failures
* stop migration hooks breaking post migration
* add childbounties storage version
* init child bounties version to zero
* Update frame/child-bounties/src/lib.rs
Co-authored-by: Bastian Köcher <git@kchr.de >
* remove redundant preupgrade version checks
* update test
* fix nom pools v3 migration
* kick ci
* kick ci
---------
Co-authored-by: Bastian Köcher <git@kchr.de >
2023-05-23 16:01:51 +00:00
Sergej Sakac
df87bae1a9
BREAKING - Try-runtime: Use proper error types ( #13993 )
...
* Try-state: DispatchResult as return type
* try_state for the rest of the pallets
* pre_upgrade
* post_upgrade
* try_runtime_upgrade
* fixes
* bags-list fix
* fix
* update test
* warning fix
* ...
* final fixes 🤞
* warning..
* frame-support
* warnings
* Update frame/staking/src/migrations.rs
Co-authored-by: Liam Aharon <liam.aharon@hotmail.com >
* fix
* fix warning
* nit fix
* merge fixes
* small fix
* should be good now
* missed these ones
* introduce TryRuntimeError and TryRuntimeResult
* fixes
* fix
* removed TryRuntimeResult & made some fixes
* fix testsg
* tests passing
* unnecessary imports
* Update frame/assets/src/migration.rs
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com >
---------
Co-authored-by: Liam Aharon <liam.aharon@hotmail.com >
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com >
2023-05-23 06:56:10 +00:00
gupnik
6c8acaa5e2
Removes ReportsByKindIndex ( #13936 )
...
* Removes ReportsByKind
* Minor build fixes
* adds migration
* Addresses review comment
* Uses clear but weight check fails
* Uses unique
* Updates test to commit the change before migration
* Uses reads_writes
* ".git/.scripts/commands/fmt/fmt.sh"
* Fixes build
* Addresses review comments
* ".git/.scripts/commands/fmt/fmt.sh"
* fixes typo
---------
Co-authored-by: command-bot <>
2023-04-25 15:20:58 +00:00
Vivek Pandya
bc53b9a03a
Remove years from copyright notes. ( #13415 )
...
* Change copyright year to 2023 from 2022
* Fix incorrect update of copyright year
* Remove years from copy right header
* Fix remaining files
* Fix typo in a header and remove update-copyright.sh
2023-02-21 18:46:41 +00:00
Bastian Köcher
74428fa8ac
generate_storage_alias: Rewrite as proc macro attribute ( #11387 )
...
* generate_storage_alias: Rewrite as proc macro attribute
This rewrites the `generate_storage_alias!` declarative macro as proc-macro attribute. While doing
this the name is changed to `storage_alias`. The prefix can now also be the name of a pallet. This
makes storage aliases work in migrations for all kind of chains and not just for the ones that use
predefined prefixes.
* Fix compilation and FMT
* Moare fixes
* 🤦
* ......
* Rework the syntax and support instancing
* FMT
* Prefix variants with `Storage`
* Make it compile
* Fix where clause on rust stable
2022-05-17 18:45:56 -04:00
Falco Hirschenberger
b581604aa7
Apply some clippy lints ( #11154 )
...
* Apply some clippy hints
* Revert clippy ci changes
* Update client/cli/src/commands/generate.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Update client/cli/src/commands/inspect_key.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Update client/db/src/bench.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Update client/db/src/bench.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Update client/service/src/client/block_rules.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Update client/service/src/client/block_rules.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Update client/network/src/transactions.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Update client/network/src/protocol.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Revert due to missing `or_default` function.
* Fix compilation and simplify code
* Undo change that corrupts benchmark.
* fix clippy
* Update client/service/test/src/lib.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Update client/state-db/src/noncanonical.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Update client/state-db/src/noncanonical.rs
remove leftovers!
* Update client/tracing/src/logging/directives.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Update utils/fork-tree/src/lib.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* added needed ref
* Update frame/referenda/src/benchmarking.rs
* Simplify byte-vec creation
* let's just not overlap the ranges
* Correction
* cargo fmt
* Update utils/frame/benchmarking-cli/src/shared/stats.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Update utils/frame/benchmarking-cli/src/pallet/command.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
* Update utils/frame/benchmarking-cli/src/pallet/command.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com >
Co-authored-by: Giles Cope <gilescope@gmail.com >
2022-04-30 21:28:27 +00:00
Kian Paimani
1344e43d2d
Remove all stale on_runtime_upgrade hooks in the runtime ( #10650 )
...
* Remove all stale on_runtime_upgrade hooks in the runtime
* add docs
* cleanup
* fix warn
* fix more warnings
* fix offence test
* overwrite the damn UItest
2022-01-19 20:58:47 +01:00
Bastian Köcher
f3662b4bba
Happy new year 2022 ( #10573 )
2022-01-03 09:22:14 +01:00
wigy
3f0f1aa6f7
Offence implementations can disable offenders independently from slashing ( #10201 )
...
* Offence implementations can disable offenders independently from slashing
* Fix build on CI
* Run cargo fmt
* Fixes based on review comments
* Make parameter naming consistent
* Fix migration and some English
* Fix migration - again
* cargo fmt
* Cover 2 new cases with a test
2021-11-17 14:11:02 +00:00
Alexander Popiak
8cf6474388
add query types to generate_storage_alias ( #9659 )
...
* add query types to generate_storage_alias
* adjust comment
* use ValueQuery explicitly for generate_storage_alias with generic value type
* bump impl_version
* adjust line width and add import
* more compilation and formatting fixes
* formatting
2021-09-08 08:48:49 +00:00
Bastian Köcher
4fe55f0bcb
Move PalletVersion away from the crate version ( #9165 )
...
* Move `PalletVersion` away from the crate version
Before this pr, `PalletVersion` was referring to the crate version that
hosted the pallet. This pr introduces a custom `package.metadata.frame`
section in the `Cargo.toml` that can contain a `pallet-version` key
value pair. While the value is expected to be a valid u16. If this
key/value pair isn't given, the version is set to 1.
It also changes the `PalletVersion` declaration. We now only have one
`u16` that represents the version. Not a major/minor/patch version. As
the old `PalletVersion` was starting with the `u16` major, decoding the
old values will work.
* Overhaul the entire implementation
- Drop PalletVersion
- Introduce StorageVersion
- StorageVersion needs to be set in the crate and set for the macros
- Added migration
* Fix migrations
* Review feedback
* Remove unneeded dep
* remove pub consts
* Brings back logging and implements `GetStorageVersion`
* Return weight from migration
* Fmt and remove unused import
* Update frame/support/src/dispatch.rs
Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com >
* Update frame/support/src/traits/metadata.rs
Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com >
Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com >
2021-07-27 21:21:27 +00:00
Bastian Köcher
7b56ab15b4
Run cargo fmt on the whole code base ( #9394 )
...
* Run cargo fmt on the whole code base
* Second run
* Add CI check
* Fix compilation
* More unnecessary braces
* Handle weights
* Use --all
* Use correct attributes...
* Fix UI tests
* AHHHHHHHHH
* 🤦
* Docs
* Fix compilation
* 🤷
* Please stop
* 🤦 x 2
* More
* make rustfmt.toml consistent with polkadot
Co-authored-by: André Silva <andrerfosilva@gmail.com >
2021-07-21 14:32:32 +00:00
Lohann Paterno Coutinho Ferreira
ffca28ba59
Remove Offence delay ( #8414 )
...
* Removed can_report api from OnOffenceHandler
* Removed DeferredOffences and create a storage migration
* Removed missing comments
* Mock set_deferred_offences and deferred_offences methods
* OnOffenceHandler::on_offence always succeed
* Fix benchmark tests
* Fix runtime-benchmark cfg methods
* Removed 'applied' attribute from Offence event
* refactor deprecated deferred offences getter
* Validate if offences are submited after on_runtime_upgrade
* update changelog
* Remove empty lines
* Fix remove_deferred_storage weights
* Remove Offence::on_runtime_upgrade benchmark
* Revert CHANGELOG.md update
* Deprecate DeferredOffenceOf type
* Update copyright
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com >
* Add migration logs
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com >
* Fix migration log
* Remove unused import
* Add migration tests
* rustfmt
* use generate_storage_alias! macro
* Refactor should_resubmit_deferred_offences test
* Replace spaces by tabs
* Refactor should_resubmit_deferred_offences test
* Removed WeightSoftLimit
* Removed WeightSoftLimit from tests and mocks
* Remove unused imports
* Apply suggestions from code review
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com >
2021-05-03 07:53:09 +00:00