Skip to content

Allow One Chain to be an Account Provider for Another #3861

Open
@joepetrowski

Description

@joepetrowski

A few of us had a discussion about enabling a system where an account in one location (e.g. the Relay Chain) would grant the account owner the ability to create accounts in remote locations (e.g. a system parachain) based on its existence in the provider location.

A system like this would allow accounts to exist on Asset Hub (e.g. to be able to send them assets) provided that the receiver has an account on the Relay Chain.

Full discussion below:


kianenigma

hey, not sure what is the status here but I wanted to bring up something about dealing with existential deposit:

I think it is reasonable to assume if an account has ED in the relay chain, it is eligible for an account across all system chains. We can't really say this about other sovereign parachains, but for system chains it is a reasonable assumption.

then, there would be two options about achieving this:

  1. teleport to all chains, simple but a but cumbersome.
  2. an async verification whereby you transact on the relay chain, an addition lock is put on your ED, a message is sent to system chains that will increase your account's provider counter

I am guessing this might have been discussed in the proposal related to funding accounts in the AH and I was not following it, but I thought it is worth bringing it up here one more time

joe

I quite like this idea, but they both still require the account holder to do something. I think for something like sending an asset to an account on AH that you know exists on the Relay Chain, you want to be able to make another account exist. So you'd have to transact on the Relay Chain and note a target account. But then that holder would need a way to free their account too (otherwise you could just lock other people's balance)

AlexBirdo | 🇩🇪

Most airdrops require the user to 'claim' funds thou

I've never got an airdrop without having to make a tx on my side

joe

Yeah I mean perfect then

You can make it a two-phase process, teleport the ED if necessary and then claim

muharem

what do yo mean here by claim? do we have such functionality/call in asset hub?

why I am asking, if we have such functionality and call for it, it can be even one phase process. it could be some web page with one button to send one xcm program which will teleport from RC and execute the claim with Transact instruction

joe

We don't have a claim function, but I don't see how it could be done in a way that's better than just issuing the asset, because you would need to store (AssetId, AccountId) => Balance, which is what we already store for the assets.

I think in this case when you are claiming from an issuer, you already trust the asset issuer, so a claim function on some app would make the issuer mint the tokens to your account

kianenigma

I quite like this idea, but they both still require the account holder to do something.

maybe.. what if this process of propagating your existence to all system chains is permissionless, so anyone can do it?

The contract is that if you create an account on Polkadot and put ED to it, you get an account on all system chains. Assuming there is good ways to clean up your account in all chains via a UI, it seems like a good contract to me.

So, in this case, it needs no user interaction.

This is all to enable some kind of a 100% no interaction airdrop, I think if transacting is part of the deal, then yeah teleport to all system chains is "easiest". it is still kinda shitty that I need to have eg. 7 DOTs put aside to transact on 7 system chains though

joe

System chain ED is 0.1 DOT (0.01 on AH) 🙂 So 1 DOT for Relay and 1 more would get you up to 10 more chains

The main question is if the permissionless call locks an additional amount on the Relay in order to issue a provider on the para. I don't think you want people to be able to permissionlessly lock other people's funds.

kianenigma

SO if the RC has the highest ED, having ED on RC should imply ED on any system chain that has a smaller ED.

(and for now let's assume ED won't ever change)

I don't think you want people to be able to permissionlessly lock other people's funds.

I was iffy about this as well, but I think this is one of the few reasonable tradeoffs that we can accept. Yes, it is a small issue, but so long as there is a way to kill your account, it is an acceptable tradeoff. I would rephrase it like this:

  1. killing your account is already complicated if you have multiple consumers etc. If we make it slightly more complicated by you first needing to drain your account on all system chains, it seems fine to me. the benefit will then be that AH can be the airdrop-hub as well :)
  2. If this allows someone to make it impossible for you to re-claim your ED (eg sending you some non-transferrable asset on AH that prevent your account from ever being reaped, idk), then I agree it is an issue.

I think to have sustainable airdrops, it is either this, or the disposable-parachain idea

joe

True, we could just say that Relay account implies a right to an account elsewhere. So no need to hold more funds on the Relay, just that it covers all.

But maybe tracks how many remote accounts have been created based on it, and to remove your RC account you need to drop that to 0

Metadata

Metadata

Assignees

No one assigned

    Labels

    T2-palletsThis PR/Issue is related to a particular pallet.T6-XCMThis PR/Issue is related to XCM.

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions