Skip to content
  1. Nov 01, 2023
    • Ankan's avatar
      [NPoS] Paging reward payouts in order to scale rewardable nominators (#1189) · 00b85c51
      Ankan authored
      
      
      helps https://github.com/paritytech/polkadot-sdk/issues/439.
      closes https://github.com/paritytech/polkadot-sdk/issues/473.
      
      PR link in the older substrate repository:
      https://github.com/paritytech/substrate/pull/13498.
      
      # Context
      Rewards payout is processed today in a single block and limited to
      `MaxNominatorRewardedPerValidator`. This number is currently 512 on both
      Kusama and Polkadot.
      
      This PR tries to scale the nominators payout to an unlimited count in a
      multi-block fashion. Exposures are stored in pages, with each page
      capped to a certain number (`MaxExposurePageSize`). Starting out, this
      number would be the same as `MaxNominatorRewardedPerValidator`, but
      eventually, this number can be lowered through new runtime upgrades to
      limit the rewardeable nominators per dispatched call instruction.
      
      The changes in the PR are backward compatible.
      
      ## How payouts would work like after this change
      Staking exposes two calls, 1) the existing `payout_stakers` and 2)
      `payout_stakers_by_page`.
      
      ### payout_stakers
      This remains backward compatible with no signature change. If for a
      given era a validator has multiple pages, they can call `payout_stakers`
      multiple times. The pages are executed in an ascending sequence and the
      runtime takes care of preventing double claims.
      
      ### payout_stakers_by_page
      Very similar to `payout_stakers` but also accepts an extra param
      `page_index`. An account can choose to payout rewards only for an
      explicitly passed `page_index`.
      
      **Lets look at an example scenario**
      Given an active validator on Kusama had 1100 nominators,
      `MaxExposurePageSize` set to 512 for Era e. In order to pay out rewards
      to all nominators, the caller would need to call `payout_stakers` 3
      times.
      
      - `payout_stakers(origin, stash, e)` => will pay the first 512
      nominators.
      - `payout_stakers(origin, stash, e)` => will pay the second set of 512
      nominators.
      - `payout_stakers(origin, stash, e)` => will pay the last set of 76
      nominators.
      ...
      - `payout_stakers(origin, stash, e)` => calling it the 4th time would
      return an error `InvalidPage`.
      
      The above calls can also be replaced by `payout_stakers_by_page` and
      passing a `page_index` explicitly.
      
      ## Commission note
      Validator commission is paid out in chunks across all the pages where
      each commission chunk is proportional to the total stake of the current
      page. This implies higher the total stake of a page, higher will be the
      commission. If all the pages of a validator's single era are paid out,
      the sum of commission paid to the validator across all pages should be
      equal to what the commission would have been if we had a non-paged
      exposure.
      
      ### Migration Note
      Strictly speaking, we did not need to bump our storage version since
      there is no migration of storage in this PR. But it is still useful to
      mark a storage upgrade for the following reasons:
      
      - New storage items are introduced in this PR while some older storage
      items are deprecated.
      - For the next `HistoryDepth` eras, the exposure would be incrementally
      migrated to its corresponding paged storage item.
      - Runtimes using staking pallet would strictly need to wait at least
      `HistoryDepth` eras with current upgraded version (14) for the migration
      to complete. At some era `E` such that `E >
      era_at_which_V14_gets_into_effect + HistoryDepth`, we will upgrade to
      version X which will remove the deprecated storage items.
      In other words, it is a strict requirement that E<sub>x</sub> -
      E<sub>14</sub> > `HistoryDepth`, where
      E<sub>x</sub> = Era at which deprecated storages are removed from
      runtime,
      E<sub>14</sub> = Era at which runtime is upgraded to version 14.
      - For Polkadot and Kusama, there is a [tracker
      ticket](https://github.com/paritytech/polkadot-sdk/issues/433) to clean
      up the deprecated storage items.
      
      ### Storage Changes
      
      #### Added
      - ErasStakersOverview
      - ClaimedRewards
      - ErasStakersPaged
      
      #### Deprecated
      The following can be cleaned up after 84 eras which is tracked
      [here](https://github.com/paritytech/polkadot-sdk/issues/433).
      
      - ErasStakers.
      - ErasStakersClipped.
      - StakingLedger.claimed_rewards, renamed to
      StakingLedger.legacy_claimed_rewards.
      
      ### Config Changes
      - Renamed MaxNominatorRewardedPerValidator to MaxExposurePageSize.
      
      ### TODO
      - [x] Tracker ticket for cleaning up the old code after 84 eras.
      - [x] Add companion.
      - [x] Redo benchmarks before merge.
      - [x] Add Changelog for pallet_staking.
      - [x] Pallet should be configurable to enable/disable paged rewards.
      - [x] Commission payouts are distributed across pages.
      - [x] Review documentation thoroughly.
      - [x] Rename `MaxNominatorRewardedPerValidator` ->
      `MaxExposurePageSize`.
      - [x] NMap for `ErasStakersPaged`.
      - [x] Deprecate ErasStakers.
      - [x] Integrity tests.
      
      ### Followup issues
      [Runtime api for deprecated ErasStakers storage
      item](https://github.com/paritytech/polkadot-sdk/issues/426)
      
      ---------
      
      Co-authored-by: default avatarJavier Viola <[email protected]>
      Co-authored-by: default avatarRoss Bulat <[email protected]>
      Co-authored-by: command-bot <>
      00b85c51
  2. Oct 24, 2023
    • Kian Paimani's avatar
      Ensure correct variant count in `Runtime[Hold/Freeze]Reason` (#1900) · 35eb133b
      Kian Paimani authored
      
      
      closes https://github.com/paritytech/polkadot-sdk/issues/1882
      
      ## Breaking Changes
      
      This PR introduces a new item to `pallet_balances::Config`:
      
      ```diff
      trait Config {
      ++    type RuntimeFreezeReasons;
      }
      ```
      
      This value is only used to check it against `type MaxFreeze`. A similar
      check has been added for `MaxHolds` against `RuntimeHoldReasons`, which
      is already given to `pallet_balances`.
      
      In all contexts, you should pass the real `RuntimeFreezeReasons`
      generated by `construct_runtime` to `type RuntimeFreezeReasons`. Passing
      `()` would also work, but it would imply that the runtime uses no
      freezes at all.
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      35eb133b
  3. Oct 15, 2023
    • Gonçalo Pestana's avatar
      Refactor staking ledger (#1484) · 8ee4042c
      Gonçalo Pestana authored
      This PR refactors the staking ledger logic to encapsulate all reads and
      mutations of `Ledger`, `Bonded`, `Payee` and stake locks within the
      `StakingLedger` struct implementation.
      
      With these changes, all the reads and mutations to the `Ledger`, `Payee`
      and `Bonded` storage map should be done through the methods exposed by
      StakingLedger to ensure the data and lock consistency of the operations.
      The new introduced methods that mutate and read Ledger are:
      
      - `ledger.update()`: inserts/updates a staking ledger in storage;
      updates staking locks accordingly (and ledger.bond(), which is synthatic
      sugar for ledger.update())
      - `ledger.kill()`: removes all Bonded and StakingLedger related data for
      a given ledger; updates staking locks accordingly;
      `StakingLedger::get(account)`: queries both the `Bonded` and `Ledger`
      storages and returns a `Option<StakingLedger>`. The pallet impl exposes
      fn ledger(account) as synthatic sugar for `StakingLedger::get(account)`.
      
      Retrieving a ledger with `StakingLedger::get()` can be done by providing
      either a stash or controller account. The input must be wrapped in a
      `StakingAccount` variant (Stash or Controller) which is treated
      accordingly. This simplifies the caller API but will eventually be
      deprecated once we completely get rid of the controller account in
      staking. However, this refactor will help with the work necessary when
      completely removing the controller.
      
      Other goals:
      
      - No logical changes have been introduced in this PR;
      - No breaking changes or updates in wallets required;
      - No new storage items or need to perform storage migrations;
      - Centralise the changes to bonds and ledger updates to simplify the
      OnStakingUpdate updates to the target list (related to
      https://github.com/paritytech/polkadot-sdk/issues/443)
      
      Note: it would be great to prevent or at least raise a warning if
      `Ledger<T>`, `Payee<T>` and `Bonded<T>` storage types are accessed
      outside the `StakingLedger` implementation. This PR should not get
      blocked by that feature, but there's a tracking issue here
      https://github.com/paritytech/polkadot-sdk/issues/149
      
      Related and step towards
      https://github.com/paritytech/polkadot-sdk/issues/443
      8ee4042c
  4. Oct 01, 2023
    • Piet's avatar
      Tvl pool staking (#1322) · e8baac78
      Piet authored
      What does this PR do?
      - Introduced the TotalValueLocked storage for nomination-pools. 
      - introduced a slashing api in mock.rs 
      - additional test for tracking a slashing event towards a pool without
      sub-pools
      - migration for the nomination-pools (V6 to V7) with
      `VersionedMigration`
      
      Why are these changes needed?
      this is the continuation of the work by @Kianenigma
      
       in this
      [PR](https://github.com/paritytech/substrate/pull/13319)
      
      How were these changes implemented and what do they affect?
      - It's an extra StorageValue that's modified whenever funds flow in or
      out of staking for any of the `bonded_account` of `BondedPools`
      - The `PoolSlashed`event is now emitted even when no `SubPools` are
      found
      
      Closes https://github.com/paritytech/polkadot-sdk/issues/155
      KSM: HHEEgVzcqL3kCXgsxSfJMbsTy8dxoTctuXtpY94n4s8F4pS
      
      ---------
      
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarAnkan <[email protected]>
      Co-authored-by: default avatarAnkan <[email protected]>
      Co-authored-by: command-bot <>
      e8baac78
  5. Aug 10, 2023
    • Gonçalo Pestana's avatar
      [NPoS] Implements dynamic number of nominators (#12970) · 93754780
      Gonçalo Pestana authored
      
      
      * Implements dynamic nominations per nominator
      
      * Adds SnapshotBounds and ElectionSizeTracker
      
      * Changes the ElectionDataProvider interface to receive ElectionBounds as input
      
      * Implements get_npos_voters with ElectionBounds
      
      * Implements get_npos_targets with ElectionBounds
      
      * Adds comments
      
      * tests
      
      * Truncates nomninations that exceed nominations quota; Old tests passing
      
      * Uses DataProviderBounds and ElectionBounds (to continue)
      
      * Finishes conversions - tests passing
      
      * Refactor staking in babe mocks
      
      * Replaces MaxElectableTargets and MaxElectingVoters with ElectionBounds; Adds more tests
      
      * Fixes nits; node compiling
      
      * bechmarks
      
      * removes nomination_quota extrinsic to request the nomination quota
      
      * Lazy quota check, ie. at nominate time only
      
      * remove non-working test (for now)
      
      * tests lazy nominations quota when quota is lower than current number of nominated targets
      
      * Adds runtime API and custom RPC call for clients to query the nominations quota for a given balance
      
      * removes old rpc
      
      * Cosmetic touches
      
      * All mocks working
      
      * Fixes benchmarking mocks
      
      * nits
      
      * more tests
      
      * renames trait methods
      
      * nit
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Fix V2 PoV benchmarking (#13485)
      
      * Bump default 'additional_trie_layers' to two
      
      The default here only works for extremely small runtimes, which have
      no more than 16 storage prefices. This is changed to a "sane" default
      of 2, which is save for runtimes with up to 4096 storage prefices (eg StorageValue).
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Update tests and test weights
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Fix PoV weights
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_balances
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_message_queue
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_glutton
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_glutton
      
      * Fix sanity check
      
      >0 would also do as a check, but let's try this.
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: command-bot <>
      
      * Move BEEFY code to consensus (#13484)
      
      * Move beefy primitives to consensus dir
      * Move beefy gadget to client consensus folder
      * Rename beefy crates
      
      * chore: move genesis block builder to chain-spec crate. (#13427)
      
      * chore: move genesis block builder to block builder crate.
      
      * add missing file
      
      * chore: move genesis block builder to sc-chain-spec
      
      * Update client/chain-spec/src/genesis.rs
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Update test-utils/runtime/src/genesismap.rs
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Update test-utils/runtime/client/src/lib.rs
      
      * fix warnings
      
      * fix warnings
      
      ---------
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Speed up storage iteration from within the runtime (#13479)
      
      * Speed up storage iteration from within the runtime
      
      * Move the cached iterator into an `Option`
      
      * Use `RefCell` in no_std
      
      * Simplify the code slightly
      
      * Use `Option::replace`
      
      * Update doc comment for `next_storage_key_slow`
      
      * Make unbounded channels size warning exact (part 1) (#13490)
      
      * Replace `futures-channel` with `async-channel` in `out_events`
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarKoute <[email protected]>
      
      * Also print the backtrace of `send()` call
      
      * Switch from `backtrace` crate to `std::backtrace`
      
      * Remove outdated `backtrace` dependency
      
      * Remove `backtrace` from `Cargo.lock`
      
      ---------
      
      Co-authored-by: default avatarKoute <[email protected]>
      
      * Removal of Prometheus alerting rules deployment in cloud-infra (#13499)
      
      * sp-consensus: remove unused error variants (#13495)
      
      * Expose `ChargedAmount` (#13488)
      
      * Expose `ChargedAmount`
      
      * Fix imports
      
      * sc-consensus-beefy: fix metrics: use correct names (#13494)
      
      
      Signed-off-by: default avataracatangiu <[email protected]>
      
      * clippy fix
      
      * removes NominationsQuotaExceeded event
      
      * Update frame/staking/src/lib.rs
      
      Co-authored-by: default avatarRoss Bulat <[email protected]>
      
      * adds back the npos_max_iter
      
      * remove duplicate imports added after merge
      
      * fmt
      
      * Adds comment in public struct; Refactors CountBound and SizeCount to struct
      
      * addresses various pr comments
      
      * PR comment reviews
      
      * Fixes on-chain election bounds and related code
      
      * EPM checks the size of the voter list returned by the data provider
      
      * cosmetic changes
      
      * updates e2e tests mock
      
      * Adds more tests for size tracker and refactors code
      
      * Adds back only_iterates_max_2_times_max_allowed_len test
      
      * Refactor
      
      * removes unecessary dependency
      
      * empty commit -- restart all stuck CI jobs
      
      * restarts ci jobs
      
      * Renames ElectionBounds -> Bounds in benchmarking mocks et al
      
      * updates mocks
      
      * Update frame/election-provider-support/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Update frame/staking/src/pallet/impls.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Update frame/election-provider-support/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Update frame/staking/src/tests.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * more checks in api_nominations_quota in tests
      
      * Improves docs
      
      * fixes e2e tests
      
      * Uses size_hint rather than mem::size_of in size tracker; Refactor size tracker to own module
      
      * nits from reviews
      
      * Refactors bounds to own module; improves docs
      
      * More tests and docs
      
      * fixes docs
      
      * Fixes benchmarks
      
      * Fixes rust docs
      
      * fixes bags-list remote-ext-tests
      
      * Simplify bound checks in create_snapshot_external
      
      * Adds target size check in get_npos_targets
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * restart ci
      
      * rust doc fixes and cosmetic nits
      
      * rollback upgrade on parity-scale-codec version (unecessary)
      
      * reset cargo lock, no need to update it
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      Signed-off-by: default avataracatangiu <[email protected]>
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarDavide Galassi <[email protected]>
      Co-authored-by: default avataryjh <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      Co-authored-by: default avatarKoute <[email protected]>
      Co-authored-by: default avatarDmitry Markin <[email protected]>
      Co-authored-by: default avatarAnthony Lazam <[email protected]>
      Co-authored-by: default avatarAndré Silva <[email protected]>
      Co-authored-by: default avatarPiotr Mikołajczyk <[email protected]>
      Co-authored-by: default avatarAdrian Catangiu <[email protected]>
      Co-authored-by: default avatarRoss Bulat <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      93754780
  6. Jul 14, 2023
    • juangirini's avatar
      Replace system config `Index` for `Nonce` (#14290) · 6a29a70a
      juangirini authored
      * replace Index by Nonce
      
      * replace Index by Nonce
      
      * replace Index by Nonce
      
      * replace Index by Nonce
      
      * replace Index by Nonce
      
      * wip
      
      * remove index in lieu of nonce
      
      * wip
      
      * remove accountnonce in lieu of nonce
      
      * add minor improvement
      
      * rebase and merge conflicts
      6a29a70a
  7. Jul 13, 2023
    • gupnik's avatar
      Moves `Block` to `frame_system` instead of `construct_runtime` and removes... · 5e7b27e9
      gupnik authored
      
      Moves `Block` to `frame_system` instead of `construct_runtime` and removes `Header` and `BlockNumber` (#14437)
      
      * Initial setup
      
      * Adds node block
      
      * Uses UncheckedExtrinsic and removes Where section
      
      * Updates frame_system to use Block
      
      * Adds deprecation warning
      
      * Fixes pallet-timestamp
      
      * Removes Header and BlockNumber
      
      * Addresses review comments
      
      * Addresses review comments
      
      * Adds comment about compiler bug
      
      * Removes where clause
      
      * Refactors code
      
      * Fixes errors in cargo check
      
      * Fixes errors in cargo check
      
      * Fixes warnings in cargo check
      
      * Formatting
      
      * Fixes construct_runtime tests
      
      * Uses import instead of full path for BlockNumber
      
      * Uses import instead of full path for Header
      
      * Formatting
      
      * Fixes construct_runtime tests
      
      * Fixes imports in benchmarks
      
      * Formatting
      
      * Fixes construct_runtime tests
      
      * Formatting
      
      * Minor updates
      
      * Fixes construct_runtime ui tests
      
      * Fixes construct_runtime ui tests with 1.70
      
      * Fixes docs
      
      * Fixes docs
      
      * Adds u128 mock block type
      
      * Fixes split example
      
      * fixes for cumulus
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Updates new tests
      
      * Fixes fully-qualified path in few places
      
      * Formatting
      
      * Update frame/examples/default-config/src/lib.rs
      
      Co-authored-by: default avatarJuan <[email protected]>
      
      * Update frame/support/procedural/src/construct_runtime/mod.rs
      
      Co-authored-by: default avatarJuan <[email protected]>
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Addresses some review comments
      
      * Fixes build
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Update frame/democracy/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Update frame/democracy/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Update frame/support/procedural/src/construct_runtime/mod.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Update frame/support/procedural/src/construct_runtime/mod.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Addresses review comments
      
      * Updates trait bounds
      
      * Minor fix
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Removes unnecessary bound
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Updates test
      
      * Fixes build
      
      * Adds a bound for header
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Removes where block
      
      * Minor fix
      
      * Minor fix
      
      * Fixes tests
      
      * ".git/.scripts/commands/update-ui/update-ui.sh" 1.70
      
      * Updates test
      
      * Update primitives/runtime/src/traits.rs
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Update primitives/runtime/src/traits.rs
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Updates doc
      
      * Updates doc
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarJuan <[email protected]>
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      5e7b27e9
  8. Jul 12, 2023
    • Michal Kucharczyk's avatar
      `GenesisBuild<T,I>` deprecated. `BuildGenesisConfig` added. (#14306) · 87d41d0a
      Michal Kucharczyk authored
      
      
      * frame::support: GenesisConfig types for Runtime enabled
      
      * frame::support: macro generating GenesisBuild::build for RuntimeGenesisConfig
      
      * frame: ambiguity BuildStorage vs GenesisBuild fixed
      
      * fix
      
      * RuntimeGenesisBuild added
      
      * Revert "frame: ambiguity BuildStorage vs GenesisBuild fixed"
      
      This reverts commit 950f3d019d0e21c55a739c44cc19cdabd3ff0293.
      
      * Revert "fix"
      
      This reverts commit a2f76dd24e9a16cf9230d45825ed28787211118b.
      
      * Revert "RuntimeGenesisBuild added"
      
      This reverts commit 3c131b618138ced29c01ab8d15d8c6410c9e128b.
      
      * Revert "Revert "frame: ambiguity BuildStorage vs GenesisBuild fixed""
      
      This reverts commit 2b1ecd467231eddec69f8d328039ba48a380da3d.
      
      * Revert "Revert "fix""
      
      This reverts commit fd7fa629adf579d83e30e6ae9fd162637fc45e30.
      
      * Code review suggestions
      
      * frame: BuildGenesisConfig added, BuildGenesis deprecated
      
      * frame: some pallets updated with BuildGenesisConfig
      
      * constuct_runtime: support for BuildGenesisConfig
      
      * frame::support: genesis_build macro supports BuildGenesisConfig
      
      * frame: BuildGenesisConfig added, BuildGenesis deprecated
      
      * Cargo.lock update
      
      * test-runtime: fixes
      
      * Revert "fix"
      
      This reverts commit a2f76dd24e9a16cf9230d45825ed28787211118b.
      
      * Revert "frame: ambiguity BuildStorage vs GenesisBuild fixed"
      
      This reverts commit 950f3d019d0e21c55a739c44cc19cdabd3ff0293.
      
      * self review
      
      * doc fixed
      
      * ui tests fixed
      
      * fmt
      
      * tests fixed
      
      * genesis_build macrto fixed for non-generic GenesisConfig
      
      * BuildGenesisConfig constraints added
      
      * warning fixed
      
      * some duplication removed
      
      * fmt
      
      * fix
      
      * doc tests fix
      
      * doc fix
      
      * cleanup: remove BuildModuleGenesisStorage
      
      * self review comments
      
      * fix
      
      * Update frame/treasury/src/tests.rs
      
      Co-authored-by: default avatarSebastian Kunert <[email protected]>
      
      * Update frame/support/src/traits/hooks.rs
      
      Co-authored-by: default avatarSebastian Kunert <[email protected]>
      
      * doc fix: GenesisBuild exposed
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * frame: more serde(skip) + cleanup
      
      * Update frame/support/src/traits/hooks.rs
      
      Co-authored-by: default avatarDavide Galassi <[email protected]>
      
      * frame: phantom fields moved to the end of structs
      
      * chain-spec: Default::default cleanup
      
      * test-runtime: phantom at the end
      
      * merge master fixes
      
      * fix
      
      * fix
      
      * fix
      
      * fix
      
      * fix (facepalm)
      
      * Update frame/support/procedural/src/pallet/expand/genesis_build.rs
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * fmt
      
      * fix
      
      * fix
      
      ---------
      
      Co-authored-by: parity-processbot <>
      Co-authored-by: default avatarSebastian Kunert <[email protected]>
      Co-authored-by: default avatarDavide Galassi <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      87d41d0a
  9. Jul 09, 2023
  10. May 24, 2023
    • Bastian Köcher's avatar
      HoldReason: Improve usage (#13869) · 05da6d8e
      Bastian Köcher authored
      
      
      * HoldReason: Improve usage
      
      `HoldReason` was switched recently to use the `composite_enum` attribute that will merge the enums
      from all pallets in the runtime to `RuntimeHoldReason`. `pallet-nis` was still requiring that the
      variant was passed as constant to call `hold`. The proper implementation is to use the `HoldReason`
      from inside the pallet directly when calling `hold`. This is done by adding a `RuntimeHoldReason` as
      type to the `Config` trait and requiring that `Currency` is using the same reason. Besides that the
      pr changes the name `HoldIdentifier` in `pallet_balances::Config` to `RuntimeHoldReason`.
      
      * Update frame/nis/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Review comment
      
      * Fixes
      
      ---------
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      05da6d8e
  11. May 11, 2023
    • Ross Bulat's avatar
      Staking::{bond, set_controller} to set controllers to stash only. (#14039) · 56940bc8
      Ross Bulat authored
      
      
      * update set_controller
      
      * clone
      
      * bond uses `stash`
      
      * remove controller from bond(), chill_other test works
      
      * remove ctlr from testing_utils &  dead ctlr -> dead payee
      
      * mvs controllers to stashes for 3 tests
      
      * migrate mock bond fns & fix 1 test
      
      * mvs controllers to stashes for 7 tests
      
      * mvs controllers to stashes for 9 tests
      
      * remove double_controlling_should_fail
      
      * remove double_staking_should_fail
      
      * mvs controllers to stashes for 10 tests
      
      * mvs controllers to stashes for 2 tests
      
      * remove payout_creates_controller
      
      * mvs controllers to stashes for 27 tests
      
      * remove println!
      
      * fix rewards_should_work
      
      * fix test_payout_stakers
      
      * fix bond benchmark
      
      * clone
      
      * rm unused import
      
      * rm unused var
      
      * rm controller from create_offender
      
      * fix GenesisConfig stakers
      
      * fix controllers in consensus pallets
      
      * fix unqiue controller in chain_spec
      
      * fmt
      
      * fix create_offender
      
      * fix set_controller benchmark
      
      * add TODO
      
      * create_unique_stash_controller
      
      * staking benchmarks working
      
      * fmt
      
      * fix args
      
      * rm println
      
      * import
      
      * import
      
      * fix fast unstake tests
      
      * fix staking-tests-e2e
      
      * fix root-offenses
      
      * fmt
      
      * differentiate controller to stash
      
      * bring back change_controller_works w. unique ctrl
      
      * bring back double_staking_should_fail
      
      * double_controlling_attempt_should_fail
      
      * bring back payout_creates_controller
      
      * add commnet to controller balances
      
      * + set_controller call description
      
      * fmt
      
      * rm clones
      
      * fmt
      
      * clippy fixes
      
      * fmt
      
      * update README
      
      * small fixes
      
      * use controller_to_be_deprecated
      
      * .comment
      
      * comment
      
      * bump zombienet version
      
      * ci
      
      ---------
      
      Co-authored-by: parity-processbot <>
      Co-authored-by: default avatarJavier Viola <[email protected]>
      56940bc8
  12. Mar 18, 2023
    • Gavin Wood's avatar
      Deprecate `Currency`; introduce holds and freezing into `fungible` traits (#12951) · 5d81f23f
      Gavin Wood authored
      
      
      * First reworking of fungibles API
      
      * New API and docs
      
      * More fungible::* API improvements
      
      * New ref-counting logic for old API
      
      * Missing files
      
      * Fixes
      
      * Use the new transfer logic
      
      * Use fungibles for the dispatchables
      
      * Use shelve/restore names
      
      * Locking works with total balance.
      
      * repotting and removal
      
      * Separate Holds from Reserves
      
      * Introduce freezes
      
      * Missing files
      
      * Tests for freezing
      
      * Fix hold+freeze combo
      
      * More tests
      
      * Fee-free dispatchable for upgrading accounts
      
      * Benchmarks and a few fixes
      
      * Another test
      
      * Docs and refactor to avoid blanket impls
      
      * Repot
      
      * Fit out ItemOf fully
      
      * Add events to Balanced traits
      
      * Introduced events into Hold traits
      
      * Fix Assets pallet tests
      
      * Assets benchmarks pass
      
      * Missing files and fixes
      
      * Fixes
      
      * Fixes
      
      * Benchmarks fixes
      
      * Fix balance benchmarks
      
      * Formatting
      
      * Expose fungible sub modules
      
      * Move NIS to fungible API
      
      * Fix broken impl and add test
      
      * Fix tests
      
      * API for `transfer_and_hold`
      
      * Use composite APIs
      
      * Formatting
      
      * Upgraded event
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Repot tests and some fixed
      
      * Fix some bits
      
      * Fix dust tests
      
      * Rename `set_balance`
      
      - `Balances::set_balance` becomes `Balances::force_set_balance`
      - `Unbalanced::set_balance` becomes `Unbalances::write_balance`
      
      * becomes
      
      * Move dust handling to fungibles API
      
      * Formatting
      
      * Fixes and more refactoring
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Use reducible_balance for better correctness on fees
      
      * Reducing hold to zero should remove entry.
      
      * Add test
      
      * Docs
      
      * Update frame/support/src/traits/tokens/fungibles/hold.rs
      
      Co-authored-by: default avatarMuharem Ismailov <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungibles/regular.rs
      
      Co-authored-by: default avatarMuharem Ismailov <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungible/hold.rs
      
      Co-authored-by: default avatarMuharem Ismailov <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungible/regular.rs
      
      Co-authored-by: default avatarMuharem Ismailov <[email protected]>
      
      * Docs
      
      * Docs
      
      * Docs
      
      * Fix NIS benchmarks
      
      * Doc comment
      
      * Remove post_mutation
      
      * Fix some tests
      
      * Fix some grumbles
      
      * Enumify bool args to fungible(s) functions
      
      * Fix up assets and balances
      
      * Formatting
      
      * Fix contracts
      
      * Fix tests & benchmarks build
      
      * Typify minted boolean arg
      
      * Typify on_hold boolean arg; renames
      
      * Fix numerous tests
      
      * Fix dependency issue
      
      * Privatize dangerous API mutate_account
      
      * Fix contracts (@alext - please check this commit)
      
      * Remove println
      
      * Fix tests for contracts
      
      * Fix broken rename
      
      * Fix broken rename
      
      * Fix broken rename
      
      * Docs
      
      * Update frame/support/src/traits/tokens/fungible/hold.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * remove from_ref_time
      
      * Update frame/executive/src/lib.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/executive/src/lib.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Reenable test
      
      * Update frame/support/src/traits/tokens/fungibles/hold.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungible/hold.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungible/hold.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungible/hold.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/support/src/traits/tokens/currency.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/lottery/src/tests.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungible/mod.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungible/regular.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungibles/freeze.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungible/regular.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungibles/hold.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungibles/hold.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Update frame/support/src/traits/tokens/fungibles/hold.rs
      
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      
      * Rename UnwantedRemoval to UnwantedAccountRemoval
      
      * Docs
      
      * Formatting
      
      * Update frame/balances/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Update primitives/runtime/src/lib.rs
      
      Co-authored-by: default avatarKeith Yeung <[email protected]>
      
      * handle_raw_dust oes nothing
      
      * Formatting
      
      * Fixes
      
      * Grumble
      
      * Fixes
      
      * Add test
      
      * Add test
      
      * Tests for reducible_balance
      
      * Fixes
      
      * Fix Salary
      
      * Fixes
      
      * Disable broken test
      
      * Disable nicely
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Rename some events
      
      * Fix nomination pools breakage
      
      * Add compatibility stub for transfer tx
      
      * Reinstate a safely compatible version of Balances set_balance
      
      * Fixes
      
      * Grumble
      
      * Update frame/nis/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_balances
      
      * disable flakey tests
      
      * Update frame/balances/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Grumbles
      
      * Grumble
      
      ---------
      
      Co-authored-by: default avatarMuharem Ismailov <[email protected]>
      Co-authored-by: default avatarAlexander Theißen <[email protected]>
      Co-authored-by: default avatarAnthony Alaribe <[email protected]>
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarKeith Yeung <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: command-bot <>
      5d81f23f
  13. 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
  14. Jan 29, 2023
  15. Jan 07, 2023
  16. Dec 26, 2022
  17. Dec 08, 2022
    • Keith Yeung's avatar
      Introduce sensible weight constants (#12868) · 51db8c77
      Keith Yeung authored
      * Introduce sensible weight constants
      
      * cargo fmt
      
      * Remove unused import
      
      * Add missing import
      
      * ".git/.scripts/bench-bot.sh" pallet dev pallet_lottery
      
      Co-authored-by: command-bot <>
      51db8c77
  18. Nov 09, 2022
    • Ankan's avatar
      Bound Election and Staking by MaxActiveValidators (#12436) · 657d9920
      Ankan authored
      
      
      * bounding election provider with kian
      
      * multi phase implement bounded election provider
      
      * election provider blanket implementation
      
      * staking compiles
      
      * fix test for election provider support
      
      * fmt
      
      * fixing epmp tests, does not compile yet
      
      * fix epmp tests
      
      * fix staking tests
      
      * fmt
      
      * fix runtime tests
      
      * fmt
      
      * remove outdated wip tags
      
      * add enum error
      
      * sort and truncate supports
      
      * comment
      
      * error when unsupported number of election winners
      
      * compiling wip after kian's suggestions
      
      * fix TODOs
      
      * remove,fix tags
      
      * ensure validator count does not exceed maxwinners
      
      * clean up
      
      * some more clean up and todos
      
      * handle too many winners
      
      * rename parameter for mock
      
      * todo
      
      * add sort and truncate rule if there are too many winners
      
      * fmt
      
      * fail, not swallow emergency result bound not met
      
      * remove too many winners resolution as it can be guaranteed to be bounded
      
      * fix benchmark
      
      * give MaxWinners more contextual name
      
      * make ready solution generic over T
      
      * kian feedback
      
      * fix stuff
      
      * Kian's way of solvign this
      
      * comment fix
      
      * fix compile
      
      * remove use of BoundedExecution
      
      * fmt
      
      * comment out failing integrity test
      
      * cap validator count increment to max winners
      
      * dont panic
      
      * add test for bad data provider
      
      * Update frame/staking/src/pallet/impls.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * fix namespace conflict and add test for onchain max winners less than desired targets
      
      * defensive unwrap
      
      * early convert to bounded vec
      
      * fix syntax
      
      * fmt
      
      * fix doc
      
      * fix rustdoc
      
      * fmt
      
      * fix maxwinner count for benchmarking
      
      * add instant election for noelection
      
      * fmt
      
      * fix compile
      
      * pr feedbacks
      
      * always error at validator count exceeding max winners
      
      * add useful error message
      
      * pr comments
      
      * import fix
      
      * add checked_desired_targets
      
      * fmt
      
      * fmt
      
      * fix rust doc
      
      Co-authored-by: parity-processbot <>
      Co-authored-by: default avatarkianenigma <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      657d9920
  19. Oct 17, 2022
    • Ankan's avatar
      Execute try-state at end of each test to ensure pallet data integrity (#12453) · ca15fe7e
      Ankan authored
      * execute try-state at end of tests
      
      * run post condition only with try runtime
      
      * Revert "run post condition only with try runtime"
      
      This reverts commit 7db0ecf7eaa2ee5afa5a995487b73d023ba3bcd9.
      
      * voterlist contains validators as well
      
      * fmt
      
      * simplify
      
      * fmt
      
      Co-authored-by: parity-processbot <>
      ca15fe7e
  20. Sep 27, 2022
  21. Sep 21, 2022
    • Ankan's avatar
      Bound staking storage items (#12230) · c6a9abcc
      Ankan authored
      
      
      * replace pallet level unboundedness to individual storage items
      
      * bound structs
      
      * bounding history depth
      
      * defensive error
      
      * use the era history depth from config
      
      * clean up history depth from storage in v11
      
      * keep the name HistoryDepth for the new configuration value
      
      * use u32 for history depth in node runtime
      
      * improve doc comments
      
      * add HistoryDepth to mock runtimes with pallet-staking
      
      * rustfmt
      
      * refactor and doc improve
      
      * apply re-benchmarked weight for staking
      
      * pr feedback improvements
      
      * test for claimed rewards following the expected bounds
      
      * refactor test to calculate first and last reward era programmatically
      
      * verify previous eras cannot be claimed
      
      * add migration v12
      
      * ".git/.scripts/bench-bot.sh" pallet dev pallet_staking
      
      * fix compiler error
      
      * corrupting history depth does not lead to catastrophic issue
      
      * fix new line
      
      * remove unused import
      
      * fmt
      
      * add test to document scenario where history depth is reduced without migration
      
      * fmt
      
      * Update frame/staking/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Update frame/staking/src/migrations.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * doc for all storage items bounded by HistoryDepth
      
      * Update frame/staking/src/pallet/mod.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Update frame/staking/src/tests.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * pr feedback fixes
      
      * Update frame/staking/src/tests.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * remove extra checks
      
      * fix merge
      
      * fmt
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarkianenigma <[email protected]>
      c6a9abcc
  22. Sep 20, 2022
    • Sergej Sakac's avatar
      BREAKING: Rename Origin (#12258) · e4b6f4a6
      Sergej Sakac authored
      * BREAKING: Rename Origin
      
      * more renaming
      
      * a bit more renaming
      
      * fix
      
      * more fixing
      
      * fix in frame_support
      
      * even more fixes
      
      * fix
      
      * small fix
      
      * ...
      
      * update .stderr
      
      * docs
      
      * update docs
      
      * update docs
      
      * docs
      e4b6f4a6
  23. Sep 18, 2022
    • Roman Useinov's avatar
      [Feature] Part 1: add TargetList for validator ranking (#12034) · 1b24f562
      Roman Useinov authored
      
      
      * [Feature] Part 1: add TargetList for validator ranking
      
      * remove redundant todo
      
      * remove typo
      
      * cleanup
      
      * implement score
      
      * more fixes
      
      * fix thresholds
      
      * fmt
      
      * Remove the stuff that has to come in the next PR, some fixes
      
      * extended balance import
      
      * Change all the references from VoteWeight to Self::Score
      
      * Add a migration for VoterBagsList
      
      * fix score
      
      * add targetList to nomination-pools tests
      
      * fix bench
      
      * address review comments
      
      * change get_npos_targets
      
      * address more comments
      
      * remove thresholds for the time being
      
      * fix instance reference
      
      * VoterBagsListInstance
      
      * reus
      
      * remove params that are not used yet
      
      * Introduced pre/post upgrade try-runtime checks
      
      * fix
      
      * fixes
      
      * fix migration
      
      * fix migration
      
      * fix post_upgrade
      
      * change
      
      * Fix
      
      * eloquent PhantomData
      
      * fix PD
      
      * more fixes
      
      * Update frame/staking/src/pallet/impls.rs
      
      Co-authored-by: default avatarSquirrel <[email protected]>
      
      * is_nominator now works
      
      * fix test-staking
      
      * build fixes
      
      * fix remote-tests
      
      * Apply suggestions from code review
      
      Co-authored-by: parity-processbot <>
      Co-authored-by: default avatarkianenigma <[email protected]>
      Co-authored-by: default avatarSquirrel <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      1b24f562
  24. Sep 12, 2022
    • Sergej Sakac's avatar
      BREAKING: Rename Call & Event (#11981) · 6e8795af
      Sergej Sakac authored
      
      
      * rename Event to RuntimeEvent
      
      * rename Call
      
      * rename in runtimes
      
      * small fix
      
      * rename Event
      
      * small fix & rename RuntimeCall back to Call for now
      
      * small fixes
      
      * more renaming
      
      * a bit more renaming
      
      * fmt
      
      * small fix
      
      * commit
      
      * prep for renaming associated types
      
      * fix
      
      * rename associated Event type
      
      * rename to RuntimeEvent
      
      * commit
      
      * merge conflict fixes & fmt
      
      * additional renaming
      
      * fix.
      
      * fix decl_event
      
      * rename in tests
      
      * remove warnings
      
      * remove accidental rename
      
      * .
      
      * commit
      
      * update .stderr
      
      * fix in test
      
      * update .stderr
      
      * TRYBUILD=overwrite
      
      * docs
      
      * fmt
      
      * small change in docs
      
      * rename PalletEvent to Event
      
      * rename Call to RuntimeCall
      
      * renamed at wrong places :P
      
      * rename Call
      
      * rename
      
      * rename associated type
      
      * fix
      
      * fix & fmt
      
      * commit
      
      * frame-support-test
      
      * passing tests
      
      * update docs
      
      * rustdoc fix
      
      * update .stderr
      
      * wrong code in docs
      
      * merge fix
      
      * fix in error message
      
      * update .stderr
      
      * docs & error message
      
      * .
      
      * merge fix
      
      * merge fix
      
      * fmt
      
      * fmt
      
      * merge fix
      
      * more fixing
      
      * fmt
      
      * remove unused
      
      * fmt
      
      * fix
      
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      6e8795af
  25. Sep 08, 2022
    • Boluwatife Bakre's avatar
      Use parameter_types instead of thread_local for test-setup (#12036) · 3ec4d13e
      Boluwatife Bakre authored
      
      
      * Edit to Assets. parameter_types
      
      * fixes
      
      * Test Fixes. WIP
      
      * Edits to pallet-aura
      
      * Camel Case
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Implementation of mutate fn
      
      * update to pallet-aura
      
      * Update to frame-system. Fixes
      
      * Update to frame-support-test. CamelCases
      
      * Updates to frame- contracts, offences, staking, bounties, child bounties
      
      * Edit to mutate fn. Changes to frame-contracts. CamelCase pallet-aura
      
      * Edits to frame-contracts & executive
      
      * cargo +nightly fmt
      
      * unused import removed
      
      * unused import removed
      
      * cargo +nightly fmt
      
      * minor adjustment
      
      * updates
      
      * updates
      
      * cargo +nightly fmt
      
      * cargo +nightly fmt
      
      * take fn implemented
      
      * update
      
      * update
      
      * Fixes to CallFilter
      
      * cargo +nightly fmt
      
      * final fixes
      
      * Default changed to $value
      
      * Update frame/support/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      3ec4d13e
  26. Aug 15, 2022
  27. Aug 01, 2022
  28. Jul 26, 2022
  29. Apr 27, 2022
    • Zeke Mostov's avatar
      Nomination Pools (#10694) · 247f33dc
      Zeke Mostov authored
      
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Add admin roles and make some calls permissionless
      
      * Destroy pool in withdraw unbonded
      
      * Add docs on pool admin
      
      * Fixup tests
      
      * Test unbond_other permissionless scenarios
      
      * Test withdraw unbonded permissionless
      
      * Test only can join open pools
      
      * Move unsafe set state to mock
      
      * Test: nominate_works
      
      * Add bounds: MinJoinBond, MinCreateBond, MaxPools
      
      * Test MinCreateBond, MinJoinBond, MaxPools
      
      * Add post checks to tests
      
      * Remove some TODOs
      
      * Setup weight infrastructure
      
      * Benchmark claim_payout
      
      * Benchmark create
      
      * Benchmark nominate
      
      * Benchmark join
      
      * Benchmark unbond_other
      
      * Refactor join benchmark to use scenario setup
      
      * Clean up and address warnings
      
      * Basic withdraw unbonded benchmarks
      
      * Refactor nominate benchmark
      
      * Refactor claim payout
      
      * Add feature sp-staking/runtime-benchmarks
      
      * Get node runtime to compile
      
      * Get node to run
      
      * Make claim_payout bench work with node
      
      * Make pool_withdraw_unbonded bench work with node
      
      * Make withdraw_unbonded_other work with node runtime'
      
      * Make create benchmark work with node
      
      * Make nominate benchmark work with node runtime
      
      * WiP new benchmark crate
      
      * Implement initial mock for benchmarks
      
      * Establish benchmark setup logic
      
      * Get claim payout and nominate benchmarks working
      
      * Remove pool bench utils; make struct fields pub insteaad
      
      * Get more benchmarks to work; trim interface trait
      
      * Some more top level docs
      
      * Finish tranistion benchmarks to crate
      
      * Hook up benchmark pallet to node runtime
      
      * Get benches to work with node runtime
      
      * cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_nomination_pools --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/nomination-pools/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * Benchmark withdraw_unbonded_other_kill
      
      * Delete old benchmarking files
      
      * Refunds for withdraw_unbonded
      
      * Remove some TODOs
      
      * 'Don't return an option for the current_era'
      
      * Streamline extrinsic docs
      
      * small docs tweaks
      
      * Refactor ledger::slash
      
      * Add on_slash impl for nomination pools
      
      * slash refactor wip
      
      * WIP slash working
      
      * DRY Ledger::stash
      
      * Fix slash saturation
      
      * Remove unused param from slash
      
      * Docs and warnings
      
      * Test ledger::slash
      
      * save progress
      
      * Introduce counter for delegators
      
      * Add tests for max delegator errors
      
      * Reproducible account ids
      
      * Adapt tests to new account id format
      
      * Simplify create_accounts api
      
      * Fix staking tests
      
      * Save PerBill slash impl before removing
      
      * Rever ledger slash test
      
      * Get node runtime to work
      
      * Organize sub pools by unbond era, not curren era
      
      * staking: Proportional ledger slashing
      
      * Some comment cleanup
      
      * Add more test post checks
      
      * Update frame/staking/src/pallet/mod.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Tests: account for storing unbond era
      
      * Improve docs for staking interface
      
      * Add events Created, Destroyed
      
      * withdraw_unbonded: Remove useless withdraw dust check
      
      * Test: withdraw_unbonded_other_handles_faulty_sub_pool_accounting
      
      * Add extrinsics: set_state_other, set_metadata
      
      * Test: set_state_other_works
      
      * Test: set_metadata_works
      
      * Add benchmarks for set_state_other, set_metadata
      
      * Fix benchmarks
      
      * Add weight info for new extrinsics
      
      * Some feedback
      
      * duo feedback
      
      * Incorporate some more feedback
      
      * integrate more kian feedback
      
      * integrate more kian feedback
      
      * More improvements
      
      * Add destroying_mul
      
      * Make do_reward_payout take refs
      
      * Remove some TODOs
      
      * Add test for saturating
      
      * feedback
      
      * Fix join test
      
      * use `inner` for nested types in nomination pools (#11030)
      
      * Use nested inner type for pool
      
      * make tests and benchmarks work
      
      * remove feat
      
      * all tests work now
      
      * fix node-runtime
      
      * nomination-pools: update benches for new account format (#11033)
      
      * Update benches to new account format
      
      * More sensible seeds
      
      * bring back rward account sanity check
      
      * Comment
      
      * Add extrinsic set_configs (#11038)
      
      * Better sanity checks for nomination pools  (#11042)
      
      * new sanity checks, few other changes
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * nomination-pools: Fix state event regression + benches (#11045)
      
      * new sanity checks, few other changes
      
      * Fix benches, improve sanity check
      
      * Remove useless clear storage in benchmarking
      
      * Set state
      
      * Save
      
      * Doc
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarkianenigma <[email protected]>
      
      * FMT
      
      * Try fill in all staking configs
      
      * Fix build
      
      * More changes to nomination pools (#11050)
      
      * new sanity checks, few other changes
      
      * some last touches as a whole
      
      * Apply suggestions from code review
      
      * Remove redundant event
      
      * Improve unbond_other error handling
      
      * Remove comment
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      Co-authored-by: default avataremostov <[email protected]>
      
      * Remove sanity module and some TODOs
      
      * round of feedback and imp from kian
      
      * Add TODO for ED QoL at reward pool creation
      
      * Make sure reward pool never gets dusted
      
      * Improve error type
      
      * demonstrate per_thing usage
      
      * Update sanity check & fix create_works
      
      * Improve test ext pool creation & fix some more tests
      
      * Try revert
      
      * Revert "Try revert"
      
      This reverts commit c044c94730e1a370eecd8f5b2c4f632835913063.
      
      * Revert "Improve test ext pool creation & fix some more tests"
      
      This reverts commit 1e862a64a7423479260c6e5ad1bd4c8c95651f3a.
      
      * Revert "Update sanity check & fix create_works"
      
      This reverts commit 568a7b727687e4d585e2796afc638df97b83c632.
      
      Roll back reward account funding
      
      * Revert "Improve error type"
      
      This reverts commit 4b993ee601a037e7a44e4a49bbfd60cf45b38b78.
      
      * Revert "Make sure reward pool never gets dusted"
      
      This reverts commit e7a3eb45bdfd156d3f6d94d194e988032ebbc593.
      
      revert
      
      * Update some tests
      
      * FMT
      
      * Test that era offset works correctly
      
      * Update mocks
      
      * Remove unnescary docs
      
      * Doc updates
      
      * Update calculate_delegator_payout_works_with_a_pool_of_1
      
      * Fix test: claim_payout_works
      
      * do_reward_payout_correctly_sets_pool_state_to_destroying
      
      * Remove test do_reward_payout_errors_correctly
      
      * Fix test: do_reward_payout_works
      
      * Fix test: create_errors_correctly
      
      * Fix test: create works
      
      * Fix test: unbond_other_of_3_works
      
      * Ensure that ED is transferred into reward pool upon creation
      
      * WIP pool lifecycle test
      
      * Fix benchmarks
      
      * Add sanity check for ED + reward pools
      
      * `bond_extra` for nomination pools (#11100)
      
      * bond_extra for nomination pools
      
      * Update frame/nomination-pools/src/lib.rs
      
      * Update frame/nomination-pools/src/lib.rs
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * add benchmarks
      
      * remove the min logic of bond_extra
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * FMT
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * make it compile end to end
      
      * Update some type viz
      
      * Update kick terminology
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Update frame/nomination-pools/src/lib.rs
      
      * Cache bonded account when creating pool
      
      * Add bond extra weight stuff
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Update docs for pool withdraw unbonded
      
      * Update docs for unbond
      
      * Improve Doc
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Update frame/nomination-pools/Cargo.toml
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Improve Docs
      
      * Some docs improvements
      
      * fmt
      
      * Remove unlock_era
      
      * Fix accidental frame-support regression
      
      * Fix issue with transactions in tests
      
      * Fix doc links
      
      * Make sure result in test is used
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Fix can toggle state
      
      * Account for new_funds in ok to be open
      
      * Update docs: ok_to_withdraw_unbonded_other_with
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Remove some staking comments
      
      * Rename SubPoolsWithEra to UnbondingPoolsWithEra
      
      * Use validators length for benchmarks
      
      * Use metadata length for benchmarks
      
      * Remove debug assert eq
      
      * docs
      
      * Fix test: withdraw_unbonded_other_errors_correctly
      
      * Fix check for having enough balance to create the pool
      
      * Bond event for pool creation
      
      * Ok to be open
      
      * FMT
      
      * Remove _other postfix
      
      * Update frame/staking/src/lib.rs
      
      * Adjust tests to account for only remove when < ED
      
      * Remove stale TODOs
      
      * Remove dupe test
      
      * Fix build
      
      * Make sure to convert to u256 so we don't saturate
      
      * Refund depositor with reward pool fee
      
      * FMT
      
      * Remove reachable defensive
      
      * Use compact encoding for relevant extrinsics
      
      * Remove unnescary make_free_be for cleaning reward account
      
      * Add not to maintainers for reward account accounting
      
      * Remove note to maintainers from public doc
      
      * Make sure all configs have currency balance
      
      * Avoid saturation in balance_to_unbond
      
      * Partial Unbonding for Nomination Pools (#11212)
      
      * first draft of partial unbonding for pools
      
      * remove option
      
      * Add some more tests and fix issues
      
      * Fix all tests
      
      * simplify some tests
      
      * Update frame/nomination-pools/src/mock.rs
      
      * remove clone
      
      * rename to delegator_unbonding_eras
      
      * Update frame/nomination-pools/src/tests.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * Update frame/nomination-pools/src/tests.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * Update frame/nomination-pools/src/tests.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * remove pub
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * undo
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * leftovers
      
      * fix invariant
      
      * Fix the depositor assumption
      
      * round of self-review
      
      * little bit more cleanup
      
      * Update frame/nomination-pools/src/mock.rs
      
      * Apply suggestions from code review
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * Fix interpretation of MinCreateBond
      
      * controvesial refactor
      
      * rename
      
      * make everything build
      
      * add TODO about killing the reward account
      
      * Update frame/nomination-pools/src/lib.rs
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * Update frame/nomination-pools/src/lib.rs
      
      * last self-review
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * Update Cargo.lock
      
      * Rename Delegator to PoolMember
      
      * fmt
      
      * Get runtime to build with runtime-benchmarks feature
      
      * Update Cargo.lock
      
      * Fix asserts to work in more scenarios
      
      * gte not gt
      
      * cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_nomination_pools --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/nomination-pools/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * Update frame/staking/src/mock.rs
      
      * Update frame/nomination-pools/src/lib.rs
      
      * Update frame/staking/src/slashing.rs
      
      * Apply suggestions from code review
      
      * fmt
      
      * Fix some tests
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarParity Bot <[email protected]>
      Co-authored-by: default avatarkianenigma <[email protected]>
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      247f33dc
  30. Apr 21, 2022
    • Zeke Mostov's avatar
      staking: Proportional ledger slashing (#10982) · e0bf4f36
      Zeke Mostov authored
      
      
      * staking: Proportional ledger slashing
      
      * Some comment cleanup
      
      * Update frame/staking/src/pallet/mod.rs
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Fix benchmarks
      
      * FMT
      
      * Try fill in all staking configs
      
      * round of feedback and imp from kian
      
      * demonstrate per_thing usage
      
      * Update some tests
      
      * FMT
      
      * Test that era offset works correctly
      
      * Update mocks
      
      * Remove unnescary docs
      
      * Remove unlock_era
      
      * Update frame/staking/src/lib.rs
      
      * Adjust tests to account for only remove when < ED
      
      * Remove stale TODOs
      
      * Remove dupe test
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarkianenigma <[email protected]>
      e0bf4f36
    • Zeke Mostov's avatar
      staking: Fix `Reward` usage (#10887) · 97f51931
      Zeke Mostov authored
      * staking: Fix `Reward` usage
      
      * Some small fixes
      
      * Check on_unbalanced was called
      
      * Improve tests
      
      * Add not for Reward; FMT
      
      * 🤦
      
      Co-authored-by: parity-processbot <>
      97f51931
  31. Apr 15, 2022
    • Georges's avatar
      Adding benchmarking for new `frame_election_provider_support` (#11149) · ae75a371
      Georges authored
      * First stab at adding benchmarking for
      `election-provider-support` onchain
      
      * Adding `BoundedPhragMMS` and fixing stuff
      
      * Fixing node runtime
      
      * Fixing tests
      
      * Finalising all benchmarking stuff
      
      * better comments
      
      * Better benchmarking config
      
      * Better `WeightInfo` and benchmarking
      
      * Fixing tests
      
      * Adding some documentation
      
      * Fixing some typos
      
      * Incorporating review feedback
      
      * cleanup of rustdocs
      
      * rustdoc changes
      
      * changes after code review
      
      * Fixing some errors.
      
      * Fixing dependencies post merge
      
      * Bringing back `UnboundedExecution`
      
      * Better rustdoc and naming
      
      * Cargo.toml formatting
      ae75a371
  32. Mar 25, 2022
    • Georges's avatar
      Add a bounded fallback on failed elections (#10988) · e9bfdd9a
      Georges authored
      
      
      * Allow `pallet-election-provider` to accept smaller
      solutions, issue #9478
      
      * Fixing a typo
      
      * Adding some more tests
      Removing a seemingly outdated comment
      
      * making it a URL
      
      * Updating test name as per suggestion
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Updating documentation to be more explicit
      
      And to follow the general guidelines
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Fixing formatting
      
      * `Fallback` now of type `InstantElectionProvider`
      Some cleanups
      
      * Allow `pallet-election-provider` to accept smaller
      solutions, issue #9478
      
      * Fixing a typo
      
      * Adding some more tests
      Removing a seemingly outdated comment
      
      * making it a URL
      
      * Updating test name as per suggestion
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Updating documentation to be more explicit
      
      And to follow the general guidelines
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Fixing formatting
      
      * `Fallback` now of type `InstantElectionProvider`
      Some cleanups
      
      * Merging types into one type with generics
      
      * Removing `ConstUSize` and use `ConstU32`
      
      * cleaning up the code
      
      * deprecating `OnChainSequentialPhragmen`
      Renaming it to `UnboundedSequentialPhragmen` which should only be used
      at genesis and for testing.
      Use preferrably `BoundedOnChainSequentialPhragmen`
      
      * Amending docs
      
      * Adding some explicit imports
      
      * Implementing generic `BoundedOnchainExecution`
      Removing the deprecated `OnChainSequentialPhragmen`
      
      * Use the right Balancing strategy
      
      * Refactoring `onchain::Config`
      Creating `onchain::ExecutionConfig`
      
      * Merge master
      
      * fmt
      
      * Name cleanups after review suggestions
      
      * cosmetics
      
      * renaming `instant_elect` to `elect_with_bounds`
      Other corresponding changes as per @Kianenigma
      
       feedback
      
      * `BoundedOnchainExecution` -> `BoundedExecution`
      And `UnboundedOnchainExecution` -> `UnboundedExecution`
      
      * feedback from kian
      
      * fmt + unneeded import
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarkianenigma <[email protected]>
      e9bfdd9a
  33. Mar 23, 2022
  34. Mar 09, 2022
  35. Mar 01, 2022
  36. Jan 25, 2022
  37. Jan 03, 2022
  38. Dec 16, 2021
    • dharjeezy's avatar
      Replace parameter_types with ConstU32 &c. (#10402) · 1b0be8ae
      dharjeezy authored
      
      
      * remove parameter types and use const type
      
      * remove parameter types and use const type
      
      * Delete {
      
      * Delete count,
      
      * refractor for beefy, benchmarking, child bounties, and collective pallets
      
      * refractor for pallet contracts
      
      * refractor for elections
      
      * refractor for more pallets
      
      * fix CI issues
      
      * fix CI issues
      
      * fix CI issues
      
      * fix CI issues
      
      * remove warning to fix CI issue
      
      * remove warning to fix CI issue
      refractor for pallet preimage
      
      * remove warning to fix CI issue
      refractor for pallet proxy
      
      * remove warning to fix CI issue
      refractor for pallet recovery
      refractor for pallet randomness-collective-flip
      
      * remove warning to fix CI issue
      refractor for pallet scored-pool
      refractor for pallet scheduler
      refractor for pallet session
      
      * remove warning to fix CI issue
      refractor for pallet society, support, system, timestamp, tips
      
      * remove warning to fix CI issue
      refractor for pallet transaction_payment, transaction_storage, treasury, uniques, utility
      
      * remove warning to fix CI issue
      
      * cargo +nightly fmt
      
      * CI fix
      
      * more param refractor on beefy-mmr
      
      * refractor for beefy
      
      * Update frame/babe/src/mock.rs
      
      * Update frame/babe/src/mock.rs
      
      * Update frame/bounties/src/tests.rs
      
      * Update frame/tips/src/tests.rs
      
      * Delete mock.rs
      
      * Update frame/examples/basic/src/tests.rs
      
      * Apply suggestions from code review
      
      * Update frame/im-online/src/mock.rs
      
      * Update frame/im-online/src/mock.rs
      
      * Update frame/offences/benchmarking/src/mock.rs
      
      * Update frame/session/benchmarking/src/mock.rs
      
      * Update frame/support/test/tests/pallet_compatibility.rs
      
      * Update frame/support/test/tests/pallet_compatibility_instance.rs
      
      * Update frame/treasury/src/tests.rs
      
      * Update test-utils/runtime/src/lib.rs
      
      * some cleanup
      
      * fmt
      
      * remove unused
      
      Co-authored-by: default avatarDamilare <[email protected]>
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      1b0be8ae
  39. Dec 13, 2021