Skip to content
  • Branislav Kontur's avatar
    [xcm] Use `Weight::MAX` for `reserve_asset_deposited`,... · e3c97e48
    Branislav Kontur authored
    [xcm] Use `Weight::MAX` for `reserve_asset_deposited`, `receive_teleported_asset` benchmarks (#1726)
    
    # Description
    
    ## Summary
    
    Previously, the `pallet_xcm::do_reserve_transfer_assets` and
    `pallet_xcm::do_teleport_assets` functions relied on weight estimation
    for remote chain execution, which was based on guesswork derived from
    the local chain. This approach led to complications for runtimes that
    did not provide or support specific [XCM
    configurations](https://github.com/paritytech/polkadot-sdk/blob/7cbe0c76/polkadot/xcm/xcm-executor/src/config.rs#L43-L47)
    for `IsReserve` or `IsTeleporter`. Consequently, such runtimes had to
    resort to implementing hard-coded weights for XCM instructions like
    `reserve_asset_deposited` or `receive_teleported_asset` to support
    extrinsics such as `pallet_xcm::reserve_transfer_assets` and
    `pallet_xcm::teleport_assets`, which depended on remote weight
    estimation.
    
    The issue of remote weight estimation was addressed and resolved by
    [Pull Request
    #1645](https://github.com/paritytech/polkadot-sdk/pull/1645), which
    removed the need for remote weight estimation.
    
    ## Solution
    
    As a continuation of this improvement, the current PR proposes further
    cleanup by removing unnecessary hard-coded values and rectifying
    benchmark results with `Weight::MAX` that previously used
    `T::BlockWeights::get().max_block` as an override for unsupported XCM
    instructions like `ReserveAssetDeposited` and `ReceiveTeleportedAsset`.
    
    
    ## Questions
    
    - [x] Can we remove now also `Hardcoded till the XCM pallet is fixed`
    for `deposit_asset`? E.g. for AssetHubKusama
    [here](https://github.com/paritytech/polkadot-sdk/blob/7cbe0c76/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/weights/xcm/mod.rs#L129-L134)
    - [x] Are comments like
    [this](https://github.com/paritytech/polkadot-sdk/blob/7cbe0c76/polkadot/runtime/kusama/src/weights/xcm/mod.rs#L94)
    `// Kusama doesn't support ReserveAssetDeposited, so this benchmark has
    a default weight` still relevant? Shouldnt be removed/changed?
    
    
    ## TODO
    
    - [x] `bench bot` regenerate xcm weights for all runtimes
    - [x] remove hard-coded stuff from system parachain weight files
    - [ ] when merged, open `polkadot-fellow/runtimes` PR
    
    ## References
    
    Fixes #1132
    Closes #1132
    Old polkadot repo [PR](https://github.com/paritytech/polkadot/pull/7546)
    
    ---------
    
    Co-authored-by: command-bot <>
    e3c97e48