Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
Statemint Should Not Recognise DOT Reserves (#1318)
Browse files Browse the repository at this point in the history
* recognise no reserves

* adjust should_execute

* docs and pass should_execute

* typo
  • Loading branch information
joepetrowski authored Jun 1, 2022
1 parent e403b26 commit 0c4a9f0
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 7 deletions.
5 changes: 3 additions & 2 deletions parachain-template/runtime/src/xcm_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -137,13 +137,14 @@ impl ShouldExecute for DenyReserveTransferToRelayChain {
return Err(()) // Deny
}

// allow reserve transfers to arrive from relay chain
// An unexpected reserve transfer has arrived from the Relay Chain. Generally, `IsReserve`
// should not allow this, but we just log it here.
if matches!(origin, MultiLocation { parents: 1, interior: Here }) &&
message.0.iter().any(|inst| matches!(inst, ReserveAssetDeposited { .. }))
{
log::warn!(
target: "xcm::barriers",
"Unexpected ReserveAssetDeposited from the relay chain",
"Unexpected ReserveAssetDeposited from the Relay Chain",
);
}
// Permit everything else
Expand Down
5 changes: 3 additions & 2 deletions parachains/common/src/xcm_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,14 @@ impl ShouldExecute for DenyReserveTransferToRelayChain {
return Err(()) // Deny
}

// allow reserve transfers to arrive from relay chain
// An unexpected reserve transfer has arrived from the Relay Chain. Generally, `IsReserve`
// should not allow this, but we just log it here.
if matches!(origin, MultiLocation { parents: 1, interior: Here }) &&
message.0.iter().any(|inst| matches!(inst, ReserveAssetDeposited { .. }))
{
log::warn!(
target: "xcm::barrier",
"Unexpected ReserveAssetDeposited from the relay chain",
"Unexpected ReserveAssetDeposited from the Relay Chain",
);
}
// Permit everything else
Expand Down
5 changes: 4 additions & 1 deletion parachains/runtimes/assets/statemine/src/xcm_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,10 @@ impl xcm_executor::Config for XcmConfig {
type XcmSender = XcmRouter;
type AssetTransactor = AssetTransactors;
type OriginConverter = XcmOriginToTransactDispatchOrigin;
type IsReserve = NativeAsset;
// Statemine does not recognize a reserve location for any asset. This does not prevent
// Statemine acting _as_ a reserve location for KSM and assets created under `pallet-assets`.
// For KSM, users must use teleport where allowed (e.g. with the Relay Chain).
type IsReserve = ();
type IsTeleporter = NativeAsset; // <- should be enough to allow teleportation of KSM
type LocationInverter = LocationInverter<Ancestry>;
type Barrier = Barrier;
Expand Down
5 changes: 4 additions & 1 deletion parachains/runtimes/assets/statemint/src/xcm_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,10 @@ impl xcm_executor::Config for XcmConfig {
type XcmSender = XcmRouter;
type AssetTransactor = AssetTransactors;
type OriginConverter = XcmOriginToTransactDispatchOrigin;
type IsReserve = NativeAsset;
// Statemint does not recognize a reserve location for any asset. This does not prevent
// Statemint acting _as_ a reserve location for DOT and assets created under `pallet-assets`.
// For DOT, users must use teleport where allowed (e.g. with the Relay Chain).
type IsReserve = ();
type IsTeleporter = NativeAsset; // <- should be enough to allow teleportation of DOT
type LocationInverter = LocationInverter<Ancestry>;
type Barrier = Barrier;
Expand Down
5 changes: 4 additions & 1 deletion parachains/runtimes/assets/westmint/src/xcm_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,10 @@ impl xcm_executor::Config for XcmConfig {
type XcmSender = XcmRouter;
type AssetTransactor = AssetTransactors;
type OriginConverter = XcmOriginToTransactDispatchOrigin;
type IsReserve = NativeAsset;
// Westmint does not recognize a reserve location for any asset. This does not prevent
// Westmint acting _as_ a reserve location for WND and assets created under `pallet-assets`.
// For WND, users must use teleport where allowed (e.g. with the Relay Chain).
type IsReserve = ();
type IsTeleporter = NativeAsset; // <- should be enough to allow teleportation of WND
type LocationInverter = LocationInverter<Ancestry>;
type Barrier = Barrier;
Expand Down

0 comments on commit 0c4a9f0

Please sign in to comment.