xcm-executor: validate destinations for ReserveWithdraw and Teleport transfers (#5660)
This change adds the required validation for stronger UX guarantees when using `InitiateReserveWithdraw` or `InitiateTeleport` XCM instructions. Execution of the instructions will fail if the local chain is not configured to trust the "destination" or "reserve" chain as a reserve/trusted-teleporter for the provided "assets". With this change, misuse of `InitiateReserveWithdraw`/`InitiateTeleport` fails on origin with no overall side-effects, rather than failing on destination (with side-effects to origin's assets issuance). The commit also makes the same validations for pallet-xcm transfers, and adds regression tests. --------- Signed-off-by:Adrian Catangiu <adrian@parity.io> Co-authored-by:
Branislav Kontur <bkontur@gmail.com>
Showing
- cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/lib.rs 1 addition, 0 deletions...n-tests/emulated/tests/assets/asset-hub-rococo/src/lib.rs
- cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/hybrid_transfers.rs 10 additions, 1 deletion...sts/assets/asset-hub-rococo/src/tests/hybrid_transfers.rs
- cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs 55 additions, 0 deletions...sts/assets/asset-hub-rococo/src/tests/reserve_transfer.rs
- cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/teleport.rs 51 additions, 0 deletions...lated/tests/assets/asset-hub-rococo/src/tests/teleport.rs
- cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/lib.rs 1 addition, 0 deletions...-tests/emulated/tests/assets/asset-hub-westend/src/lib.rs
- cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/hybrid_transfers.rs 10 additions, 1 deletion...ts/assets/asset-hub-westend/src/tests/hybrid_transfers.rs
- cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs 55 additions, 0 deletions...ts/assets/asset-hub-westend/src/tests/reserve_transfer.rs
- cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/teleport.rs 51 additions, 0 deletions...ated/tests/assets/asset-hub-westend/src/tests/teleport.rs
- cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-rococo/src/lib.rs 1 addition, 0 deletions...tests/emulated/tests/bridges/bridge-hub-rococo/src/lib.rs
- cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-rococo/src/tests/asset_transfers.rs 10 additions, 0 deletions...ts/bridges/bridge-hub-rococo/src/tests/asset_transfers.rs
- cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-westend/src/lib.rs 5 additions, 1 deletion...ests/emulated/tests/bridges/bridge-hub-westend/src/lib.rs
- cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-westend/src/tests/asset_transfers.rs 10 additions, 0 deletions...s/bridges/bridge-hub-westend/src/tests/asset_transfers.rs
- polkadot/xcm/pallet-xcm/src/lib.rs 20 additions, 0 deletionspolkadot/xcm/pallet-xcm/src/lib.rs
- polkadot/xcm/xcm-builder/tests/scenarios.rs 4 additions, 16 deletionspolkadot/xcm/xcm-builder/tests/scenarios.rs
- polkadot/xcm/xcm-executor/src/lib.rs 18 additions, 5 deletionspolkadot/xcm/xcm-executor/src/lib.rs
- polkadot/xcm/xcm-simulator/example/src/relay_chain/xcm_config/mod.rs 2 additions, 1 deletion...m/xcm-simulator/example/src/relay_chain/xcm_config/mod.rs
- polkadot/xcm/xcm-simulator/example/src/relay_chain/xcm_config/teleporter.rs 26 additions, 0 deletions...imulator/example/src/relay_chain/xcm_config/teleporter.rs
- prdoc/pr_5660.prdoc 30 additions, 0 deletionsprdoc/pr_5660.prdoc