Skip to content
  1. Apr 23, 2024
  2. Apr 10, 2024
  3. Apr 04, 2024
  4. Mar 17, 2024
  5. Mar 15, 2024
  6. Feb 28, 2024
  7. Jan 31, 2024
    • Branislav Kontur's avatar
      [frame] `#[pallet::composite_enum]` improved variant count handling + removed... · bb8ddc46
      Branislav Kontur authored
      [frame] `#[pallet::composite_enum]` improved variant count handling + removed `pallet_balances`'s `MaxHolds` config (#2657)
      
      I started this investigation/issue based on @liamaharon question
      [here](https://github.com/paritytech/polkadot-sdk/pull/1801#discussion_r1410452499).
      
      ## Problem
      
      The `pallet_balances` integrity test should correctly detect that the
      runtime has correct distinct `HoldReasons` variant count. I assume the
      same situation exists for RuntimeFreezeReason.
      
      It is not a critical problem, if we set `MaxHolds` with a sufficiently
      large value, everything should be ok. However, in this case, the
      integrity_test check becomes less useful.
      
      **Situation for "any" runtime:**
      - `HoldReason` enums from different pallets:
      ```rust
              /// from pallet_nis
              #[pallet::composite_enum]
      	pub enum HoldReason {
      		NftReceipt,
      	}
      
              /// from pallet_preimage
              #[pallet::composite_enum]
      	pub enum HoldReason {
      		Preimage,
      	}
      
              // from pallet_state-trie-migration
              #[pallet::composite_enum]
      	pub enum HoldReason {
      		SlashForContinueMigrate,
      		SlashForMigrateCustomTop,
      		SlashForMigrateCustomChild,
      	}
      ```
      
      - generated `RuntimeHoldReason` enum looks like:
      ```rust
      pub enum RuntimeHoldReason {
      
          #[codec(index = 32u8)]
          Preimage(pallet_preimage::HoldReason),
      
          #[codec(index = 38u8)]
          Nis(pallet_nis::HoldReason),
      
          #[codec(index = 42u8)]
          StateTrieMigration(pallet_state_trie_migration::HoldReason),
      }
      ```
      
      - composite enum `RuntimeHoldReason` variant count is detected as `3`
      - we set `type MaxHolds = ConstU32<3>`
      - `pallet_balances::integrity_test` is ok with `3`(at least 3)
      
      However, the real problem can occur in a live runtime where some
      functionality might stop working. This is due to a total of 5 distinct
      hold reasons (for pallets with multi-instance support, it is even more),
      and not all of them can be used because of an incorrect `MaxHolds`,
      which is deemed acceptable according to the `integrity_test`:
        ```
        // pseudo-code - if we try to call all of these:
      
      T::Currency::hold(&pallet_nis::HoldReason::NftReceipt.into(),
      &nft_owner, deposit)?;
      T::Currency::hold(&pallet_preimage::HoldReason::Preimage.into(),
      &nft_owner, deposit)?;
      
      T::Currency::hold(&pallet_state_trie_migration::HoldReason::SlashForContinueMigrate.into(),
      &nft_owner, deposit)?;
      
        // With `type MaxHolds = ConstU32<3>` these two will fail
      
      T::Currency::hold(&pallet_state_trie_migration::HoldReason::SlashForMigrateCustomTop.into(),
      &nft_owner, deposit)?;
      
      T::Currency::hold(&pallet_state_trie_migration::HoldReason::SlashForMigrateCustomChild.into(),
      &nft_owner, deposit)?;
        ```  
      
      
      ## Solutions
      
      A macro `#[pallet::*]` expansion is extended of `VariantCount`
      implementation for the `#[pallet::composite_enum]` enum type. This
      expansion generates the `VariantCount` implementation for pallets'
      `HoldReason`, `FreezeReason`, `LockId`, and `SlashReason`. Enum variants
      must be plain enum values without fields to ensure a deterministic
      count.
      
      The composite runtime enum, `RuntimeHoldReason` and
      `RuntimeFreezeReason`, now sets `VariantCount::VARIANT_COUNT` as the sum
      of pallets' enum `VariantCount::VARIANT_COUNT`:
      ```rust
      #[frame_support::pallet(dev_mode)]
      mod module_single_instance {
      
      	#[pallet::composite_enum]
      	pub enum HoldReason {
      		ModuleSingleInstanceReason1,
      		ModuleSingleInstanceReason2,
      	}
      ...
      }
      
      #[frame_support::pallet(dev_mode)]
      mod module_multi_instance {
      
      	#[pallet::composite_enum]
      	pub enum HoldReason<I: 'static = ()> {
      		ModuleMultiInstanceReason1,
      		ModuleMultiInstanceReason2,
      		ModuleMultiInstanceReason3,
      	}
      ...
      }
      
      
      impl self::sp_api_hidden_includes_construct_runtime::hidden_include::traits::VariantCount
          for RuntimeHoldReason
      {
          const VARIANT_COUNT: u32 = 0
              + module_single_instance::HoldReason::VARIANT_COUNT
              + module_multi_instance::HoldReason::<module_multi_instance::Instance1>::VARIANT_COUNT
              + module_multi_instance::HoldReason::<module_multi_instance::Instance2>::VARIANT_COUNT
              + module_multi_instance::HoldReason::<module_multi_instance::Instance3>::VARIANT_COUNT;
      }
      ```
      
      In addition, `MaxHolds` is removed (as suggested
      [here](https://github.com/paritytech/polkadot-sdk/pull/2657#discussion_r1443324573))
      from `pallet_balances`, and its `Holds` are now bounded to
      `RuntimeHoldReason::VARIANT_COUNT`. Therefore, there is no need to let
      the runtime specify `MaxHolds`.
      
      
      ## For reviewers
      
      Relevant changes can be found here:
      - `substrate/frame/support/procedural/src/lib.rs` 
      -  `substrate/frame/support/procedural/src/pallet/parse/composite.rs`
      -  `substrate/frame/support/procedural/src/pallet/expand/composite.rs`
      -
      `substrate/frame/support/procedural/src/construct_runtime/expand/composite_helper.rs`
      -
      `substrate/frame/support/procedural/src/construct_runtime/expand/hold_reason.rs`
      -
      `substrate/frame/support/procedural/src/construct_runtime/expand/freeze_reason.rs`
      - `substrate/frame/support/src/traits/misc.rs`
      
      And the rest of the files is just about removed `MaxHolds` from
      `pallet_balances`
      
      ## Next steps
      
      Do the same for `MaxFreezes`
      https://github.com/paritytech/polkadot-sdk/issues/2997
      
      .
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      Co-authored-by: default avatarDónal Murray <[email protected]>
      Co-authored-by: default avatargupnik <[email protected]>
      bb8ddc46
  8. Jan 22, 2024
  9. Nov 28, 2023
  10. Oct 24, 2023
  11. Sep 06, 2023
  12. Aug 31, 2023
  13. Aug 16, 2023
  14. Aug 14, 2023
  15. Jul 14, 2023
    • juangirini's avatar
      Replace Index for Nonce (#7374) · b95cc76d
      juangirini authored
      * replace Index for Nonce
      
      * remove extra Nonce
      
      * update lockfile for {"substrate"}
      
      ---------
      
      Co-authored-by: parity-processbot <>
      b95cc76d
  16. Jul 13, 2023
    • gupnik's avatar
      Moves `Block` to `frame_system` instead of `construct_runtime` and removes... · 28024144
      gupnik authored
      
      Moves `Block` to `frame_system` instead of `construct_runtime` and removes `Header` and `BlockNumber` (#7431)
      
      * Companion for substrate
      
      * Minor update
      
      * Formatting
      
      * Fixes for cumulus
      
      * Fixes tests in polkadot-runtime-parachains
      
      * Minor update
      
      * Removes unused import
      
      * Fixes tests in polkadot-runtime-common
      
      * Minor fix
      
      * Update roadmap/implementers-guide/src/runtime/configuration.md
      
      Co-authored-by: default avatarordian <[email protected]>
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * update lockfile for {"substrate"}
      
      ---------
      
      Co-authored-by: default avatarordian <[email protected]>
      Co-authored-by: command-bot <>
      28024144
  17. Jul 12, 2023
  18. May 24, 2023
  19. May 23, 2023
  20. May 17, 2023
  21. May 08, 2023
    • Chris Sosnin's avatar
      paras: dismiss `pvf_checking_enabled` configuration (#7138) · 9c08536d
      Chris Sosnin authored
      * paras: unconditionally precheck pvfs
      
      * Update integration tests
      
      * paras_registrar tests
      
      * runtime benchmark tests
      
      * fix bench
      
      * bypass prechecking in test node
      
      * adjust bench
      
      * ".git/.scripts/commands/bench/bench.sh" runtime polkadot runtime_parachains::paras
      
      * ".git/.scripts/commands/bench/bench.sh" runtime kusama runtime_parachains::paras
      
      * ".git/.scripts/commands/bench/bench.sh" runtime rococo runtime_parachains::paras
      
      * ".git/.scripts/commands/bench/bench.sh" runtime westend runtime_parachains::paras
      
      * use test helper
      
      * fix new test
      
      ---------
      
      Co-authored-by: command-bot <>
      9c08536d
  22. Apr 08, 2023
  23. Mar 20, 2023
  24. Mar 17, 2023
    • Davide Galassi's avatar
      [Companion #13615] Keystore overhaul (#6892) · 46c36e5a
      Davide Galassi authored
      * Remove not required async calls
      
      * Fixed missing renaming
      
      * make_keystore can be sync
      
      * More fixes
      
      * Trivial nitpicks
      
      * Cherry pick test fix from master
      
      * Fixes after master merge
      
      * update lockfile for {"substrate"}
      
      ---------
      
      Co-authored-by: parity-processbot <>
      46c36e5a
  25. Mar 13, 2023
    • Vivek Pandya's avatar
      Remove use of Store trait (#6835) · 87db25ce
      Vivek Pandya authored
      * Remove use of Store trait from runtime directory
      
      * Remove Store trait usage from xcm directory
      
      * Run cargo fmt
      
      * update lockfile for {"substrate"}
      
      ---------
      
      Co-authored-by: parity-processbot <>
      87db25ce
  26. Jan 11, 2023
  27. Dec 19, 2022
  28. Dec 06, 2022
  29. Dec 05, 2022
    • Gavin Wood's avatar
      OpenGov improvements for Kusama (#6372) · 053b24eb
      Gavin Wood authored
      * Tweaks to optimise gov2
      
      * Use new inactive funds
      
      * Introduce migrations
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Some constant updates for Fellowship
      
      * Further tweaks
      
      * Lower floor for whitelisted
      053b24eb
  30. Nov 30, 2022
    • alexgparity's avatar
      Clippyfy (#6341) · 9ea14e66
      alexgparity authored
      
      
      * Add clippy config and remove .cargo from gitignore
      
      * first fixes
      
      * Clippyfied
      
      * Add clippy CI job
      
      * comment out rusty-cachier
      
      * minor
      
      * fix ci
      
      * remove DAG from check-dependent-project
      
      * add DAG to clippy
      
      Co-authored-by: default avataralvicsam <[email protected]>
      9ea14e66
  31. Sep 20, 2022
  32. Sep 12, 2022
    • Sergej Sakac's avatar
      Companion for #11981 (#5915) · 8ea6076f
      Sergej Sakac authored
      
      
      * Companion for #11981
      
      * more renaming
      
      * fmt
      
      * fixes
      
      * add generic type
      
      * Companion for #11831
      
      * fix
      
      * revert changes
      
      * Delete rename-outer-enum.diff
      
      * revert
      
      * Update run_benches_for_runtime.sh
      
      * rename type Call & type Event
      
      * passing tests
      
      * fmt
      
      * small fixes
      
      * commit
      
      * fix
      
      * fmt
      
      * commit
      
      * error fixes
      
      * fix
      
      * small fix in test
      
      * Update lib.rs
      
      * Update lib.rs
      
      * Update lib.rs
      
      * Update lib.rs
      
      * Update lib.rs
      
      * Update lib.rs
      
      * Update lib.rs
      
      * remove RuntimeCall from pallet_grandpa
      
      * last fix
      
      * commit
      
      * rename
      
      * merge fix
      
      * update lockfile for {"substrate"}
      
      * cargo +nightly fmt
      
      * fix
      
      Co-authored-by: parity-processbot <>
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      8ea6076f
  33. Sep 01, 2022
    • Shawn Tabrizi's avatar
      Companion for Weight v1.5 Follow Up (#5949) · e28bf2e4
      Shawn Tabrizi authored
      * updates
      
      * remove new
      
      * fix up some stuff
      
      * fix cargo files
      
      * fix
      
      * fix template
      
      * update lockfile for {"substrate"}
      
      * Update block_weights.rs
      
      * remove unused
      
      * remove unused
      
      Co-authored-by: parity-processbot <>
      e28bf2e4
  34. Aug 31, 2022
    • Shawn Tabrizi's avatar
      Companion for Weight v1.5 (#5943) · 28e94d97
      Shawn Tabrizi authored
      * fix to latest substrate pr
      
      * update weights
      
      * cargo build -p polkadot-runtime-parachains
      
      * fix xcm-builder
      
      * fix import
      
      * fix a bunch
      
      * fix a bunch of weight stuff
      
      * kusama compile
      
      * unused
      
      * builds
      
      * maybe fix
      
      * cargo test -p polkadot-runtime-parachains
      
      * xcm simulator example
      
      * fix tests
      
      * xcm sim fuzz
      
      * fix runtime tests
      
      * remove unused
      
      * fix integration tests
      
      * scalar div
      
      * update lockfile for {"substrate"}
      
      Co-authored-by: parity-processbot <>
      28e94d97
  35. May 30, 2022
  36. May 17, 2022
  37. May 13, 2022
  38. May 11, 2022