I'm exploring the deployment of a parachain with an HRMP channel from AssetHub on day 1 to facilitate the migration of preexisting assets. Due to governance processes, this can take up to 28 days for the proposal to pass and the channel to open. As the parachain's runtime is still under development, I seek methods to initiate this process in parallel.

AFAIK deploying a seedling/shell parachain with the correct paraId allows for the opening of the channel before the actual runtime deployment. However, I'm curious if it's feasible to open the HRMP channel solely with the paraId, omitting the need for a seedling/shell runtime. This approach would streamline the process by eliminating the necessity of replacing the seedling with the final parachain runtime.

  • Based on this, the answer is no as both parachains have to send messages and you cannot do that unless you deploy a shell parachain with at least abilities to send UMPs to the relay chain.
    – kianenigma
    Feb 22 at 13:53

2 Answers 2


From my understanding they will need to use force_open_hrmp_channel any way, because they want to open a channel to a system chain. Looking over the code, I don't see any requirement for the parachain to already be onboarded or similar.

  • To mix my answer with this: under normal cases, you would need a parachain, because you have to call hrmp_init_open_channel and there is no easy way to obtain ensure_parachain if the message is not coming from the parachain. But since it is with a system chain, they actually need ChannelManager, since you have to call force_open_hrmp_channel.
    – kianenigma
    Feb 22 at 15:32
  • I do not think it will work without an onboarded para: github.com/paritytech/polkadot-sdk/blob/…
    – NachoPal
    Feb 23 at 13:05

Since the need of going through Governance is unavoidable (because you want to open the channel with a System Para), I would just prepare the force_open_hrmp_channel proposal scheduled to be executed at block X.

By block X, your Parachain should be already onboarded with the final runtime. This simplifies the process - no Seedling runtime, no migration... nothing.

The obvious downside is that you’ll have to commit to having the runtime ready by then, which I'm not sure is possible for you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.