Skip to content
Snippets Groups Projects
  1. Oct 17, 2023
  2. Oct 16, 2023
  3. Oct 15, 2023
    • Daan van der Plas's avatar
      fix: GoAhead signal only set when runtime upgrade is enacted from parachain side (#1176) · 91c4360c
      Daan van der Plas authored
      The runtime code of a parachain can be replaced on the relay-chain via:
      
      [cumulus]:
      [enact_authorized_upgrade](https://github.com/paritytech/polkadot-sdk/blob/1a38d6d6/cumulus/pallets/parachain-system/src/lib.rs#L661);
      this is used for a runtime upgrade when a parachain is not bricked.
      
      [polkadot] (these are used when a parachain is bricked):
      -
      [force_set_current_code](https://github.com/paritytech/polkadot-sdk/blob/1a38d6d6/polkadot/runtime/parachains/src/paras/mod.rs#L823):
      immediately changes the runtime code of a given para without a pvf check
      (root).
      -
      [force_schedule_code_upgrade](https://github.com/paritytech/polkadot-sdk/blob/1a38d6d6/polkadot/runtime/parachains/src/paras/mod.rs#L864):
      schedules a change to the runtime code of a given para including a pvf
      check of the new code (root).
      -
      [schedule_code_upgrade](https://github.com/paritytech/polkadot-sdk/blob/1a38d6d6/polkadot/runtime/common/src/paras_registrar.rs#L395):
      schedules a change to the runtime code of a given para including a pvf
      check of the new code. Besides root, the parachain or parachain manager
      can call this extrinsic given that the parachain is unlocked.
      
      Polkadot signals a parachain to be ready for a runtime upgrade through
      the
      [GoAhead](https://github.com/paritytech/polkadot-sdk/blob/e4949344
      
      /polkadot/primitives/src/v5/mod.rs#L1229)
      signal.
      
      When in cumulus `enact_authorized_upgrade` is executed, the same
      underlying helper function of `force_schedule_code_upgrade` &
      `schedule_code_upgrade`:
      [schedule_code_upgrade](https://github.com/paritytech/polkadot/blob/09b61286da11921a3dda0a8e4015ceb9ef9cffca/runtime/parachains/src/paras/mod.rs#L1778),
      is called on the relay-chain, which sets the `GoAhead` signal (if the
      pvf is accepted).
      
      If Cumulus receives the `GoAhead` signal from polkadot without having
      the `PendingValidationCode` ready, it will panic
      ([ref](https://github.com/paritytech/polkadot/pull/7412)). For
      `enact_authorized_upgrade` we know for sure the `PendingValidationCode`
      is set. On the contrary, for `force_schedule_code_upgrade` &
      `schedule_code_upgrade` this is not the case.
      
      This PR includes a flag such that the `GoAhead` signal will only be set
      when a runtime upgrade is enacted by the parachain
      (`enact_authorized_upgrade`).
      
      additional info: https://github.com/paritytech/polkadot/pull/7412
      
      Closes #641
      
      ---------
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      Co-authored-by: default avatarBastian Köcher <info@kchr.de>
    • Gonçalo Pestana's avatar
      Refactor staking ledger (#1484) · 8ee4042c
      Gonçalo Pestana authored
      This PR refactors the staking ledger logic to encapsulate all reads and
      mutations of `Ledger`, `Bonded`, `Payee` and stake locks within the
      `StakingLedger` struct implementation.
      
      With these changes, all the reads and mutations to the `Ledger`, `Payee`
      and `Bonded` storage map should be done through the methods exposed by
      StakingLedger to ensure the data and lock consistency of the operations.
      The new introduced methods that mutate and read Ledger are:
      
      - `ledger.update()`: inserts/updates a staking ledger in storage;
      updates staking locks accordingly (and ledger.bond(), which is synthatic
      sugar for ledger.update())
      - `ledger.kill()`: removes all Bonded and StakingLedger related data for
      a given ledger; updates staking locks accordingly;
      `StakingLedger::get(account)`: queries both the `Bonded` and `Ledger`
      storages and returns a `Option<StakingLedger>`. The pallet impl exposes
      fn ledger(account) as synthatic sugar for `StakingLedger::get(account)`.
      
      Retrieving a ledger with `StakingLedger::get()` can be done by providing
      either a stash or controller account. The input must be wrapped in a
      `StakingAccount` variant (Stash or Controller) which is treated
      accordingly. This simplifies the caller API but will eventually be
      deprecated once we completely get rid of the controller account in
      staking. However, this refactor will help with the work necessary when
      completely removing the controller.
      
      Other goals:
      
      - No logical changes have been introduced in this PR;
      - No breaking changes or updates in wallets required;
      - No new storage items or need to perform storage migrations;
      - Centralise the changes to bonds and ledger updates to simplify the
      OnStakingUpdate updates to the target list (related to
      https://github.com/paritytech/polkadot-sdk/issues/443)
      
      Note: it would be great to prevent or at least raise a warning if
      `Ledger<T>`, `Payee<T>` and `Bonded<T>` storage types are accessed
      outside the `StakingLedger` implementation. This PR should not get
      blocked by that feature, but there's a tracking issue here
      https://github.com/paritytech/polkadot-sdk/issues/149
      
      Related and step towards
      https://github.com/paritytech/polkadot-sdk/issues/443
    • drskalman's avatar
      Paired-key Crypto Scheme (#1705) · 1b34571c
      drskalman authored
      
      BEEFY needs two cryptographic keys at the same time. Validators should
      sign BEEFY payload using both ECDSA and BLS key. The network will gossip
      a payload which contains a valid ECDSA key. The prover nodes aggregate
      the BLS keys if aggregation fails to verifies the validator which
      provided a valid ECDSA signature but an invalid BLS signature is subject
      to slashing.
      
      As such BEEFY session should be initiated with both key. Currently there
      is no straight forward way of doing so, beside having a session with
      RuntimeApp corresponding to a crypto scheme contains both keys.
      
      This pull request implement a generic paired_crypto scheme as well as
      implementing it for (ECDSA, BLS) pair.
      
      ---------
      
      Co-authored-by: default avatarDavide Galassi <davxy@datawok.net>
      Co-authored-by: default avatarRobert Hambrock <roberthambrock@gmail.com>
    • Julian Eager's avatar
      Include polkadot version in artifact path (#1828) · 9e144704
      Julian Eager authored
      closes #695
      
      Could potentially be helpful to preserving caches when applicable, as
      discussed in #685
      
      kusama address: FvpsvV1GQAAbwqX6oyRjemgdKV11QU5bXsMg9xsonD1FLGK
    • S E R A Y A's avatar
      add link to rfc-0001 in broker README (#1862) · c9b51cd4
      S E R A Y A authored
      # Description
      - What does this PR do?
        - link added
      - Why are these changes needed?
        - improve docs
      - How were these changes implemented and what do they affect?
        - only concerns docs
  4. Oct 14, 2023
  5. Oct 13, 2023
    • Dónal Murray's avatar
      Remove clippy clone-double-ref lint noise (#1860) · 1f28cddd
      Dónal Murray authored
      The lint `clippy::clone_double_ref` was renamed to
      `suspicious_double_ref_op` in [this
      commit](https://github.com/rust-lang/rust/commit/5c99175a9efcaa3d65712c119f361add22e3a859)
      (thanks @liamaharon) and now generates a lot of noise in the terminal
      when run both in CI and locally with 1.73.
      
      This renames the lint in line with this, but does not change
      functionality.
      
      May cause issues for people running earlier versions locally - @altaua
      requesting review to get your opinion on this.
    • 0xmovses's avatar
      Refactor alliance benchmarks to v2 (#1868) · 24840290
      0xmovses authored
      - This PR refactors `alliance/src/benchmarkings.rs` to use benchmarking
      v2. These changes are needed to improve the readability and
      maintainability of the benchmarking code.
      
      - No known issue to backlink.
      
      ## Local Testing 
      1. `cargo build --features runtime-benchmarks` 
      2. `cargo run --locked --release -p node-cli --bin substrate-node
      --features runtime-benchmarks -- benchmark pallet --execution wasm
      --wasm-execution compiled --chain dev --pallet "*" --extrinsic "*"
      --steps 2 --repeat 1`
    • Julian Eager's avatar
      Check executor params coherence (#1774) · 681e7bbf
      Julian Eager authored
      
      Co-authored-by: default avatarMarcin S <marcin@realemail.net>
    • Adrian Catangiu's avatar
    • Adrian Catangiu's avatar
      sc-consensus-beefy: improve gossip logic (#1852) · 83206000
      Adrian Catangiu authored
      - Remove cached messages used for deduplication in `GossipValidator`
      since they're already deduplicated in upper layer `NetworkGossip`.
      - Add cache for "justified rounds" to quickly discard any further (even
      if potentially different) justifications at the gossip level, once a
      valid one (for a respective round) is submitted to the worker.
      - Add short-circuit in worker `finalize()` method to not attempt to
      finalize same block multiple times (for example when we get
      justifications for same block from multiple components like
      block-import, gossip or on-demand).
      - Change a test which had A LOT of latency in syncing blocks for some
      weird reason and would only run after ~150seconds. It now runs
      instantly.
      
      Fixes https://github.com/paritytech/polkadot-sdk/issues/1728
    • gupnik's avatar
      Adds instance support for composite enums (#1857) · 6b27dad3
      gupnik authored
      Fixes https://github.com/paritytech/polkadot-sdk/issues/1839
      
      Currently, `composite_enum`s do not support pallet instances. This PR
      allows the following:
      ```rust
      	#[pallet::composite_enum]
      	pub enum HoldReason<I: 'static = ()> {
      		SomeHoldReason
      	}
      ```
      
      ### Todo
      
      - [x]  UI Test
  6. Oct 12, 2023
  7. Oct 11, 2023
    • Mira Ressel's avatar
    • Mira Ressel's avatar
      ci: bump ci image to rust 1.73.0 (#1830) · 447e7533
      Mira Ressel authored
      Co-authored-by: command-bot <>
    • 0xmovses's avatar
      Refactor Identity to benchmark v2 (#1838) · 1d9ec572
      0xmovses authored
      This PR refactors `identity/benchmarkings.rs` to use benchmarking v2.
      These changes are needed to improve the readability and maintainability
      of the benchmarking code. Changes were implemented using
      [this](https://github.com/paritytech/polkadot-sdk/commit/9ec80090
      
      )
      commit as a guide. The logic of the benchmarks remains the same.
      
      No known issue to backlink.
      
      ## Local Testing
      To test the new benchmarks:
      1. `cargo build --features runtime-benchmarks`
      2. `./target/debug/polkadot benchmark pallet --steps=5 --repeat=2
      --pallet=pallet_identity --extrinsic='*'`
      
      ---------
      
      Co-authored-by: default avatarRichard Melkonian <movses@richards-mbp.home>
      Co-authored-by: default avatarjoe petrowski <25483142+joepetrowski@users.noreply.github.com>
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarFrancisco Aguirre <franciscoaguirreperez@gmail.com>
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
    • Marcin S.'s avatar
    • Branislav Kontur's avatar
      Xcm emulator nits (#1649) · cfb29254
      Branislav Kontur authored
      
      # Desription
      
      ## Summary 
      
      This PR introduces several nits and tweaks to xcm emulator tests for
      system parachains.
      
      ## Explanation
      
      **Deduplicate `XcmPallet::send(` with root origin code**
      - Introduced `send_transact_to_parachain` which could be easily reuse
      for scenarios like _governance call from relay chain to parachain_.
      
      **Refactor `send_transact_sudo_from_relay_to_system_para_works`**
      - Test covered just one use-case which was moved to the
      `do_force_create_asset_from_relay_to_system_para`, so now we can extend
      this test with more _governance-like_ senarios.
      - Renamed to
      `send_transact_as_superuser_from_relay_to_system_para_works`.
      
      **Remove `send_transact_native_from_relay_to_system_para_fails` test**
      - This test and/or description is kind of misleading, because system
      paras support Native from relay chain by `RelayChainAsNative` with
      correct xcm origin.
      - It tested only sending on relay chain which should go directly to the
      relay chain unit-tests (does not even need to be in xcm emulator level).
      
      ## Future directions
      
      Check restructure parachains integration tests
      [issue](https://github.com/paritytech/polkadot-sdk/issues/1389) and [PR
      with more TODOs](https://github.com/paritytech/polkadot-sdk/pull/1693).
      
      ---------
      
      Co-authored-by: default avatarIgnacio Palacios <ignacio.palacios.santos@gmail.com>
    • gupnik's avatar
      Fixes path issue in derive-impl (#1823) · 294e9983
      gupnik authored
      Needs https://github.com/sam0x17/macro_magic/pull/13
      
      The associated PR allows the export of tokens from macro_magic at the
      specified path. This fixes the path issue in derive-impl. Now, we can
      import the default config using the standard rust syntax:
      
      ```rust
      use frame_system::config_preludes::TestDefaultConfig;
      
      [derive_impl(TestDefaultConfig as frame_system::DefaultConfig)]
      impl frame_system::DefaultConfig for Test {
         //....
      }
      ```
  8. Oct 10, 2023
    • Sam Johnson's avatar
      upgrade to macro_magic 0.4.3 (#1832) · 5adcb3e1
      Sam Johnson authored
      # Description
      
      Upgrades `macro_magic` to 0.4.3, which introduces the ability to have
      `export_tokens` use the same name as the underlying item for its
      auto-generated macro name. Ultimately this will allow for better dev ux
      in our derive_impl feature.