Skip to content
  1. Nov 01, 2023
    • Kevin Krone's avatar
      Improve FRAME storage docs (#1714) · b6965af4
      Kevin Krone authored
      This is a port (and hopefully a small improvement) of @Kianenigma
      
      's PR
      from the old Substrate repo:
      https://github.com/paritytech/substrate/pull/13987. Following #1689 I
      moved the documentation of all macros relevant to this PR from
      `frame_support_procedural` to `pallet_macros` while including a hint for
      RA users.
      
      Question: Again with respect to #1689: Is there a good reason why we
      should *not* enhance paths with links to our current rustdocs? For
      example, instead of
      ```rust
      /// **Rust-Analyzer users**: See the documentation of the Rust item in
      /// `frame_support::pallet_macros::storage`.
      ```
      we could write
      ```rust
      /// **Rust-Analyzer users**: See the documentation of the Rust item in
      /// [`frame_support::pallet_macros::storage`](https://paritytech.github.io/polkadot-sdk/master/frame_support/pallet_macros/attr.storage.html).
      ```
      This results in a clickable link like this:
      <img width="674" alt="image"
      src="https://github.com/paritytech/polkadot-sdk/assets/10713977/c129e622-3942-4eeb-8acf-93ee4efdc99d">
      I don't really expect the links to become outdated any time soon, but I
      think this would be a great UX improvement over just having paths.
      
      TODOs:
      - [ ] Add documentation for `constant_name` macro
      - [x] Add proper documentation for different `QueryKinds`, i.e.
      `OptionQuery`, `ValueQuery`, `ResultQuery`. One example for each. Custom
      `OnEmpty` should be moved to `QueryKinds` trait doc page.
      - [ ] Rework `type_value` docs
      
      ---------
      
      Co-authored-by: default avatarkianenigma <[email protected]>
      b6965af4
    • 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
    • Dmitry Markin's avatar
      Move syncing code from `sc-network-common` to `sc-network-sync` (#1912) · 1cd6acdf
      Dmitry Markin authored
      This PR moves syncing-related code from `sc-network-common` to
      `sc-network-sync`.
      
      Unfortunately, some parts are tightly integrated with networking, so
      they were left in `sc-network-common` for now:
      
      1. `SyncMode` in `common/src/sync.rs` (used in `NetworkConfiguration`).
      2. `BlockAnnouncesHandshake`, `BlockRequest`, `BlockResponse`, etc. in
      `common/src/sync/message.rs` (used in `src/protocol.rs` and
      `src/protocol/message.rs`).
      
      More substantial refactoring is needed to decouple syncing and
      networking completely, including getting rid of the hardcoded sync
      protocol.
      
      ## Release notes
      
      Move syncing-related code from `sc-network-common` to `sc-network-sync`.
      Delete `ChainSync` trait as it's never used (the only implementation is
      accessed directly from `SyncingEngine` and exposes a lot of public
      methods that are not part of the trait). Some new trait(s) for syncing
      will likely be introduced as part of Sync 2.0 refactoring to represent
      syncing strategies.
      1cd6acdf
    • Davide Galassi's avatar
      Bump ec-utils version (#2104) · b53a93a6
      Davide Galassi authored
      b53a93a6
  2. Oct 31, 2023
    • Lulu's avatar
    • Adel Arja's avatar
      1953 defensive testing extrinsic (#1998) · 6e2f94f8
      Adel Arja authored
      
      
      # Description
      
      The `trigger_defensive` call has been added to the `root-testing`
      pallet. The idea is to have this pallet running on `Rococo/Westend` and
      use it to verify if the runtime monitoring works end-to-end.
      
      To accomplish this, `trigger_defensive` dispatches an event when it is
      called.
      
      Closes #1953
      
      # Checklist
      
      - [x] My PR includes a detailed description as outlined in the
      "Description" section above
      - [ ] My PR follows the [labeling requirements](CONTRIBUTING.md#Process)
      of this project (at minimum one label for `T`
        required)
      - [ ] I have made corresponding changes to the documentation (if
      applicable)
      - [ ] I have added tests that prove my fix is effective or that my
      feature works (if applicable)
      
      You can remove the "Checklist" section once all have been checked. Thank
      you for your contribution!
      
      ✄
      -----------------------------------------------------------------------------
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      6e2f94f8
    • Davide Galassi's avatar
      Elliptic curves utilities refactory (#2068) · c38aae62
      Davide Galassi authored
      - Usage the new published
      [arkworks-extensions](https://github.com/paritytech/arkworks-extensions)
      crates.
        Hooks are internally defined to jump into the proper host functions.
      - Conditional compilation of each curve (gated by feature with curve
      name)
      - Separation in smaller host functions sets, divided by curve (fits
      nicely with prev point)
      c38aae62
    • Bastian Köcher's avatar
      check-each-crate: Do not reference crate to check by name (#2098) · 3ae86ae0
      Bastian Köcher authored
      This pull request changes how `check-each-crate.py` is working. Instead
      of passing the name of the crate via `-p`, we now jump into the
      directory of the crate and call there `cargo check`. This should fix
      issues like https://github.com/paritytech/polkadot-sdk/issues/2013 where
      a crate is present twice in the `Cargo.lock`.
      
      Besides that it also changes `core/Cargo.toml` to not always pull in
      bandersnatch.
      3ae86ae0
    • Rahul Subramaniyam's avatar
      Add test to demonstrate the failure scenario (#1999) · d85c1d91
      Rahul Subramaniyam authored
      
      
      The change adds a test to show the failure scenario that caused #1812 to
      be rolled back (more context:
      https://github.com/paritytech/polkadot-sdk/issues/493#issuecomment-1772009924)
      
      Summary of the scenario:
      1. Node has finished downloading up to block 1000 from the peers, from
      the canonical chain.
      2. Peers are undergoing re-org around this time. One of the peers has
      switched to a non-canonical chain, announces block 1001 from that chain
      3. Node downloads 1001 from the peer, and tries to import which would
      fail (as we don't have the parent block 1000 from the other chain)
      
      ---------
      
      Co-authored-by: default avatarDmitry Markin <[email protected]>
      d85c1d91
    • PG Herveou's avatar
      Contracts migration update (#2091) · 18ad4490
      PG Herveou authored
      Restore fix from #2077
      18ad4490
  3. Oct 30, 2023
    • Bastian Köcher's avatar
      parachain-system: Send same event & digest as a standalone chain (#2064) · 2d9426f1
      Bastian Köcher authored
      This ensures that upgrading a parachain code sends the same event &
      digest as when using `set_code` on a standalone chain.
      
      Close: https://github.com/paritytech/polkadot-sdk/issues/2049
      2d9426f1
    • yjh's avatar
    • Michal Kucharczyk's avatar
      Switch from `tiny-bip39` to `bip39` crate (#2084) · a69da4a8
      Michal Kucharczyk authored
      Switch from: 
      https://crates.io/crates/tiny-bip39
      to:
      https://crates.io/crates/bip39
      
      Required for: https://github.com/paritytech/polkadot-sdk/pull/2044
      a69da4a8
    • Adrian Catangiu's avatar
      Refactor transaction storage pallet to use fungible traits (#1800) · 30f3ad2e
      Adrian Catangiu authored
      
      
      Partial https://github.com/paritytech/polkadot-sdk/issues/226
      
      `frame/transaction-storage`: replace `Currency` with `fungible::*`
      traits
      
      ---------
      
      Signed-off-by: default avatarAdrian Catangiu <[email protected]>
      Co-authored-by: default avatargeorgepisaltu <[email protected]>
      30f3ad2e
    • Liam Aharon's avatar
      contracts migration: remove unnecessary panics (#2079) · ad5163ba
      Liam Aharon authored
      Runtime migration CI is currently failing
      (https://gitlab.parity.io/parity/mirrors/polkadot-sdk/builds/4122083)
      for the contracts testnet due to unnecessary panicing in a `pre_upgrade`
      hook.
      
      Soon idempotency will be enforced
      https://github.com/paritytech/try-runtime-cli/issues/42, in the mean
      time we need to manually fix these issues as they arise.
      
      ---
      
      also removes backticks from the string in `echo`, which caused a
      'command not found' error in ci output
      ad5163ba
    • Liam Aharon's avatar
      Stop `Balances` pallet erroneously double incrementing and decrementing consumers (#1976) · 0aeab381
      Liam Aharon authored
      Closes https://github.com/paritytech/polkadot-sdk/issues/1970
      
      Follow up issue to tackle, once the erroneous double
      incrementing/decrementing has stopped:
      https://github.com/paritytech/polkadot-sdk/issues/2037
      0aeab381
    • Liam Aharon's avatar
      Improve `try-state` developer experience & fix bug (#2019) · d715caa6
      Liam Aharon authored
      Making some devex improvements as I audit our chains adherence to
      try-state invariants, in preparation for automated try-state checks and
      alerting.
      
      Note to reviewer: while you're here, if you have time would be great to
      get your eyes on https://github.com/paritytech/polkadot-sdk/pull/1297
      also since it touches a similar file and I'd like to avoid merge
      conflicts :P
      
      ## Devex Improvements
      
      - Changes the log level of logs informing the user that try-state checks
      are being run for a pallet from debug to info
      - Improves how errors are communicated
      - Errors are logged when they are encountered, rather than after
      everything has been executed
      - Exact pallet the error originated from is included with the error log
        - Clearly see all errors and how many there are, rather than only one
        - Closes #136 
      
      ### Example of new logs
      
      <img width="1185" alt="Screenshot 2023-10-25 at 15 44 44"
      src="https://github.com/paritytech/polkadot-sdk/assets/16665596/b75588a2-1c64-45df-bbc8-bcb8bf8b0fe0">
      
      ### Same but with old logs (run with RUST_LOG=debug)
      
      Notice only informed of one of the errors, and it's unclear which pallet
      it originated
      
      <img width="1185" alt="Screenshot 2023-10-25 at 15 39 01"
      src="https://github.com/paritytech/polkadot-sdk/assets/16665596/e3429cb1-489e-430a-9716-77c052e5dae6">
       
      
      ## Bug fix
      
      When dry-running migrations and `checks.try_state()` is `true`, only run
      `try_state` checks after migrations have been executed. Otherwise,
      `try_state` checks that expect state to be in at a HIGHER storage
      version than is on-chain could incorrectly fail.
      
      ---------
      
      Co-authored-by: command-bot <>
      d715caa6
  4. Oct 29, 2023
    • Davide Galassi's avatar
      Improve Client CLI help readability (#2073) · 70350347
      Davide Galassi authored
      Currently the CLI `-h/--help` commad output is almost unreadable as (for
      some commands) it:
      - doesn't provide a short brief of what the command does.
      - doesn't separate the options description in smaller paragraphs.
      - doesn't use a smart wrap strategy for lines longer than the number of
      columns in the terminal.
      
      Follow some pics taken with a 100 cols wide term
      
      ## Short help (./node -h)
      
      ### Before
      
      
      ![20231028-174531-grim](https://github.com/paritytech/polkadot-sdk/assets/8143589/11b62c3c-dcd5-43f4-ac58-f1b299e3f4b9)
      
      ### After
      
      
      ![20231028-175041-grim](https://github.com/paritytech/polkadot-sdk/assets/8143589/dc08f6fd-b287-40fb-8b33-71a185922104)
      
      
      ## Long help (./node --help)
      
      ### Before
      
      
      ![20231028-175257-grim](https://github.com/paritytech/polkadot-sdk/assets/8143589/9ebdc0ae-54ee-4760-b873-a7e813523cb6)
      
      ### After
      
      
      ![20231028-175155-grim](https://github.com/paritytech/polkadot-sdk/assets/8143589/69cbe5cb-eb2f-46a5-8ebf-76c0cf8c4bad)
      
      ---------
      
      Co-authored-by: command-bot <>
      70350347
    • Vadim Smirnov's avatar
      fix(frame-benchmarking-cli): Pass heap_pages param to WasmExecutor (#2075) · 8ce16ee6
      Vadim Smirnov authored
      In https://github.com/paritytech/substrate/pull/13740 the use of the
      `heap-pages` param inside the `frame-benchmarking-cli` has been removed.
      This results in running out of memory and this PR fixes the heap
      allocation strategy for benchmarks wasm executor.
      8ce16ee6
  5. Oct 27, 2023
    • Sam Johnson's avatar
      upgrade to docify 0.2.6 (#2069) · f46f5a90
      Sam Johnson authored
      Updates `docify` to 0.2.6, which fixes a bug that was preventing nesting
      `#[docify::export]` within sub-items of items that already have
      `#[docify::export]` attached to them from working properly.
      
      Release notes here:
      https://github.com/sam0x17/docify/releases/tag/v0.2.6
      
      cc @ggwpez @Kianenigma
      f46f5a90
    • juangirini's avatar
      feat: FRAME umbrella crate. (#1337) · 43415ef5
      juangirini authored
      
      
      ### Original PR https://github.com/paritytech/substrate/pull/14137
      
      This PR brings in the first version of the "_`frame` umbrella crate_".
      This crate is intended to serve two purposes:
      
      1. documentation
      2. easier development with frame. Ideally, we want most users to be able
      to build a frame-based pallet and runtime using just `frame` (plus
      `scale-codec` and `scale-info`).
      
      The crate is not finalized and is not yet intended for external use.
      Therefore, the version is set to `0.0.1-dev`, this PR is `silent`, and
      the entire crate is hidden behind the `experimental` flag. The main
      intention in merging it early on is to be able to iterate on it in the
      rest of
      [`developer-hub`](https://github.com/paritytech/polkadot-sdk-docs/)
      efforts.
      
      The public API of the `frame` crate is at the moment as follows: 
      
      ```
      pub mod frame
      pub use frame::log
      pub use frame::pallet
      pub mod frame::arithmetic
      pub use frame::arithmetic::<<sp_arithmetic::*>>
      pub use frame::arithmetic::<<sp_arithmetic::traits::*>>
      pub mod frame::deps
      pub use frame::deps::codec
      pub use frame::deps::frame_executive
      pub use frame::deps::frame_support
      pub use frame::deps::frame_system
      pub use frame::deps::scale_info
      pub use frame::deps::sp_api
      pub use frame::deps::sp_arithmetic
      pub use frame::deps::sp_block_builder
      pub use frame::deps::sp_consensus_aura
      pub use frame::deps::sp_consensus_grandpa
      pub use frame::deps::sp_core
      pub use frame::deps::sp_inherents
      pub use frame::deps::sp_io
      pub use frame::deps::sp_offchain
      pub use frame::deps::sp_runtime
      pub use frame::deps::sp_std
      pub use frame::deps::sp_version
      pub mod frame::derive
      pub use frame::derive::CloneNoBound
      pub use frame::derive::Debug
      pub use frame::derive::Debug
      pub use frame::derive::DebugNoBound
      pub use frame::derive::Decode
      pub use frame::derive::Decode
      pub use frame::derive::DefaultNoBound
      pub use frame::derive::Encode
      pub use frame::derive::Encode
      pub use frame::derive::EqNoBound
      pub use frame::derive::PartialEqNoBound
      pub use frame::derive::RuntimeDebug
      pub use frame::derive::RuntimeDebugNoBound
      pub use frame::derive::TypeInfo
      pub use frame::derive::TypeInfo
      pub mod frame::prelude
      pub use frame::prelude::<<frame_support::pallet_prelude::*>>
      pub use frame::prelude::<<frame_system::pallet_prelude::*>>
      pub use frame::prelude::<<sp_std::prelude::*>>
      pub use frame::prelude::CloneNoBound
      pub use frame::prelude::Debug
      pub use frame::prelude::Debug
      pub use frame::prelude::DebugNoBound
      pub use frame::prelude::Decode
      pub use frame::prelude::Decode
      pub use frame::prelude::DefaultNoBound
      pub use frame::prelude::Encode
      pub use frame::prelude::Encode
      pub use frame::prelude::EqNoBound
      pub use frame::prelude::PartialEqNoBound
      pub use frame::prelude::RuntimeDebug
      pub use frame::prelude::RuntimeDebugNoBound
      pub use frame::prelude::TypeInfo
      pub use frame::prelude::TypeInfo
      pub use frame::prelude::frame_system
      pub mod frame::primitives
      pub use frame::primitives::BlakeTwo256
      pub use frame::primitives::H160
      pub use frame::primitives::H256
      pub use frame::primitives::H512
      pub use frame::primitives::Hash
      pub use frame::primitives::Keccak256
      pub use frame::primitives::U256
      pub use frame::primitives::U512
      pub mod frame::runtime
      pub mod frame::runtime::apis
      pub use frame::runtime::apis::<<frame_system_rpc_runtime_api::*>>
      pub use frame::runtime::apis::<<sp_api::*>>
      pub use frame::runtime::apis::<<sp_block_builder::*>>
      pub use frame::runtime::apis::<<sp_consensus_aura::*>>
      pub use frame::runtime::apis::<<sp_consensus_grandpa::*>>
      pub use frame::runtime::apis::<<sp_offchain::*>>
      pub use frame::runtime::apis::<<sp_session::runtime_api::*>>
      pub use frame::runtime::apis::<<sp_transaction_pool::runtime_api::*>>
      pub use frame::runtime::apis::ApplyExtrinsicResult
      pub use frame::runtime::apis::CheckInherentsResult
      pub use frame::runtime::apis::InherentData
      pub use frame::runtime::apis::OpaqueMetadata
      pub use frame::runtime::apis::impl_runtime_apis
      pub use frame::runtime::apis::sp_api
      pub mod frame::runtime::prelude
      pub use frame::runtime::prelude::<<frame_executive::*>>
      pub use frame::runtime::prelude::ConstBool
      pub use frame::runtime::prelude::ConstI128
      pub use frame::runtime::prelude::ConstI16
      pub use frame::runtime::prelude::ConstI32
      pub use frame::runtime::prelude::ConstI64
      pub use frame::runtime::prelude::ConstI8
      pub use frame::runtime::prelude::ConstU128
      pub use frame::runtime::prelude::ConstU16
      pub use frame::runtime::prelude::ConstU32
      pub use frame::runtime::prelude::ConstU64
      pub use frame::runtime::prelude::ConstU8
      pub use frame::runtime::prelude::NativeVersion
      pub use frame::runtime::prelude::RuntimeVersion
      pub use frame::runtime::prelude::construct_runtime
      pub use frame::runtime::prelude::create_runtime_str
      pub use frame::runtime::prelude::derive_impl
      pub use frame::runtime::prelude::frame_support
      pub use frame::runtime::prelude::ord_parameter_types
      pub use frame::runtime::prelude::parameter_types
      pub use frame::runtime::prelude::runtime_version
      pub mod frame::runtime::testing_prelude
      pub use frame::runtime::testing_prelude::BuildStorage
      pub use frame::runtime::testing_prelude::Storage
      pub mod frame::runtime::types_common
      pub type frame::runtime::types_common::AccountId = <<frame::runtime::types_common::Signature as sp_runtime::traits::Verify>::Signer as sp_runtime::traits::IdentifyAccount>::AccountId
      pub type frame::runtime::types_common::BlockNumber = u32
      pub type frame::runtime::types_common::BlockOf<T, Extra> = sp_runtime::generic::block::Block<sp_runtime::generic::header::Header<frame::runtime::types_common::BlockNumber, sp_runtime::traits::BlakeTwo256>, sp_runtime::generic::unchecked_extrinsic::UncheckedExtrinsic<sp_runtime::multiaddress::MultiAddress<frame::runtime::types_common::AccountId, ()>, <T as frame_system::pallet::Config>::RuntimeCall, frame::runtime::types_common::Signature, Extra>>
      pub type frame::runtime::types_common::OpaqueBlock = sp_runtime::generic::block::Block<sp_runtime::generic::header::Header<frame::runtime::types_common::BlockNumber, sp_runtime::traits::BlakeTwo256>, sp_runtime::OpaqueExtrinsic>
      pub type frame::runtime::types_common::Signature = sp_runtime::MultiSignature
      pub type frame::runtime::types_common::SystemSignedExtensionsOf<T> = (frame_system::extensions::check_non_zero_sender::CheckNonZeroSender<T>, frame_system::extensions::check_spec_version::CheckSpecVersion<T>, frame_system::extensions::check_tx_version::CheckTxVersion<T>, frame_system::extensions::check_genesis::CheckGenesis<T>, frame_system::extensions::check_mortality::CheckMortality<T>, frame_system::extensions::check_nonce::CheckNonce<T>, frame_system::extensions::check_weight::CheckWeight<T>)
      pub mod frame::testing_prelude
      pub use frame::testing_prelude::<<frame_executive::*>>
      pub use frame::testing_prelude::<<frame_system::mocking::*>>
      pub use frame::testing_prelude::BuildStorage
      pub use frame::testing_prelude::ConstBool
      pub use frame::testing_prelude::ConstI128
      pub use frame::testing_prelude::ConstI16
      pub use frame::testing_prelude::ConstI32
      pub use frame::testing_prelude::ConstI64
      pub use frame::testing_prelude::ConstI8
      pub use frame::testing_prelude::ConstU128
      pub use frame::testing_prelude::ConstU16
      pub use frame::testing_prelude::ConstU32
      pub use frame::testing_prelude::ConstU64
      pub use frame::testing_prelude::ConstU8
      pub use frame::testing_prelude::NativeVersion
      pub use frame::testing_prelude::RuntimeVersion
      pub use frame::testing_prelude::Storage
      pub use frame::testing_prelude::TestState
      pub use frame::testing_prelude::assert_err
      pub use frame::testing_prelude::assert_err_ignore_postinfo
      pub use frame::testing_prelude::assert_error_encoded_size
      pub use frame::testing_prelude::assert_noop
      pub use frame::testing_prelude::assert_ok
      pub use frame::testing_prelude::assert_storage_noop
      pub use frame::testing_prelude::construct_runtime
      pub use frame::testing_prelude::create_runtime_str
      pub use frame::testing_prelude::derive_impl
      pub use frame::testing_prelude::frame_support
      pub use frame::testing_prelude::frame_system
      pub use frame::testing_prelude::if_std
      pub use frame::testing_prelude::ord_parameter_types
      pub use frame::testing_prelude::parameter_types
      pub use frame::testing_prelude::runtime_version
      pub use frame::testing_prelude::storage_alias
      pub mod frame::traits
      pub use frame::traits::<<frame_support::traits::*>>
      pub use frame::traits::<<sp_runtime::traits::*>>
      ```
      
      ---
      
      The road to full stabilization is
      
      - [ ] https://github.com/paritytech/polkadot-sdk/issues/127
      - [ ] have a more intentional version bump, as opposed to the current bi
      weekly force-major-bump
      - [ ] revise the internal API of `frame`, especially what goes into the
      `prelude`s.
      - [ ] migrate all internal pallets and runtime to use `frame`
      
      ---------
      
      Co-authored-by: default avatarkianenigma <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarFrancisco Aguirre <[email protected]>
      43415ef5
    • Sam Johnson's avatar
      upgrade docify to 0.2.5 (#2052) · 6ca5789d
      Sam Johnson authored
      Updates `docify` to 0.2.5, which fixes some indentation bugs and adds
      the new `#[docify::export_content]` attribute which can be used like
      regular `#[docify::export]` but will only export the _underlying
      contents_ of the item it is attached to, if applicable (otherwise it
      just behaves exactly like `#[docify::export]`).
      
      Release notes here:
      https://github.com/sam0x17/docify/releases/tag/v0.2.5
      
      cc @Kianenigma
      6ca5789d
  6. Oct 26, 2023
    • yjh's avatar
      add `authorities_len` for aura (#2040) · 86228fa4
      yjh authored
      86228fa4
    • Bastian Köcher's avatar
      sp-version: Improve the docs (#2027) · 42707bc9
      Bastian Köcher authored
      
      
      Co-authored-by: default avatarordian <[email protected]>
      42707bc9
    • Alin Dima's avatar
      cumulus: fix test runtimes panic (#2039) · 1b08bdd2
      Alin Dima authored
      the min slot duration should be 0 only if the `experimental` feature is
      enabled. otherwise, the runtime will panic on a division by 0.
      1b08bdd2
    • Dastan's avatar
      Expose collection attributes from `Inspect` trait (#1914) · 0bcebac4
      Dastan authored
      # Description
      
      - What does this PR do?
      
      While working with `pallet_nfts` through `nonfungibles_v2` traits
      `Inspect, Mutate`, I found out that once you have set the collection
      attribute with `<Nfts as Mutate>::set_collection_attribute()`, it's not
      possible to read it with `<Nfts as Inspect>::collection_attribute()`
      since they use different `namespace` values. When setting the attribute,
      `AttributeNamespace::Pallet` is used, while
      `AttributeNamespace::CollectionOwner` is used when reading.
      
      more context:
      https://github.com/freeverseio/laos/issues/7#issuecomment-1766137370
      
      This PR makes `item` an optional parameter in
      `Inspect::system_attribute()`, to be able to read collection attributes.
      
      - Why are these changes needed?
      
      To be able to read collection level attributes when reading attributes
      of the collection. It will be possible to read collection attributes by
      passing `None` for `item`
      
      - How were these changes implemented and what do they affect?
      
      `NftsApi` is also affected and `NftsApi::system_attribute()` now accepts
      optional `item` parameter.
      
      ## Breaking change
      
      Because of the change in the `NftsApi::system_attribute()` method's
      `item` param, parachains who integrated the `NftsApi` need to update
      their API code and frontend integrations accordingly. AssetHubs are
      unaffected since the NftsApi wasn't released on those parachains yet.
      0bcebac4
  7. Oct 25, 2023
    • Oliver Tale-Yazdi's avatar
    • Xiliang Chen's avatar
      publish pallet-root-testing (#2017) · b7a8532d
      Xiliang Chen authored
      so we can use it in our tests
      b7a8532d
    • PG Herveou's avatar
      Contracts: Add benchmarks to include files (#2022) · 3148063a
      PG Herveou authored
      Project that includes pallet-contracts via crates.io will fail to run 
      ```bash
      cargo check --features=runtime-benchmarks
      ```
      
      without the currently not included benchmarks files
      3148063a
    • Liam Aharon's avatar
      Small optimisation to `--profile dev` wasm builds (#1851) · ff3a3bca
      Liam Aharon authored
      `wasm-builder` was adjusted to default to building wasm blobs in
      `release` mode even when cargo is in `debug` because `debug` wasm is too
      slow.
      
      A side effect of this was `.compact` and `.compact.compressed` getting
      built when the dev is running build in `debug`, adding ~5s to the build
      time of every wasm runtime.
      
      I think it's reasonable to assume if the dev is running `debug` build
      they want to optimise speed and do not care about the size of the wasm
      binary. Compacting a blob has negligible impact on its actual
      performance.
      
      In this PR, I adjusted the behavior of the wasm builder so it does not
      produce `.compact` or `.compact.compressed` wasm when the user is
      running in `debug`. The builder will continue to produce the bloaty wasm
      in release mode unless it is overriden with an env var.
      
      As suggested by @koute in review, also refactored the
      `maybe_compact_wasm_and_copy_blobs` into multiple funuctions, and
      renamed things to better support RISC-V in the future.
      
      ---
      
      There is no `T-runtime` label so @KiChjang
      
       told me to put `T1-FRAME` :)
      
      ---------
      
      Co-authored-by: default avatarKoute <[email protected]>
      ff3a3bca
  8. Oct 24, 2023
    • Bastian Köcher's avatar
    • drskalman's avatar
      Application Crypto and BEEFY Support for paired (ECDSA,BLS) crypto (#1815) · fbd57771
      drskalman authored
      
      
      Next step in process of making BEEFY being able to generate both ECDSA
      and BLS signature after #1705. It allows BEEFY to use a pair of ECDSA
      and BLS key as a AuthorityId.
      
      ---------
      
      Co-authored-by: default avatarDavide Galassi <[email protected]>
      Co-authored-by: default avatarRobert Hambrock <[email protected]>
      fbd57771
    • Oliver Tale-Yazdi's avatar
      Improve features dev-ex (#1831) · 4a443567
      Oliver Tale-Yazdi authored
      
      
      Adds a config file that allows to run `zepter` without any arguments in
      the workspace to address all issues.
      A secondary workflow for the CI is provided as `zepter run check`. Both
      the formatting and linting are now in one check for efficiancy.
      
      The latest version also detects some more things that `featalign` was
      already showing.
      
      Error message [in the
      CI](https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/3916205)
      now looks like this:
      ```pre
      ...
      crate 'test-parachains' (/Users/vados/Documents/work/polkadot-sdk/polkadot/parachain/test-parachains/Cargo.toml)
        feature 'std'
          must propagate to:
            parity-scale-codec
      Found 55 issues (run with --fix to fix).
      Error: Command 'lint propagate-feature' failed with exit code 1
      
      Polkadot-SDK uses the Zepter CLI to detect abnormalities in the feature configuration.
      It looks like one more more checks failed; please check the console output. You can try to automatically address them by running `zepter`.
      Otherwise please ask directly in the Merge Request, GitHub Discussions or on Matrix Chat, thank you.
      
      For more information, see:
        - https://github.com/paritytech/polkadot-sdk/issues/1831
        - https://github.com/ggwpez/zepter
      ```
      
      TODO:
      - [x] Check that CI fails correctly
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      4a443567
    • Marcin S.'s avatar
      e39253c0
    • georgepisaltu's avatar
      Make `IdentityInfo` generic in `pallet-identity` (#1661) · 91851951
      georgepisaltu authored
      Fixes #179 
      
      # Description
      
      This PR makes the structure containing identity information used in
      `pallet-identity` generic through the pallet `Config`. Additionally, the
      old structure is now available in a separate module called `simple`
      (pending rename) and is compatible with the new interface.
      
      Another change in this PR is that while the `additional` field in
      `IdentityInfo` stays for backwards compatibility reasons, the associated
      costs are stil present in the pallet through the `additional` function
      in the `IdentityInformationProvider` interface. This function is marked
      as deprecated as it is only a temporary solution to the backwards
      compatibility problem we had. In short, we could have removed the
      additional fields in the struct and done a migration, but we chose to
      wait and do it off-chain through the genesis of the system parachain.
      After we move the identity pallet to the parachain, additional fields
      will be migrated into the existing fields and the `additional` key-value
      store will be removed. Until that happens, this interface will provide
      the necessary information to properly account for the associated costs.
      
      Additionally, this PR fixes an unrelated issue; the `IdentityField` enum
      used to represent the fields as bitflags couldn't store more than 8
      fields, even though it was marked as `#[repr(u64)]`. This was because of
      the `derive` implementation of `TypeInfo`, which assumed `u8` semantics.
      The custom implementation of this trait in
      https://github.com/paritytech/polkadot-sdk/commit/0105cc03
      
      
      fixes the issue.
      
      ---------
      
      Signed-off-by: default avatargeorgepisaltu <[email protected]>
      Co-authored-by: default avatarSam Johnson <[email protected]>
      Co-authored-by: default avatarjoe petrowski <[email protected]>
      91851951
    • 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
    • Bastian Köcher's avatar
      `CheckWeight`: Add more logging (#1996) · a5a2432d
      Bastian Köcher authored
      This adds more logging to `CheckWeight` to get a better understanding
      why a transaction exhausts resources.
      a5a2432d
    • Brian Anderson's avatar
      Update wasm-opt to 0.116 (#1995) · 39c04fdd
      Brian Anderson authored
      Just keeping wasm-opt up to date.
      
      I don't see anything in the [binaryen
      changelog](https://github.com/WebAssembly/binaryen/blob/main/CHANGELOG.md)
      that should affect substrate.
      
      This release includes dwarf passes that were accidentally omitted from
      previous versions of the wasm-opt crate. I suspect this will not affect
      substrate as their omission hasn't been noticed until recently.
      39c04fdd
  9. Oct 23, 2023
    • Muharem Ismailov's avatar
      Resolve Credit to Account impls of `OnUnbalanced` trait (#1876) · d0fd2660
      Muharem Ismailov authored
      Implements the `OnUnbalanced` trait to resolve received credits to the
      specified account. Credits that fail to resolve are dropped.
      
      ### Motivation 
      Throughout the codebase, several types implement the trait with the same
      behavior. While some currently utilize older currency trait, a migration
      to the new fungible/s is anticipated for all. Examples:
      [1](https://github.com/paritytech/polkadot-sdk/blob/1b34571c/cumulus/parachains/common/src/impls.rs#L37),
      [2](https://github.com/paritytech/polkadot-sdk/blob/1b34571c/polkadot/runtime/common/src/impls.rs#L36),
      [3](https://github.com/paritytech/polkadot-sdk/blob/1b34571c/substrate/bin/node/runtime/src/impls.rs#L40),
      [4](https://github.com/paritytech/polkadot-sdk/blob/1b34571c/substrate/bin/node/runtime/src/lib.rs#L1969),
      [5](https://github.com/paritytech/polkadot-sdk/blob/1b34571c/substrate/frame/broker/src/mock.rs#L198),
      [6](https://github.com/paritytech/polkadot-sdk/blob/1b34571c/substrate/frame/society/src/lib.rs#L2031),
      [7](https://github.com/paritytech/polkadot-sdk/blob/1b34571c/substrate/frame/treasury/src/lib.rs#L1118)
      d0fd2660
    • aj3n's avatar
      wasm-builder: manually set CARGO_TARGET_DIR (#1951) · 38c3c625
      aj3n authored
      ✄
      -----------------------------------------------------------------------------
      
      Thank you for your Pull Request! 🙏 Please make sure it follows the
      contribution guidelines outlined in
      [this
      document](https://github.com/paritytech/polkadot-sdk/blob/master/docs/CONTRIBUTING.md)
      and fill
      out the sections below. Once you're ready to submit your PR for review,
      please
      delete this section and leave only the text under the "Description"
      heading.
      
      # Description
      
      *Please include a summary of the changes and the related issue. Please
      also include relevant motivation and context,
      including:*
      
      - What does this PR do?
      
      make 'substrate-wasm-builder' manually set 'CARGO_TARGET_DIR' to
      '$project_dir/target' while building instead of unset
      'CARGO_TARGET_DIR';
      
      - Why are these changes needed?
      
      If you using this in the `build.rs` with following content in your
      `~/.cargo/config.toml':
      
          [build]
          target-dir = "target"
      
      the build process will stuck because of dead lock -- two `cargo build`
      on same target directory in the same time.
      There is already an attempt to avoid such dead lock by unset the
      `CARGO_TARGET_DIR`, but for users with config above in his build
      enviroment (like me), this workaround won't work.
      
      - How were these changes implemented and what do they affect?
      
      Instead of unset 'CARGO_TARGET_DIR', we set 'CARGO_TARGET_DIR' to
      '$project/target/', which is already assumed to be true by rest of the
      code.
      
      *Use [Github semantic
      
      linking](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)
      to address any open issues this PR relates to or closes.*
      
      Fixes # (issue number, *if applicable*)
      
      Closes # (issue number, *if applicable*)
      
      # Checklist
      
      - [x] My PR includes a detailed description as outlined in the
      "Description" section above
      - [ ] My PR follows the [labeling requirements](CONTRIBUTING.md#Process)
      of this project (at minimum one label for `T`
        required)
      - [ ] I have made corresponding changes to the documentation (if
      applicable)
      - [ ] I have added tests that prove my fix is effective or that my
      feature works (if applicable)
      
      You can remove the "Checklist" section once all have been checked. Thank
      you for your contribution!
      
      ✄
      -----------------------------------------------------------------------------
      
      I have built my project with this fix, there's still some warnings with
      `build.target-dir` set but the building process won't hang.
      I haven't found related issue in this repo. But I did find one issue
      [here](https://github.com/substrate-developer-hub/substrate-node-template/issues/116).
      38c3c625