Skip to content
Snippets Groups Projects
  1. Jun 26, 2024
  2. Jun 25, 2024
  3. Jun 24, 2024
  4. Jun 23, 2024
  5. Jun 19, 2024
    • Tsvetomir Dimitrov's avatar
      Fix core sharing and make use of scheduling_lookahead (#4724) · 739c37bf
      Tsvetomir Dimitrov authored
      
      Implements most of
      https://github.com/paritytech/polkadot-sdk/issues/1797
      
      Core sharing (two parachains or more marachains scheduled on the same
      core with the same `PartsOf57600` value) was not working correctly. The
      expected behaviour is to have Backed and Included event in each block
      for the paras sharing the core and the paras should take turns. E.g. for
      two cores we expect: Backed(a); Included(a)+Backed(b);
      Included(b)+Backed(a); etc. Instead of this each block contains just one
      event and there are a lot of gaps (blocks w/o events) during the
      session.
      
      Core sharing should also work when collators are building collations
      ahead of time
      
      TODOs:
      
      - [x] Add a zombienet test verifying that the behaviour mentioned above
      works.
      - [x] prdoc
      
      ---------
      
      Co-authored-by: default avataralindima <alin@parity.io>
  6. Jun 18, 2024
    • Tin Chung's avatar
      Remove deprecated treasury pallet calls (#3820) · 40677b64
      Tin Chung authored
      # ISSUE
      - Link to the issue:
      https://github.com/paritytech/polkadot-sdk/issues/3800
      # Deliverables
      - [x] remove deprecated calls;
      (https://github.com/paritytech/polkadot-sdk/pull/3820/commits/d579b673)
      - [x] set explicit coded indexes for Error and Event enums, remove
      unused variants and keep the same indexes for the rest;
      (https://github.com/paritytech/polkadot-sdk/pull/3820/commits/d579b673)
      - [x] remove unused Config's type parameters;
      (https://github.com/paritytech/polkadot-sdk/pull/3820/commits/d579b673)
      - [x] remove irrelevant tests and adopt relevant using old api;
      (https://github.com/paritytech/polkadot-sdk/pull/3820/commits/d579b673)
      - [x] remove benchmarks for removed calls;
      (https://github.com/paritytech/polkadot-sdk/pull/3820/commits/1a3d5f1f)
      - [x] prdoc
      (https://github.com/paritytech/polkadot-sdk/pull/3820/commits/d579b673)
      - [x] remove deprecated methods from the `treasury/README.md` and add
      up-to-date dispatchable functions documentation
      (https://github.com/paritytech/polkadot-sdk/pull/3820/commits/d579b673)
      - [x] remove deprecated weight functions
      (https://github.com/paritytech/polkadot-sdk/pull/3820/commits/8f74134b)
      > ### Separated to other issues
      > - [ ] remove storage items like Proposals and ProposalCount, that are
      not used anymore
      
      Adjust all treasury pallet instances within polkadot-sdk
      - [x] `pallet_bounty`, `tip`, `child_bounties`:
      https://github.com/openguild-labs/polkadot-sdk/pull/3
      - [x] Remove deprecated treasury weight functions used in Westend and
      Rococo runtime `collective-westend`, `collective-rococo`
      
      Add migration for westend and rococo to clean the data from removed
      storage items
      - [ ] https://github.com/paritytech/polkadot-sdk/pull/3828
      # Test Outcomes
      Successful tests by running `cargo test --features runtime-benchmarks`
      ```
      running 38 tests
      test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
      test benchmarking::benchmarks::bench_check_status ... ok
      test benchmarking::benchmarks::bench_payout ... ok
      test benchmarking::benchmarks::bench_spend_local ... ok
      test tests::accepted_spend_proposal_enacted_on_spend_period ... ok
      test benchmarking::benchmarks::bench_spend ... ok
      test tests::accepted_spend_proposal_ignored_outside_spend_period ... ok
      test benchmarking::benchmarks::bench_void_spend ... ok
      test benchmarking::benchmarks::bench_remove_approval ... ok
      test tests::genesis_funding_works ... ok
      test tests::genesis_config_works ... ok
      test tests::inexistent_account_works ... ok
      test tests::minting_works ... ok
      test tests::check_status_works ... ok
      test tests::payout_retry_works ... ok
      test tests::pot_underflow_should_not_diminish ... ok
      test tests::remove_already_removed_approval_fails ... ok
      test tests::spend_local_origin_permissioning_works ... ok
      test tests::spend_valid_from_works ... ok
      test tests::spend_expires ... ok
      test tests::spend_works ... ok
      test tests::test_genesis_config_builds ... ok
      test tests::spend_payout_works ... ok
      test tests::spend_local_origin_works ... ok
      test tests::spend_origin_works ... ok
      test tests::spending_local_in_batch_respects_max_total ... ok
      test tests::spending_in_batch_respects_max_total ... ok
      test tests::try_state_proposals_invariant_2_works ... ok
      test tests::try_state_proposals_invariant_1_works ... ok
      test tests::try_state_spends_invariant_2_works ... ok
      test tests::try_state_spends_invariant_1_works ... ok
      test tests::treasury_account_doesnt_get_deleted ... ok
      test tests::try_state_spends_invariant_3_works ... ok
      test tests::unused_pot_should_diminish ... ok
      test tests::void_spend_works ... ok
      test tests::try_state_proposals_invariant_3_works ... ok
      test tests::max_approvals_limited ... ok
      test benchmarking::benchmarks::bench_on_initialize_proposals ... ok
      
      test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
      
         Doc-tests pallet_treasury
      
      running 2 tests
      test substrate/frame/treasury/src/lib.rs - (line 52) ... ignored
      test substrate/frame/treasury/src/lib.rs - (line 79) ... ignored
      
      test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s
      ```
      
      polkadot address: 19nSqFQorfF2HxD3oBzWM3oCh4SaCRKWt1yvmgaPYGCo71J
  7. Jun 17, 2024
  8. Jun 13, 2024
  9. Jun 11, 2024
  10. Jun 10, 2024
  11. Jun 07, 2024
  12. Jun 06, 2024
  13. Jun 05, 2024
    • Oliver Tale-Yazdi's avatar
      Unify dependency aliases (#4633) · d2fd5364
      Oliver Tale-Yazdi authored
      
      Inherited workspace dependencies cannot be renamed by the crate using
      them (see [1](https://github.com/rust-lang/cargo/issues/12546),
      [2](https://stackoverflow.com/questions/76792343/can-inherited-dependencies-in-rust-be-aliased-in-the-cargo-toml-file)).
      Since we want to use inherited workspace dependencies everywhere, we
      first need to unify all aliases that we use for a dependency throughout
      the workspace.
      The umbrella crate is currently excluded from this procedure, since it
      should be able to export the crates by their original name without much
      hassle.
      
      For example: one crate may alias `parity-scale-codec` to `codec`, while
      another crate does not alias it at all. After this change, all crates
      have to use `codec` as name. The problematic combinations were:
      - conflicting aliases: most crates aliases as `A` but some use `B`.
      - missing alias: most of the crates alias a dep but some dont.
      - superfluous alias: most crates dont alias a dep but some do.
      
      The script that i used first determines whether most crates opted to
      alias a dependency or not. From that info it decides whether to use an
      alias or not. If it decided to use an alias, the most common one is used
      everywhere.
      
      To reproduce, i used
      [this](https://github.com/ggwpez/substrate-scripts/blob/master/uniform-crate-alias.py)
      python script in combination with
      [this](https://github.com/ggwpez/zepter/blob/38ad10585fe98a5a86c1d2369738bc763a77057b/renames.json)
      error output from Zepter.
      
      ---------
      
      Signed-off-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
    • ordian's avatar
      statement-distribution: prep for re-enabling (#4431) · 0d661eac
      ordian authored
      In preparation for launching re-enabling
      (https://github.com/paritytech/polkadot-sdk/issues/2418), we need to
      adjust the disabling strategy of statement-distribution to use the relay
      parent's state instead of the latest state (union of active leaves).
      This will also ensure no raciness of getting the latest state vs
      accepting statements from disabling validators at the cost of being more
      lenient/potentially accepting more statements from disabled validators.
      
      - [x] PRDoc
  14. Jun 03, 2024
  15. Jun 02, 2024
  16. May 31, 2024
  17. May 30, 2024
  18. May 29, 2024
    • Francisco Aguirre's avatar
      Change `XcmDryRunApi::dry_run_extrinsic` to take a call instead (#4621) · d5053ac4
      Francisco Aguirre authored
      
      Follow-up to the new `XcmDryRunApi` runtime API introduced in
      https://github.com/paritytech/polkadot-sdk/pull/3872.
      
      Taking an extrinsic means the frontend has to sign first to dry-run and
      once again to submit.
      This is bad UX which is solved by taking an `origin` and a `call`.
      This also has the benefit of being able to dry-run as any account, since
      it needs no signature.
      
      This is a breaking change since I changed `dry_run_extrinsic` to
      `dry_run_call`, however, this API is still only on testnets.
      The crates are bumped accordingly.
      
      As a part of this PR, I changed the name of the API from `XcmDryRunApi`
      to just `DryRunApi`, since it can be used for general dry-running :)
      
      Step towards https://github.com/paritytech/polkadot-sdk/issues/690.
      
      Example of calling the API with PAPI, not the best code, just testing :)
      
      ```ts
      // We just build a call, the arguments make it look very big though.
      const call = localApi.tx.XcmPallet.transfer_assets({
        dest: XcmVersionedLocation.V4({ parents: 0, interior: XcmV4Junctions.X1(XcmV4Junction.Parachain(1000)) }),
        beneficiary: XcmVersionedLocation.V4({ parents: 0, interior: XcmV4Junctions.X1(XcmV4Junction.AccountId32({ network: undefined, id: Binary.fromBytes(encodeAccount(account.address)) })) }),
        weight_limit: XcmV3WeightLimit.Unlimited(),
        assets: XcmVersionedAssets.V4([{
          id: { parents: 0, interior: XcmV4Junctions.Here() },
          fun: XcmV3MultiassetFungibility.Fungible(1_000_000_000_000n) }
        ]),
        fee_asset_item: 0,
      });
      // We call the API passing in a signed origin 
      const result = await localApi.apis.XcmDryRunApi.dry_run_call(
        WestendRuntimeOriginCaller.system(DispatchRawOrigin.Signed(account.address)),
        call.decodedCall
      );
      if (result.success && result.value.execution_result.success) {
        // We find the forwarded XCM we want. The first one going to AssetHub in this case.
        const xcmsToAssetHub = result.value.forwarded_xcms.find(([location, _]) => (
          location.type === "V4" &&
            location.value.parents === 0 &&
            location.value.interior.type === "X1"
            && location.value.interior.value.type === "Parachain"
            && location.value.interior.value.value === 1000
        ))!;
      
        // We can even find the delivery fees for that forwarded XCM.
        const deliveryFeesQuery = await localApi.apis.XcmPaymentApi.query_delivery_fees(xcmsToAssetHub[0], xcmsToAssetHub[1][0]);
      
        if (deliveryFeesQuery.success) {
          const amount = deliveryFeesQuery.value.type === "V4" && deliveryFeesQuery.value.value[0].fun.type === "Fungible" && deliveryFeesQuery.value.value[0].fun.value.valueOf() || 0n;
          // We store them in state somewhere.
          setDeliveryFees(formatAmount(BigInt(amount)));
        }
      }
      ```
      
      ---------
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
  19. May 28, 2024
    • Alexandru Gheorghe's avatar
      Add metric to measure the time it takes to gather enough assignments (#4587) · ad22fa6e
      Alexandru Gheorghe authored
      
      To understand with high granularity how many assignment tranches are
      triggered before we concur that we have enough assignments.
      
      This metric is important because the triggering of an assignment creates
      a lot of work in the system for approving the candidate and gossiping
      the necessary messages.
      
      ---------
      
      Signed-off-by: default avatarAlexandru Gheorghe <alexandru.gheorghe@parity.io>
      Co-authored-by: default avatarordian <write@reusable.software>
    • Bolaji Ahmad's avatar
      Improve On_demand_assigner events (#4339) · 650b124f
      Bolaji Ahmad authored
      
      title: Improving `on_demand_assigner` emitted events
      
      doc:
        - audience: Rutime User
      description: OnDemandOrderPlaced event that is useful for indexers to
      save data related to on demand orders. Check [discussion
      here](https://substrate.stackexchange.com/questions/11366/ondemandassignmentprovider-ondemandorderplaced-event-was-removed/11389#11389).
      
      Closes #4254 
      
      crates: [ 'runtime-parachain]
      
      ---------
      
      Co-authored-by: default avatarMaciej <maciej.zyszkiewicz@parity.io>
    • Andrei Eres's avatar
      [subsytem-bench] Remove redundant banchmark_name param (#4540) · 3bf283ff
      Andrei Eres authored
      Fixes https://github.com/paritytech/polkadot-sdk/issues/3601
      
      Since we print benchmark results manually, we don't need to save
      benchmark_name anywhere, better just put the name inside `println!`.
    • Alin Dima's avatar
      Add availability-recovery from systematic chunks (#1644) · 523e6256
      Alin Dima authored
      
      **Don't look at the commit history, it's confusing, as this branch is
      based on another branch that was merged**
      
      Fixes #598 
      Also implements [RFC
      #47](https://github.com/polkadot-fellows/RFCs/pull/47)
      
      ## Description
      
      - Availability-recovery now first attempts to request the systematic
      chunks for large POVs (which are the first ~n/3 chunks, which can
      recover the full data without doing the costly reed-solomon decoding
      process). This has a fallback of recovering from all chunks, if for some
      reason the process fails. Additionally, backers are also used as a
      backup for requesting the systematic chunks if the assigned validator is
      not offering the chunk (each backer is only used for one systematic
      chunk, to not overload them).
      - Quite obviously, recovering from systematic chunks is much faster than
      recovering from regular chunks (4000% faster as measured on my apple M2
      Pro).
      - Introduces a `ValidatorIndex` -> `ChunkIndex` mapping which is
      different for every core, in order to avoid only querying the first n/3
      validators over and over again in the same session. The mapping is the
      one described in RFC 47.
      - The mapping is feature-gated by the [NodeFeatures runtime
      API](https://github.com/paritytech/polkadot-sdk/pull/2177) so that it
      can only be enabled via a governance call once a sufficient majority of
      validators have upgraded their client. If the feature is not enabled,
      the mapping will be the identity mapping and backwards-compatibility
      will be preserved.
      - Adds a new chunk request protocol version (v2), which adds the
      ChunkIndex to the response. This may or may not be checked against the
      expected chunk index. For av-distribution and systematic recovery, this
      will be checked, but for regular recovery, no. This is backwards
      compatible. First, a v2 request is attempted. If that fails during
      protocol negotiation, v1 is used.
      - Systematic recovery is only attempted during approval-voting, where we
      have easy access to the core_index. For disputes and collator
      pov_recovery, regular chunk requests are used, just as before.
      
      ## Performance results
      
      Some results from subsystem-bench:
      
      with regular chunk recovery: CPU usage per block 39.82s
      with recovery from backers: CPU usage per block 16.03s
      with systematic recovery: CPU usage per block 19.07s
      
      End-to-end results here:
      https://github.com/paritytech/polkadot-sdk/issues/598#issuecomment-1792007099
      
      #### TODO:
      
      - [x] [RFC #47](https://github.com/polkadot-fellows/RFCs/pull/47)
      - [x] merge https://github.com/paritytech/polkadot-sdk/pull/2177 and
      rebase on top of those changes
      - [x] merge https://github.com/paritytech/polkadot-sdk/pull/2771 and
      rebase
      - [x] add tests
      - [x] preliminary performance measure on Versi: see
      https://github.com/paritytech/polkadot-sdk/issues/598#issuecomment-1792007099
      - [x] Rewrite the implementer's guide documentation
      - [x] https://github.com/paritytech/polkadot-sdk/pull/3065 
      - [x] https://github.com/paritytech/zombienet/issues/1705 and fix
      zombienet tests
      - [x] security audit
      - [x] final versi test and performance measure
      
      ---------
      
      Signed-off-by: default avataralindima <alin@parity.io>
      Co-authored-by: default avatarJavier Viola <javier@parity.io>
  20. May 27, 2024
    • Michal Kucharczyk's avatar
      `sc-chain-spec`: deprecated code removed (#4410) · 2d3a6932
      Michal Kucharczyk authored
      This PR removes deprecated code:
      - The `RuntimeGenesisConfig` generic type parameter in
      `GenericChainSpec` struct.
      - `ChainSpec::from_genesis` method allowing to create chain-spec using
      closure providing runtime genesis struct
      - `GenesisSource::Factory` variant together with no longer needed
      `GenesisSource`'s generic parameter `G` (which was intended to be a
      runtime genesis struct).
      
      
      https://github.com/paritytech/polkadot-sdk/blob/17b56fae/substrate/client/chain-spec/src/chain_spec.rs#L559-L563
    • Andrei Eres's avatar
      [subsystem-benchmarks] Add statement-distribution benchmarks (#3863) · a7097681
      Andrei Eres authored
      Fixes https://github.com/paritytech/polkadot-sdk/issues/3748
      
      Adds a subsystem benchmark for statements-distribution subsystem.
      
      Results in CI (reference hw):
      ```
      $ cargo bench -p polkadot-statement-distribution --bench statement-distribution-regression-bench --features subsystem-benchmarks
      
      [Sent to peers] standart_deviation 0.07%
      [Received from peers] standart_deviation 0.00%
      [statement-distribution] standart_deviation 0.97%
      [test-environment] standart_deviation 1.03%
      
      Network usage, KiB                     total   per block
      Received from peers                1088.0000    108.8000
      Sent to peers                      1238.1800    123.8180
      
      CPU usage, seconds                     total   per block
      statement-distribution                0.3897      0.0390
      test-environment                      0.4715      0.0472
      ```
    • omahs's avatar
      chore: fix typos (#4590) · 89b67bc6
      omahs authored
      chore: fix typos
    • Francisco Aguirre's avatar
      Deprecate XCMv2 (#4131) · 9201f9ab
      Francisco Aguirre authored
      
      Marked XCMv2 as deprecated now that we have XCMv4.
      It will be removed sometime around June 2024.
      
      ---------
      
      Co-authored-by: default avatarBranislav Kontur <bkontur@gmail.com>
  21. May 24, 2024
    • Andrei Sandu's avatar
      availability-recovery: bump chunk fetch threshold to 1MB for Polkadot and 4MB... · f469fbfb
      Andrei Sandu authored
      availability-recovery: bump chunk fetch threshold to 1MB for Polkadot and 4MB for Kusama + testnets (#4399)
      
      Doing this change ensures that we minimize the CPU usage we spend in
      reed-solomon by only doing the re-encoding into chunks if PoV size is
      less than 4MB (which means all PoVs right now)
       
      Based on susbystem benchmark results we concluded that it is safe to
      bump this number higher. At worst case scenario the network pressure for
      a backing group of 5 is around 25% of the network bandwidth in hw specs.
      
      Assuming 6s block times (max_candidate_depth 3) and needed_approvals 30
      the amount of bandwidth usage of a backing group used would hover above
      `30 * 4 * 3 = 360MB` per relay chain block. Given a backing group of 5
      that gives 72MB per block per validator -> 12 MB/s.
      
      <details>
      <summary>Reality check on Kusama PoV sizes (click for chart)</summary>
      <br>
      <img width="697" alt="Screenshot 2024-05-07 at 14 30 38"
      src="https://github.com/paritytech/polkadot-sdk/assets/54316454/bfed32d4-8623-48b0-9ec0-8b95dd2a9d8c">
      </details>
      
      ---------
      
      Signed-off-by: default avatarAndrei Sandu <andrei-mihail@parity.io>