Managing SAs on multiple Reserve chains for same asset

,

Parachains will likely want to interact with DOT on multiple system chains: BridgeHub, Collectives, Coretime, People, etc.

But, I agree that Asset Hub is “the painpoint”, because:

  • it has the most varied interactions,
  • asset transfers to/from AssetHub usually involve multiple assets not just DOT, which complicates matters.

I’m not sure disabling teleports altogether will improve the situation that much because of then having to deal with “stacked reserves” and their balances which is not that different than dealing with current SA balances.

I do however see a low-hanging fruit:

“All roads lead to Asset Hub”

Parachains move their DOT reserves from the Relay chain to Asset Hub. Subsequent DOT transfers to and fro all go through Asset Hub.
While this is slightly less efficient than interacting directly with another system chain, it eliminates the SAs managing problem for parachains. They have single SA account on AH holding all their reserved DOT.

This is IMO the least disruptive and fastest solution. Back-of-the-envelope implementation plan:

  1. Relay chain provides an easy way to transfer DOT to any other parachain, but going through AssetHub - teleport to AH then reserve transfer to dest - I can implement this in pallet-xcm and expose it as an easy to use extrinsic - reverse direction should be just as easy,
  2. Parachains migrate their DOT reserves from Relay to Asset Hub, then can even stop accepting the Relay Chain as trusted reserve of DOT. In practice, this is a multi-phase process:
    2.1. There will be a window where both Relay and AH have to be accepted as reserves and parachain has to manage SAs - this window can be big or small depending on how fast a Parachain works with wallets to switch over the “transfer method” for DOT to their chain.
    2.2. When deciding to close the window, just teleport SA balance on Relay to SA on AssetHub, stop accepting RelayChain as a trusted reserve of DOT.
2 Likes