Skip to content
  • Branislav Kontur's avatar
    Ensure outbound XCMs are decodable with limits + add `EnsureDecodableXcm`... · 118cd6f9
    Branislav Kontur authored
    Ensure outbound XCMs are decodable with limits + add `EnsureDecodableXcm` router (for testing purposes) (#4186)
    
    This PR:
    - adds `EnsureDecodableXcm` (testing) router that attempts to *encode*
    and *decode* passed XCM `message` to ensure that the receiving side will
    be able to decode, at least with the same XCM version.
    - fixes `pallet_xcm` / `pallet_xcm_benchmarks` assets data generation
    
    Relates to investigation of
    https://substrate.stackexchange.com/questions/11288 and missing fix
    https://github.com/paritytech/polkadot-sdk/pull/2129 which did not get
    into the fellows 1.1.X release.
    
    ## Questions/TODOs
    
    - [x] fix XCM benchmarks, which produces undecodable data - new router
    catched at least two cases
      - `BoundedVec exceeds its limit`
      - `Fungible asset of zero amount is not allowed`  
    - [x] do we need to add `sort` to the `prepend_with` as we did for
    reanchor [here](https://github.com/paritytech/polkadot-sdk/pull/2129)?
    @serban300 (**created separate/follow-up PR**:
    https://github.com/paritytech/polkadot-sdk/pull/4235)
    - [x] We added decoding check to `XcmpQueue` -> `validate_xcm_nesting`,
    why not to added to the `ParentAsUmp` or `ChildParachainRouter`?
    @franciscoaguirre
    
     (**created separate/follow-up PR**:
    https://github.com/paritytech/polkadot-sdk/pull/4236)
    - [ ] `SendController::send_blob` replace `VersionedXcm::<()>::decode(`
    with `VersionedXcm::<()>::decode_with_depth_limit(MAX_XCM_DECODE_DEPTH,
    data)` ?
    
    ---------
    
    Co-authored-by: default avatarAdrian Catangiu <[email protected]>
    118cd6f9
This project manages its dependencies using Cargo. Learn more