Skip to content
  1. Apr 02, 2024
    • Serban Iorga's avatar
      Align dependencies with `parity-bridges-common` (#3937) · 8e95a3e1
      Serban Iorga authored
      Working towards migrating the `parity-bridges-common` repo inside
      `polkadot-sdk`. This PR upgrades some dependencies in order to align
      them with the versions used in `parity-bridges-common`
      
      Related to
      https://github.com/paritytech/parity-bridges-common/issues/2538
      8e95a3e1
    • Alexandru Vasile's avatar
      chainHead: Allow methods to be called from within a single connection context... · 7430f413
      Alexandru Vasile authored
      
      chainHead: Allow methods to be called from within a single connection context and limit connections (#3481)
      
      This PR ensures that the chainHead RPC class can be called only from
      within the same connection context.
      
      The chainHead methods are now registered as raw methods. 
      - https://github.com/paritytech/jsonrpsee/pull/1297
      The concept of raw methods is introduced in jsonrpsee, which is an async
      method that exposes the connection ID:
      The raw method doesn't have the concept of a blocking method. Previously
      blocking methods are now spawning a blocking task to handle their
      blocking (ie DB) access. We spawn the same number of tasks as before,
      however we do that explicitly.
      
      Another approach would be implementing a RPC middleware that captures
      and decodes the method parameters:
      - https://github.com/paritytech/polkadot-sdk/pull/3343
      However, that approach is prone to errors since the methods are
      hardcoded by name. Performace is affected by the double deserialization
      that needs to happen to extract the subscription ID we'd like to limit.
      Once from the middleware, and once from the methods itself.
      
      This PR paves the way to implement the chainHead connection limiter:
      - https://github.com/paritytech/polkadot-sdk/issues/1505
      Registering tokens (subscription ID / operation ID) on the
      `RpcConnections` could be extended to return an error when the maximum
      number of operations is reached.
      
      While at it, have added an integration-test to ensure that chainHead
      methods can be called from within the same connection context.
      
      Before this is merged, a new JsonRPC release should be made to expose
      the `raw-methods`:
      - [x] Use jsonrpsee from crates io (blocked by:
      https://github.com/paritytech/jsonrpsee/pull/1297)
      
      Closes: https://github.com/paritytech/polkadot-sdk/issues/3207
      
      
      cc @paritytech/subxt-team
      
      ---------
      
      Signed-off-by: default avatarAlexandru Vasile <[email protected]>
      Co-authored-by: default avatarNiklas Adolfsson <[email protected]>
      7430f413
    • Adrian Catangiu's avatar
      beefy: error logs for validators with dummy keys (#3939) · 5eff3f94
      Adrian Catangiu authored
      
      
      This outputs:
      ```
      2024-04-02 14:36:02.135 ERROR tokio-runtime-worker beefy: 🥩 for session starting at block 21990151
      no BEEFY authority key found in store, you must generate valid session keys
      (https://wiki.polkadot.network/docs/maintain-guides-how-to-validate-polkadot#generating-the-session-keys)
      ```
      error log entry, once every session, for nodes running with
      `Role::Authority` that have no public BEEFY key in their keystore
      
      ---------
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      5eff3f94
    • Sam Johnson's avatar
      Update derive syn parse 0.2.0 (+ docify) (#3920) · 9a62de27
      Sam Johnson authored
      
      
      derive-syn-parse v0.2.0 came out recently which (finally) adds support
      for syn 2x.
      
      Upgrading to this will remove many of the places where syn 1x was still
      compiling alongside syn 2x in the polkadot-sdk workspace.
      
      This also upgrades `docify` to 0.2.8 which is the version that upgrades
      derive-syn-pasre to 0.2.0.
      
      Additionally, this consolidates the `docify` versions in the repo to all
      use the latest, and in one case upgrades to the 0.2x syntax where 0.1.x
      was still being used.
      
      ---------
      
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      9a62de27
  2. Apr 01, 2024
    • Andrei Sandu's avatar
      pallet-scheduler: fix test (#3923) · bf1ca86f
      Andrei Sandu authored
      
      
      fix https://github.com/paritytech/polkadot-sdk/issues/3921
      
      ---------
      
      Signed-off-by: default avatarAndrei Sandu <[email protected]>
      bf1ca86f
    • Ross Bulat's avatar
      Pools: Make `PermissionlessWithdraw` the default claim permission (#3438) · b772cb57
      Ross Bulat authored
      Related Issue https://github.com/paritytech/polkadot-sdk/issues/3398
      
      This PR makes permissionless withdrawing the default option, giving any
      network participant access to claim pool rewards on member's behalf. Of
      course, members can still opt out of this by setting a `Permissioned`
      claim permission.
      
      Permissionless claiming has been a part of the nomination pool pallet
      for around 9 months now, with very limited uptake (~4% of total pool
      members). 1.6% of pool members are using `PermissionlessAll`, strongly
      suggesting it is not wanted - it is too ambiguous and doesn't provide
      guidance to claimers.
      
      Stakers expect rewards to be claimed on their behalf by default - I have
      expanded upon this in detail within the [accompanying issue's
      discussion](https://github.com/paritytech/polkadot-sdk/issues/3398).
      Other protocols have this behaviour, whereby staking rewards are
      received without the staker having to take any action. From this
      perspective, permissionless claiming is not intuitive for pool members.
      As evidence of this, over 150,000 DOT is currently unclaimed on
      Polkadot, and is growing at a non-linear rate.
      b772cb57
    • Matteo Muraca's avatar
      Removed `pallet::getter` usage from `pallet-alliance` (#3738) · a2c9ab8c
      Matteo Muraca authored
      Part of #3326 
      
      cc @Kianenigma @ggwpez @liamaharon
      
       
      
      polkadot address: 12poSUQPtcF1HUPQGY3zZu2P8emuW9YnsPduA4XG3oCEfJVp
      
      ---------
      
      Signed-off-by: default avatarMatteo Muraca <[email protected]>
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      a2c9ab8c
  3. Mar 31, 2024
    • Liam Aharon's avatar
      Tokens in FRAME Docs (#2802) · 41257069
      Liam Aharon authored
      
      
      Closes https://github.com/paritytech/polkadot-sdk-docs/issues/70
      
      WIP PR for an overview of how to develop tokens in FRAME. 
      
      - [x] Tokens in Substrate Ref Doc
        - High-level overview of the token-related logic in FRAME
      - Improve docs with better explanation of how holds, freezes, ed, free
      balance, etc, all work
      - [x] Update `pallet_balances` docs
        - Clearly mark what is deprecated (currency)
      - [x] Write fungible trait docs
      - [x] Evaluate and if required update `pallet_assets`, `pallet_uniques`,
      `pallet_nfts` docs
      - [x] Absorb https://github.com/paritytech/polkadot-sdk/pull/2683/
      - [x] Audit individual trait method docs, and improve if possible
      
      Feel free to suggest additional TODOs for this PR in the comments
      
      ---------
      
      Co-authored-by: default avatarBill Laboon <[email protected]>
      Co-authored-by: default avatarFrancisco Aguirre <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarSebastian Kunert <[email protected]>
      41257069
  4. Mar 29, 2024
  5. Mar 28, 2024
    • dharjeezy's avatar
      Try State Hook for Beefy (#3246) · 79b08d88
      dharjeezy authored
      Part of: https://github.com/paritytech/polkadot-sdk/issues/239
      
      Polkadot address: 12GyGD3QhT4i2JJpNzvMf96sxxBLWymz4RdGCxRH5Rj5agKW
      79b08d88
    • Rodrigo Quelhas's avatar
      Update benchmarking README.md (#3862) · 987f1c24
      Rodrigo Quelhas authored
      
      
      Fix reference links
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      987f1c24
    • PG Herveou's avatar
      Contracts: add test builders (#3796) · 78b1cab9
      PG Herveou authored
      Cleanup tests (-2.7k lines !) using some builder patterns to build
      pallet_contracts api calls
      78b1cab9
    • Alessandro Siniscalchi's avatar
      [parachain-template] runtime API Implementations into `mod apis` (#3817) · 60846a08
      Alessandro Siniscalchi authored
      This PR significantly refactors the runtime API implementations to
      improve project structure, maintainability, and readability. Key changes
      include:
      
      1. **Enhancing Visibility**: Adjusts the visibility of
      `RUNTIME_API_VERSIONS` in `impl_runtime_apis.rs` to `pub`, making it
      accessible throughout the runtime module.
      2. **Centralizing API Implementations**: Introduces a new file,
      `apis.rs`, within the parachain template's runtime directory.
      3. **Streamlining `lib.rs`**: Updates the main runtime library file to
      reflect these structural changes. It removes redundant API
      implementations and points `VERSION` to the newly exposed
      `RUNTIME_API_VERSIONS` from `apis.rs`, simplifying the overall runtime
      configuration.
      
      ### Motivations Behind the Refactoring:
      - **Improved Project Structure**: Centralizing API implementations in
      `apis.rs` offers a clearer, more navigable project structure.
      - **Better Readability**: Streamlining `lib.rs` and reducing clutter
      enhance readability, making it easier for new contributors to understand
      the project layout and logic.
      
      ### Summary of Changes:
      - Made `RUNTIME_API_VERSIONS` public in `impl_runtime_apis.rs`.
      - Added `apis.rs` to centralize runtime API implementations.
      - Streamlined `lib.rs` to adjust to the refactored project structure.
      60846a08
    • Tin Chung's avatar
      Deprecate scheduler traits v1 and v2 (#3718) · daf04f01
      Tin Chung authored
      
      
      This PR add `#[deprecated]` attribute to v1 and v2 of the schedule
      trait. Proposed in this issue:
      https://github.com/paritytech/polkadot-sdk/issues/3676
      
      ```rust
      #[allow(deprecated)]
      #[deprecated = "traits::schedule::v1 is deprecated. Please use v3 instead."]
      pub mod v1 {
      ...
      }
      
      #[allow(deprecated)]
      #[deprecated = "traits::schedule::v2 is deprecated. Please use v3 instead."]
      pub mod v2 {
      ...
      }
      ```
      
      polkadot address: 19nSqFQorfF2HxD3oBzWM3oCh4SaCRKWt1yvmgaPYGCo71J
      
      ---------
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarLiam Aharon <[email protected]>
      daf04f01
  6. Mar 27, 2024
    • Bastian Köcher's avatar
      pallet-referenda: Detect incorrect pre-image length (#3850) · 5d314eb0
      Bastian Köcher authored
      There has been a case that a referenda failed because the length given
      to `submit` was incorrect. The pallet can actually check the length if
      the pre-image already exists to ensure that these kind of issues are not
      happening again.
      5d314eb0
    • Bastian Köcher's avatar
      pallet-scheduler: Unrequest call on failed lookup (#3849) · 597ea920
      Bastian Köcher authored
      When the scheduler fails to lookup a `call`, it should unrequest it,
      because it will not be required anymore.
      597ea920
    • Gonçalo Pestana's avatar
      Extrinsic to restore corrupt staking ledgers (#3706) · bbdbeb7e
      Gonçalo Pestana authored
      This PR adds a new extrinsic `Call::restore_ledger ` gated by
      `StakingAdmin` origin that restores a corrupted staking ledger. This
      extrinsic will be used to recover ledgers that were affected by the
      issue discussed in
      https://github.com/paritytech/polkadot-sdk/issues/3245.
      
      The extrinsic will re-write the storage items associated with a stash
      account provided as input parameter. The data used to reset the ledger
      can be either i) fetched on-chain or ii) partially/totally set by the
      input parameters of the call.
      
      In order to use on-chain data to restore the staking locks, we need a
      way to read the current lock in the balances pallet. This PR adds a
      `InspectLockableCurrency` trait and implements it in the pallet
      balances. An alternative would be to tightly couple staking with the
      pallet balances but that's inelegant (an example of how it would look
      like in [this
      branch](https://github.com/paritytech/polkadot-sdk/tree/gpestana/ledger-badstate-clean_tightly)).
      
      More details on the type of corruptions and corresponding fixes
      https://hackmd.io/DLb5jEYWSmmvqXC9ae4yRg?view#/
      
      We verified that the `Call::restore_ledger` does fix all current
      corrupted ledgers in Polkadot and Kusama. You can verify it here
      https://hackmd.io/v-XNrEoGRpe7APR-EZGhOA.
      
      **Changes introduced**
      - Adds `Call::restore_ledger ` extrinsic to recover a corrupted ledger;
      - Adds trait `frame_support::traits::currency::InspectLockableCurrency`
      to allow external pallets to read current locks given an account and
      lock ID;
      - Implements the `InspectLockableCurrency` in the pallet-balances.
      - Adds staking locks try-runtime checks
      (https://github.com/paritytech/polkadot-sdk/issues/3751)
      
      **Todo**
      - [x] benchmark `Call::restore_ledger`
      - [x] throughout testing of all ledger recovering cases
      - [x] consider adding the staking locks try-runtime checks to this PR
      (https://github.com/paritytech/polkadot-sdk/issues/3751)
      - [x] simulate restoring all ledgers
      (https://hackmd.io/Dsa2tvhISNSs7zcqriTaxQ?view) in Polkadot and Kusama
      using chopsticks -- https://hackmd.io/v-XNrEoGRpe7APR-EZGhOA
      
      Related to https://github.com/paritytech/polkadot-sdk/issues/3245
      Closes https://github.com/paritytech/polkadot-sdk/issues/3751
      
      ---------
      
      Co-authored-by: command-bot <>
      bbdbeb7e
    • Ermal Kaleci's avatar
      process enqueued messages on idle (#3844) · 8342947b
      Ermal Kaleci authored
      
      
      This will make it possible to use remaining weight on idle for
      processing enqueued messages.
      More context here https://github.com/paritytech/polkadot-sdk/issues/3709
      
      ---------
      
      Co-authored-by: default avatarAdrian Catangiu <[email protected]>
      8342947b
    • Alexandru Vasile's avatar
      authority-discovery: Set intervals to start when authority keys changes (#3764) · 5ac32ee2
      Alexandru Vasile authored
      The authority-discovery mechanism has implemented a few exponential
      timers for:
      - publishing the authority records
      - goes from 2 seconds (when freshly booted) to 1 hour if the node is
      long-running
        - set to 1 hour after successfully publishing the authority record
      - discovering other authority records
      - goes from 2 seconds (when freshly booted) to 10 minutes if the node is
      long-running
      
      This PR resets the exponential publishing and discovery interval to
      defaults ensuring that long-running nodes:
      - will retry publishing the authority records as aggressively as freshly
      booted nodes
      - Currently, if a long-running node fails to publish the DHT record when
      the keys change (ie DhtEvent::ValuePutFailed), it will only retry after
      1 hour
      - will rediscover other authorities faster (since there is a chance that
      other authority keys changed)
      
      The subp2p-explorer has difficulties discovering the authorities when
      the authority set changes in the first few hours. This might be entirely
      due to the recursive nature of the DHT and the needed time to propagate
      the records. However, there is a small chance that the authority
      publishing failed and is only retried in 1h.
      
      Let me know if this makes sense 🙏
      
       
      
      cc @paritytech/networking
      
      ---------
      
      Signed-off-by: default avatarAlexandru Vasile <[email protected]>
      Co-authored-by: default avatarDmitry Markin <[email protected]>
      5ac32ee2
    • Francisco Aguirre's avatar
      pallet-xcm: Deprecate `execute` and `send` in favor of `execute_blob` and `send_blob` (#3749) · feee773d
      Francisco Aguirre authored
      
      
      `execute` and `send` try to decode the xcm in the parameters before
      reaching the filter line.
      The new extrinsics decode only after the filter line.
      These should be used instead of the old ones.
      
      ## TODO
      - [x] Tests
      - [x] Generate weights
      - [x] Deprecation issue ->
      https://github.com/paritytech/polkadot-sdk/issues/3771
      - [x] PRDoc
      - [x] Handle error in pallet-contracts
      
      This would make writing XCMs in PJS Apps more difficult, but here's the
      fix for that: https://github.com/polkadot-js/apps/pull/10350.
      Already deployed! https://polkadot.js.org/apps/#/utilities/xcm
      
      Supersedes https://github.com/paritytech/polkadot-sdk/pull/1798/
      
      ---------
      
      Co-authored-by: default avatarPG Herveou <[email protected]>
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarAdrian Catangiu <[email protected]>
      feee773d
  7. Mar 26, 2024
    • Bastian Köcher's avatar
      westend: `SignedPhase` is a constant (#3646) · 0c15d887
      Bastian Köcher authored
      
      
      In preparation for the merkleized metadata, we need to ensure that
      constants are actually constant. If we want to test the unsigned phase
      we could for example just disable signed voter. Or we add some extra
      mechanism to the pallet to disable the signed phase from time to time.
      
      ---------
      
      Co-authored-by: default avatarAnkan <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      0c15d887
    • Tsvetomir Dimitrov's avatar
      Migrate parachain swaps to Coretime (#3714) · 90234543
      Tsvetomir Dimitrov authored
      This PR notifies broker pallet for any parachain slot swaps performed on
      the relay chain. This is achieved by registering an `OnSwap` for the the
      `coretime` pallet. The hook sends XCM message to the broker chain and
      invokes a new extrinsic `swap_leases` which updates `Leases` storage
      item (which keeps the legacy parachain leases).
      
      I made two assumptions in this PR:
      1.
      [`Leases`](https://github.com/paritytech/polkadot-sdk/blob/4987d798/substrate/frame/broker/src/lib.rs#L120)
      in `broker` pallet and
      [`Leases`](https://github.com/paritytech/polkadot-sdk/blob/4987d798
      
      /polkadot/runtime/common/src/slots/mod.rs#L118)
      in `slots` pallet are in sync.
      2. `swap_leases` extrinsic from `broker` pallet can be triggered only by
      root or by the XCM message from the relay chain. If not - the extrinsic
      will generate an error and do nothing.
      
      As a side effect from the changes `OnSwap` trait is moved from
      runtime/common/traits.rs to runtime/parachains. Otherwise it is not
      accessible from `broker` pallet.
      
      Closes https://github.com/paritytech/polkadot-sdk/issues/3552
      
      TODOs:
      
      - [x] Weights
      - [x] Tests
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatareskimor <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      90234543
    • Dcompoze's avatar
      Fix spelling mistakes across the whole repository (#3808) · 002d9260
      Dcompoze authored
      **Update:** Pushed additional changes based on the review comments.
      
      **This pull request fixes various spelling mistakes in this
      repository.**
      
      Most of the changes are contained in the first **3** commits:
      
      - `Fix spelling mistakes in comments and docs`
      
      - `Fix spelling mistakes in test names`
      
      - `Fix spelling mistakes in error messages, panic messages, logs and
      tracing`
      
      Other source code spelling mistakes are separated into individual
      commits for easier reviewing:
      
      - `Fix the spelling of 'authority'`
      
      - `Fix the spelling of 'REASONABLE_HEADERS_IN_JUSTIFICATION_ANCESTRY'`
      
      - `Fix the spelling of 'prev_enqueud_messages'`
      
      - `Fix the spelling of 'endpoint'`
      
      - `Fix the spelling of 'children'`
      
      - `Fix the spelling of 'PenpalSiblingSovereignAccount'`
      
      - `Fix the spelling of 'PenpalSudoAccount'`
      
      - `Fix the spelling of 'insufficient'`
      
      - `Fix the spelling of 'PalletXcmExtrinsicsBenchmark'`
      
      - `Fix the spelling of 'subtracted'`
      
      - `Fix the spelling of 'CandidatePendingAvailability'`
      
      - `Fix the spelling of 'exclusive'`
      
      - `Fix the spelling of 'until'`
      
      - `Fix the spelling of 'discriminator'`
      
      - `Fix the spelling of 'nonexistent'`
      
      - `Fix the spelling of 'subsystem'`
      
      - `Fix the spelling of 'indices'`
      
      - `Fix the spelling of 'committed'`
      
      - `Fix the spelling of 'topology'`
      
      - `Fix the spelling of 'response'`
      
      - `Fix the spelling of 'beneficiary'`
      
      - `Fix the spelling of 'formatted'`
      
      - `Fix the spelling of 'UNKNOWN_PROOF_REQUEST'`
      
      - `Fix the spelling of 'succeeded'`
      
      - `Fix the spelling of 'reopened'`
      
      - `Fix the spelling of 'proposer'`
      
      - `Fix the spelling of 'InstantiationNonce'`
      
      - `Fix the spelling of 'depositor'`
      
      - `Fix the spelling of 'expiration'`
      
      - `Fix the spelling of 'phantom'`
      
      - `Fix the spelling of 'AggregatedKeyValue'`
      
      - `Fix the spelling of 'randomness'`
      
      - `Fix the spelling of 'defendant'`
      
      - `Fix the spelling of 'AquaticMammal'`
      
      - `Fix the spelling of 'transactions'`
      
      - `Fix the spelling of 'PassingTracingSubscriber'`
      
      - `Fix the spelling of 'TxSignaturePayload'`
      
      - `Fix the spelling of 'versioning'`
      
      - `Fix the spelling of 'descendant'`
      
      - `Fix the spelling of 'overridden'`
      
      - `Fix the spelling of 'network'`
      
      Let me know if this structure is adequate.
      
      **Note:** The usage of the words `Merkle`, `Merkelize`, `Merklization`,
      `Merkelization`, `Merkleization`, is somewhat inconsistent but I left it
      as it is.
      
      ~~**Note:** In some places the term `Receival` is used to refer to
      message reception, IMO `Reception` is the correct word here, but I left
      it as it is.~~
      
      ~~**Note:** In some places the term `Overlayed` is used instead of the
      more acceptable version `Overlaid` but I also left it as it is.~~
      
      ~~**Note:** In some places the term `Applyable` is used instead of the
      correct version `Applicable` but I also left it as it is.~~
      
      **Note:** Some usage of British vs American english e.g. `judgement` vs
      `judgment`, `initialise` vs `initialize`, `optimise` vs `optimize` etc.
      are both present in different places, but I suppose that's
      understandable given the number of contributors.
      
      ~~**Note:** There is a spelling mistake in `.github/CODEOWNERS` but it
      triggers errors in CI when I make changes to it, so I left it as it
      is.~~
      002d9260
  8. Mar 25, 2024
  9. Mar 24, 2024
  10. Mar 22, 2024
    • Dmitry Markin's avatar
      Make public addresses go first in authority discovery DHT records (#3757) · 9d2963c2
      Dmitry Markin authored
      Make sure explicitly set by the operator public addresses go first in
      the authority discovery DHT records.
      
      Also update `Discovery` behavior to eliminate duplicates in the returned
      addresses.
      
      This PR should improve situation with
      https://github.com/paritytech/polkadot-sdk/issues/3519.
      
      Obsoletes https://github.com/paritytech/polkadot-sdk/pull/3657.
      9d2963c2
  11. Mar 21, 2024
  12. Mar 20, 2024
    • bader y's avatar
      Defensive Programming in Substrate Reference Document (#2615) · b686bfef
      bader y authored
      
      
      _This PR is being continued from
      https://github.com/paritytech/polkadot-sdk/pull/2206, which was closed
      when the developer_hub was merged._
      closes https://github.com/paritytech/polkadot-sdk-docs/issues/44
      
      ---
      # Description
      
      This PR adds a reference document to the `developer-hub` crate (see
      https://github.com/paritytech/polkadot-sdk/pull/2102). This specific
      reference document covers defensive programming practices common within
      the context of developing a runtime with Substrate.
      
      In particular, this covers the following areas: 
      
      - Default behavior of how Rust deals with numbers in general
      - How to deal with floating point numbers in runtime / fixed point
      arithmetic
      - How to deal with Integer overflows
      - General "safe math" / defensive programming practices for common
      pallet development scenarios
      - Defensive traits that exist within Substrate, i.e.,
      `defensive_saturating_add `, `defensive_unwrap_or`
      - More general defensive programming examples (keep it concise)
      - Link to relevant examples where these practices are actually in
      production / being used
      - Unwrapping (or rather lack thereof) 101
      
      todo
      -- 
      - [x] Apply feedback from previous PR
      - [x] This may warrant a PR to append some of these docs to
      `sp_arithmetic`
      
      ---------
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: default avatarGonçalo Pestana <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarFrancisco Aguirre <[email protected]>
      Co-authored-by: default avatarRadha <[email protected]>
      b686bfef
    • dependabot[bot]'s avatar
      Bump anyhow from 1.0.75 to 1.0.81 (#3752) · bb973aa0
      dependabot[bot] authored
      Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.75 to 1.0.81.
      <details>
      <summary>Release notes</summary>
      <p><em>Sourced from <a
      href="https://github.com/dtolnay/anyhow/releases">anyhow's
      releases</a>.</em></p>
      <blockquote>
      <h2>1.0.81</h2>
      <ul>
      <li>Make backtrace support available when using -Dwarnings (<a
      href="https://redirect.github.com/dtolnay/anyhow/issues/354">#354</a>)</li>
      </ul>
      <h2>1.0.80</h2>
      <ul>
      <li>Fix unused_imports warnings when compiled by rustc 1.78</li>
      </ul>
      <h2>1.0.79</h2>
      <ul>
      <li>Work around improperly cached build script result by sccache (<a
      href="https://redirect.github.com/dtolnay/anyhow/issues/340">#340</a>)</li>
      </ul>
      <h2>1.0.78</h2>
      <ul>
      <li>Reduce spurious rebuilds under RustRover IDE when using a nightly
      toolchain (<a
      href="https://redirect.github.com/dtolnay/anyhow/issues/337">#337</a>)</li>
      </ul>
      <h2>1.0.77</h2>
      <ul>
      <li>Make <code>anyhow::Error::backtrace</code> available on stable Rust
      compilers 1.65+ (<a
      href="https://redirect.github.com/dtolnay/anyhow/issues/293">#293</a>,
      thanks <a
      href="https://github.com/LukasKalbertodt"><code>@​LukasKalbertodt</code></a>)</li>
      </ul>
      <h2>1.0.76</h2>
      <ul>
      <li>Opt in to <code>unsafe_op_in_unsafe_fn</code> lint (<a
      href="https://redirect.github.com/dtolnay/anyhow/issues/329">#329</a>)</li>
      </ul>
      </blockquote>
      </details>
      <details>
      <summary>Commits</summary>
      <ul>
      <li><a
      href="https://github.com/dtolnay/anyhow/commit/4aad4edebd9f09247d6c6b6784419a74bb116829"><code>4aad4ed</code></a>
      Release 1.0.81</li>
      <li><a
      href="https://github.com/dtolnay/anyhow/commit/8be90917c603199c5d1fdd73984237f023768e22"><code>8be9091</code></a>
      Merge pull request <a
      href="https://redirect.github.com/dtolnay/anyhow/issues/354">#354</a>
      from dtolnay/deadcode</li>
      <li><a
      href="https://github.com/dtolnay/anyhow/commit/a2eb7dd5e13add83f254b6dac0f68e043effc521"><code>a2eb7dd</code></a>
      Make compatible with -Dwarnings</li>
      <li><a
      href="https://github.com/dtolnay/anyhow/commit/54437197ee79c20678db433d98616fab7ddff1a5"><code>5443719</code></a>
      Release 1.0.80</li>
      <li><a
      href="https://github.com/dtolnay/anyhow/commit/dfc7bc07d4c41b61093c3251ed82becb51810bd4"><code>dfc7bc0c
      
      </code></a>
      Work around prelude redundant import warnings</li>
      <li><a
      href="https://github.com/dtolnay/anyhow/commit/6e4f86b48b5182ec71dbc8e308db9dc91e2ec8a5"><code>6e4f86b</code></a>
      Import from alloc not std, where possible</li>
      <li><a
      href="https://github.com/dtolnay/anyhow/commit/f885a133ede579c45e90ab489455126403d05db1"><code>f885a13</code></a>
      Ignore incompatible_msrv clippy false positives in test</li>
      <li><a
      href="https://github.com/dtolnay/anyhow/commit/fefbcbcb0b336a2d6c2ce6f0ee6d3fd02ef2cd3b"><code>fefbcbc</code></a>
      Ignore incompatible_msrv clippy lint</li>
      <li><a
      href="https://github.com/dtolnay/anyhow/commit/78f2d81cc71b79050a2fda270c45ff267557d853"><code>78f2d81</code></a>
      Update ui test suite to nightly-2024-02-08</li>
      <li><a
      href="https://github.com/dtolnay/anyhow/commit/edd88d3a43f11f1931330d3dd54189353ef00203"><code>edd88d3</code></a>
      Update ui test suite to nightly-2024-01-31</li>
      <li>Additional commits viewable in <a
      href="https://github.com/dtolnay/anyhow/compare/1.0.75...1.0.81">compare
      view</a></li>
      </ul>
      </details>
      <br />
      
      
      [![Dependabot compatibility
      score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=anyhow&package-manager=cargo&previous-version=1.0.75&new-version=1.0.81)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
      
      Dependabot will resolve any conflicts with this PR as long as you don't
      alter it yourself. You can also trigger a rebase manually by commenting
      `@dependabot rebase`.
      
      [//]: # (dependabot-automerge-start)
      [//]: # (dependabot-automerge-end)
      
      ---
      
      <details>
      <summary>Dependabot commands and options</summary>
      <br />
      
      You can trigger Dependabot actions by commenting on this PR:
      - `@dependabot rebase` will rebase this PR
      - `@dependabot recreate` will recreate this PR, overwriting any edits
      that have been made to it
      - `@dependabot merge` will merge this PR after your CI passes on it
      - `@dependabot squash and merge` will squash and merge this PR after
      your CI passes on it
      - `@dependabot cancel merge` will cancel a previously requested merge
      and block automerging
      - `@dependabot reopen` will reopen this PR if it is closed
      - `@dependabot close` will close this PR and stop Dependabot recreating
      it. You can achieve the same result by closing it manually
      - `@dependabot show <dependency name> ignore conditions` will show all
      of the ignore conditions of the specified dependency
      - `@dependabot ignore this major version` will close this PR and stop
      Dependabot creating any more for this major version (unless you reopen
      the PR or upgrade to it yourself)
      - `@dependabot ignore this minor version` will close this PR and stop
      Dependabot creating any more for this minor version (unless you reopen
      the PR or upgrade to it yourself)
      - `@dependabot ignore this dependency` will close this PR and stop
      Dependabot creating any more for this dependency (unless you reopen the
      PR or upgrade to it yourself)
      
      
      </details>
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      bb973aa0
  13. Mar 19, 2024
    • PG Herveou's avatar
      Contracts: Test benchmarking v2 (#3585) · e659c4b3
      PG Herveou authored
      Co-authored-by: command-bot <>
      e659c4b3
    • Davide Galassi's avatar
      Implement crypto byte array newtypes in term of a shared type (#3684) · 1e9fd237
      Davide Galassi authored
      Introduces `CryptoBytes` type defined as:
      
      ```rust
      pub struct CryptoBytes<const N: usize, Tag = ()>(pub [u8; N], PhantomData<fn() -> Tag>);
      ```
      
      The type implements a bunch of methods and traits which are typically
      expected from a byte array newtype
      (NOTE: some of the methods and trait implementations IMO are a bit
      redundant, but I decided to maintain them all to not change too much
      stuff in this PR)
      
      It also introduces two (generic) typical consumers of `CryptoBytes`:
      `PublicBytes` and `SignatureBytes`.
      
      ```rust
      pub struct PublicTag;
      pub PublicBytes<const N: usize, CryptoTag> = CryptoBytes<N, (PublicTag, CryptoTag)>;
      
      pub struct SignatureTag;
      pub SignatureBytes<const N: usize, CryptoTag> = CryptoBytes<N, (SignatureTag, CryptoTag)>;
      ```
      
      Both of them use a tag to differentiate the two types at a higher level.
      Downstream specializations will further specialize using a dedicated
      crypto tag. For example in ECDSA:
      
      
      ```rust
      pub struct EcdsaTag;
      
      pub type Public = PublicBytes<PUBLIC_KEY_SERIALIZED_SIZE, EcdsaTag>;
      pub type Signature = PublicBytes<PUBLIC_KEY_SERIALIZED_SIZE, EcdsaTag>;
      ```
      
      Overall we have a cleaner and most importantly **consistent** code for
      all the types involved
      
      All these details are opaque to the end user which can use `Public` and
      `Signature` for the cryptos as before
      1e9fd237
    • Alexandru Vasile's avatar
      rpc: Enable `transaction_unstable_broadcast` RPC V2 API (#3713) · 923f27cc
      Alexandru Vasile authored
      
      
      This PR enables the `transaction_unstable_broadcast ` and
      `transaction_unstable_stop` RPC API.
      
      Since the API is unstable, we don't need to expose this in the release
      notes.
      
      After merging this, we could validate the API in subxt and stabilize it.
      
      Spec PR that stabilizes the API:
      https://github.com/paritytech/json-rpc-interface-spec/pull/139
      
      cc @paritytech/subxt-team
      
      Signed-off-by: default avatarAlexandru Vasile <[email protected]>
      923f27cc
    • Matteo Muraca's avatar
      Removed `pallet::getter` usage from Beefy and MMR pallets (#3740) · 817870e3
      Matteo Muraca authored
      Part of #3326 
      
      cc @Kianenigma @ggwpez @liamaharon
      
       
      
      polkadot address: 12poSUQPtcF1HUPQGY3zZu2P8emuW9YnsPduA4XG3oCEfJVp
      
      ---------
      
      Signed-off-by: default avatarMatteo Muraca <[email protected]>
      817870e3
    • Oliver Tale-Yazdi's avatar
      Benchmarking: Add pov_mode to V2 syntax (#3616) · abd3f0c4
      Oliver Tale-Yazdi authored
      
      
      Changes:
      - Port the `pov_mode` attribute from the V1 syntax to V2
      - Update `pallet-whitelist` and `frame-benchmarking-pallet-pov`
      
      Follow up: also allow this attribute on top-level benchmark modules.
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      Co-authored-by: command-bot <>
      abd3f0c4
    • Juan Ignacio Rios's avatar
      Add HRMP notification handlers to the xcm-executor (#3696) · 8b3bf39a
      Juan Ignacio Rios authored
      
      
      Currently the xcm-executor returns an `Unimplemented` error if it
      receives any HRMP-related instruction.
      What I propose here, which is what we are currently doing in our forked
      executor at polimec, is to introduce a trait implemented by the executor
      which will handle those instructions.
      
      This way, if parachains want to keep the default behavior, they just use
      `()` and it will return unimplemented, but they can also implement their
      own logic to establish HRMP channels with other chains in an automated
      fashion, without requiring to go through governance.
      
      Our implementation is mentioned in the [polkadot HRMP
      docs](https://arc.net/l/quote/hduiivbu), and it was suggested to us to
      submit a PR to add these changes to polkadot-sdk.
      
      ---------
      
      Co-authored-by: default avatarBranislav Kontur <[email protected]>
      Co-authored-by: command-bot <>
      8b3bf39a
  14. Mar 18, 2024
    • Alexandru Gheorghe's avatar
      Fix kusama validators getting 0 backing rewards the first session they enter the active set (#3722) · 8d0cd4ff
      Alexandru Gheorghe authored
      There is a problem in the way we update `authorithy-discovery` next keys
      and because of that nodes that enter the active set would be noticed at
      the start of the session they become active, instead of the start of the
      previous session as it was intended. This is problematic because:
      
      1. The node itself advertises its addresses on the DHT only when it
      notices it should become active on around ~10m loop, so in this case it
      would notice after it becomes active.
      2. The other nodes won't be able to detect the new nodes addresses at
      the beginning of the session, so it won't added them to the reserved
      set.
      
      With 1 + 2, we end-up in a situation where the the new node won't be
      able to properly connect to its peers because it won't be in its peers
      reserved set. Now, the nodes accept by default`MIN_GOSSIP_PEERS: usize =
      25` connections to nodes that are not in the reserved set, but given
      Kusama size(> 1000 nodes) you could easily have more than`25` new nodes
      entering the active set or simply the nodes don't have slots anymore
      because, they already have connections to peers not in the active set.
      
      In the end what the node would notice is 0 backing rewards because it
      wasn't directly connected to the peers in its backing group.
      
      ## Root-cause
      
      The flow is like this:
      1. At BAD_SESSION - 1, in `rotate_session` new nodes are added to
      QueuedKeys
      https://github.com/paritytech/polkadot-sdk/blob/02e1a7f4/substrate/frame/session/src/lib.rs#L609
      ```
       <QueuedKeys<T>>::put(queued_amalgamated.clone());
      <QueuedChanged<T>>::put(next_changed);
      ```
      2. AuthorityDiscovery::on_new_session is called with `changed` being the
      value of `<QueuedChanged<T>>:` at BAD_SESSION - **2** because it was
      saved before being updated
      https://github.com/paritytech/polkadot-sdk/blob/02e1a7f4/substrate/frame/session/src/lib.rs#L613
      3. At BAD_SESSION - 1, `AuthorityDiscovery::on_new_session` doesn't
      updated its next_keys because `changed` was false.
      4. For the entire durations of `BAD_SESSION - 1` everyone calling
      runtime api `authorities`(should return past, present and future
      authorities) won't discover the nodes that should become active .
      5. At the beginning of BAD_SESSION, all nodes discover the new nodes are
      authorities, but it is already too late because reserved_nodes are
      updated only at the beginning of the session by the `gossip-support`.
      See above why this bad.
      
      ## Fix
      Update next keys with the queued_validators at every session, not matter
      the value of `changed` this is the same way babe pallet correctly does
      it.
      https://github.com/paritytech/polkadot-sdk/blob/02e1a7f4
      
      /substrate/frame/babe/src/lib.rs#L655
      
      ## Notes
      
      - The issue doesn't reproduce with proof-authorities changes like
      `versi` because `changed` would always be true and `AuthorityDiscovery`
      correctly updates its next_keys every time.
      - Confirmed at session `37651` on kusama that this is exactly what it
      happens by looking at blocks with polkadot.js.
      
      ## TODO
      - [ ] Move versi on proof of stake and properly test before and after
      fix to confirm there is no other issue.
      
      ---------
      
      Signed-off-by: default avatarAlexandru Gheorghe <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      8d0cd4ff
    • K Gunjan's avatar
      Pallet AURA: remove pallet::getter macro and write the corresponding code (#3350) · 816c072a
      K Gunjan authored
      
      
      Removed the `pallet::getter` macro call from storage type definitions
      and added the corresponding implementations directly.
      fixes #3330  
      
      polkadot address: 14JzTPPUd8x8phKi8qLxHgNTnTMg6DUukCLXoWprejkaHXPz
      
      ---------
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      816c072a
    • Squirrel's avatar
      sp-std removal from substrate/primitives (#3274) · 1b5f4243
      Squirrel authored
      
      
      This PR removes sp-std crate from substrate/primitives sub-directories.
      
      For now crates that have `pub use` of sp-std or export macros that would
      necessitate users of the macros to `extern crate alloc` have been
      excluded from this PR.
      
      There should be no breaking changes in this PR.
      
      ---------
      
      Co-authored-by: default avatarKoute <[email protected]>
      1b5f4243