Skip to content
  1. Apr 26, 2024
    • Tsvetomir Dimitrov's avatar
      Implementation of the new validator disabling strategy (#2226) · 988e30f1
      Tsvetomir Dimitrov authored
      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/bbb66316/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/bbb66316/substrate/frame/staking/src/slashing.rs#L325)
      from staking pallet.
      * In
      [`rotate_session`](https://github.com/paritytech/polkadot-sdk/blob/bdbe9829/substrate/frame/session/src/lib.rs#L623)
      the `end_session` also calls
      [`end_era`](https://github.com/paritytech/polkadot-sdk/blob/bbb66316/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/bdbe9829/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/bbb66316
      
      /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: default avatarordian <[email protected]>
      Co-authored-by: default avatarordian <[email protected]>
      Co-authored-by: default avatarMaciej <[email protected]>
      Co-authored-by: default avatarGonçalo Pestana <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarAnkan <[email protected]>
      988e30f1
  2. Aug 31, 2023
  3. May 23, 2023
  4. Apr 25, 2023
    • gupnik's avatar
      Removes ReportsByKindIndex (#13936) · 6c8acaa5
      gupnik authored
      * 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 <>
      6c8acaa5
  5. Feb 21, 2023
    • Vivek Pandya's avatar
      Remove years from copyright notes. (#13415) · bc53b9a0
      Vivek Pandya authored
      * 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
      bc53b9a0
  6. May 17, 2022
    • Bastian Köcher's avatar
      generate_storage_alias: Rewrite as proc macro attribute (#11387) · 74428fa8
      Bastian Köcher authored
      * 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
      74428fa8
  7. Apr 30, 2022
  8. Jan 19, 2022
  9. Jan 03, 2022
  10. Nov 17, 2021
  11. Sep 08, 2021
    • Alexander Popiak's avatar
      add query types to generate_storage_alias (#9659) · 8cf64743
      Alexander Popiak authored
      * 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
      8cf64743
  12. Jul 27, 2021
    • Bastian Köcher's avatar
      Move `PalletVersion` away from the crate version (#9165) · 4fe55f0b
      Bastian Köcher authored
      
      
      * 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: default avatarGuillaume Thiolliere <[email protected]>
      
      * Update frame/support/src/traits/metadata.rs
      
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      4fe55f0b
  13. Jul 21, 2021
    • Bastian Köcher's avatar
      Run cargo fmt on the whole code base (#9394) · 7b56ab15
      Bastian Köcher authored
      * 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: default avatarAndré Silva <[email protected]>
      7b56ab15
  14. May 03, 2021
    • Lohann Paterno Coutinho Ferreira's avatar
      Remove Offence delay (#8414) · ffca28ba
      Lohann Paterno Coutinho Ferreira authored
      
      
      * 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: default avatarKian Paimani <[email protected]>
      
      * Add migration logs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * 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: default avatarKian Paimani <[email protected]>
      ffca28ba