Asset Hub Migration 2025

Dear Polkadot Community,

Following the announcement of “A Roadmap to a More Accessible Polkadot”, we would like to share more details of one of our upcoming projects that contributes to this higher effort.

In the upcoming months we will be working on minimising the workload on the Relay Chain and migrating the main user functionality over to Asset Hub. This involves moving the pallets and states associated with the following subsystems:

  • Staking
  • Governance (including Treasury)
  • Balances

Detailed information on the scope, timelines, and milestones of this migration can be found here.

TL;DR

We will start our first rounds of testing the migration by the end of December 2024. With everyone else ready to start testing their integrations, chains, and apps in the beginning of the year 2025. We are targeting inclusion in the Feb Substrate SDK release. Based on the standard release cycles we will migrate the pallets on Kusama by Q2 2025 and on Polkadot by Q3 2025.

Why are we doing this?

By leveraging Asset Hub with the aforementioned pallets, we expect to improve the overall developer experience on Polkadot by reducing fragmentation, making integration with the entire ecosystem easier, and lowering barriers to entry.

Impact on the broader community

Our goal is to migrate seamlessly with minimal to no impact on chains, end users, and integrations. However, we recognize that this is a significant change that could present unforeseen challenges. To address these, we are collaborating with partners and builders to identify and respond to any questions or concerns that may arise.

Additionally, we have prepared an FAQ covering various topics, including UI, multi-sig accounts, and XCM. If you have any additional questions, risks that you foresee, or any other considerations or important points you would like us to take into account, please leave it here and we will try to address those.

19 Likes

I have many questions.

The timelines in the doc doesn’t make sense to me.

  • Migration is deployed on Kusama node release at the end of March.
  • Node testing and final preparations in parallel with the sdk release QA period.
  • Further bugs were reported and fixed.
  • Node release was included in the Fellowship Runtime release (mid of May 2025).

Node releases are irrelevant.
Runtime release is a runtime release. We don’t include node release in a runtime release.

  1. When the migration code is expected to be completed?
  2. When the migration is expected to be deployed on Kusama?
  3. … and Polkadot?
  4. What are the tracking issues for the migration in polkadot-sdk? And integration in runtimes repo?
  5. What pallets will be removed from relaychain runtimes? (e.g. staking)
  6. What pallets will be added to the AH runtimes? (e.g. staking)
  7. What pallets will co-exists on both relaychain and AH runtimes (e.g. multisig?)
  8. It appears that DOT balances will be automatically migrated to AH but

For users, do we need to dissolve the Polkadot multi-sig support on the relay chain?
No, the multi-sigs and proxies will still be supported for as long as we have balances-related work on the relay chain.

I don’t really understand what does this trying to say. I guess existing multisig and proxies will say on relaychain? But all the free DOT will be automatically migrated to AH? So we need to teleport them back to use existing multisig and prxies? How about deposits?

  1. I need a complete technical doc about how to change XCM reserve location for DOT/KSM and FAQ and security considerations.
  2. If relaychain tokens are automatically migrated from relaychain to AH, that means parachains have to update XCM reserve location migration before the migration day. But there is zero chance that all parachains will migrate at a same time. So we need to handle the case that some parachains are using relaychain as reserve location and some use AH as reserve location.

My suggestions:

Don’t do one off big migration. That’s the general coding best practice. Breakdown a big task into multiple small ones and do them one by one.

So let’s break it into two pieces: Onchain work and offchain work.

Offchain work

All the work that’s not part of the runtime. e.g. dApp changes, Exchanges, Indexer, wallets, etc.

Phases:

  • Require all offchain applications to support AH.

    • Require exchanges to support AH as deposit/withdraw location for DOT
    • Require wallets to include DOT balances on AH.
    • Require bridge UI to support AH as a target for DOT transfer.
    • etc
  • Soft deprecate relaychain.

    • Require exchanges to make AH as the default withdraw location
    • Require dApps uses AH as the default target for DOT transfer
    • etc
  • Hard deprecate relaychain

    • Require exchanges to stop support relaychain as deposit/withdraw location for DOT
    • Wallets ask user to teleport their DOT on relaychain to AH
    • etc
  • Final migration

    • Nothing to do at this stage

Onchain work

Actual runtime work required on both relaychain runtimes, AH runtimes, and all other parachains

Phases:

  • Migrate governance pallets
    • We should just do the same thing we did when migrating from old gov to OpenGov. i.e. No migration.
    • We launch the new governance pallets on AH, and having it co-exists with relaychain gov for a period of time.
    • Once AH gov is up and working, we can soft-deprecate all the proposals on relaychain. e.g. Nay all the new one and ask people to submit them on AH instead. Ongoing one have no impacts. Or we can simply disable the calls to make new proposals on relaychain.
    • After all the ongoing one are cleared, we remove gov pallets on relaychain. No data to migrate.
  • Migrate staking
    • Someone more familiar with staking pallets to make up some plan. It could be a one off migration with a period of downtime that people wouldn’t be able to make any staking related actions.
    • Need to make sure liquid staking solutions are remaining functional.
  • Migrate other pallets
    • Someone needs to come up a list of pallets to migrate before a plan can be drafted
  • Final migration
    • This is happening after the hard deprecate relaychain phase so exchanges and many user balances are hopefully self migrated to AH. Staking balances are also migrated. So the amount of state to migrate should be less and therefore much smaller impacts.

I will also demand that parachains must have at least 6 months time for the implementation of the migration. The time cannot start unless a detailed migration plan with tutorials are released. At this stage, I am not able to make any planning due to lake of details.

4 Likes

Happy new year @xlc and thank you for your questions. I will clarify them here and update the docs/faqs accordingly.

The timelines in the doc doesn’t make sense to me.

  • Migration is deployed on Kusama node release at the end of March.
  • Node testing and final preparations in parallel with the sdk release QA period.
  • Further bugs were reported and fixed.
  • Node release was included in the Fellowship Runtime release (mid of May 2025).

Node releases are irrelevant.

There might be some changes required in the pallets, those will be released in the SDK Stable releases, thus they are relevant.

Runtime release is a runtime release. We don’t include node release in a runtime release.

Yes, but due to the crates dependencies, the runtime repo needs to be updated to the newest SDK version as well. Thus, we have it included in the plan. I will correct the wording :slight_smile:

  1. When the migration code is expected to be completed?

We’re planning to run the first migration on Westend in Q1. After that and depending on the results of the migration and feedback from partners, we will continue with the migration roll out on Kusama in Q2. With each migration step we will help with any issues, get feedback and we learn with the process, after that we will wait for the SDK release at the end of June and then deploy on Polkadot based on our latest outcomes. Currently we can’t give you an exact date, but if you keep following this thread, you will get regular updates and we will keep you informed about the progress of the timeline.

  1. When the migration is expected to be deployed on Kusama?

In Q2, see timeline and answer on 1.

  1. … and Polkadot?

In Q3, see timeline and answer on 1.

  1. What are the tracking issues for the migration in polkadot-sdk? And integration in runtimes repo?

You can find in this project all the issues related to the migration.

  1. What pallets will be removed from relaychain runtimes? (e.g. staking)

All pallets related to:

  • Staking
  • Governance
  • Balances

A detailed list of the pallets can be found here.

  1. What pallets will be added to the AH runtimes? (e.g. staking)

See detailed list above.

  1. What pallets will co-exists on both relaychain and AH runtimes (e.g. multisig?)

See detailed list above.

  1. It appears that DOT balances will be automatically migrated to AH but

For users, do we need to dissolve the Polkadot multi-sig support on the relay chain?
No, the multi-sigs and proxies will still be supported for as long as we have balances-related work on the relay chain.

I don’t really understand what does this trying to say. I guess existing multisig and proxies will say on relaychain? But all the free DOT will be automatically migrated to AH? So we need to teleport them back to use existing multisig and prxies? How about deposits?

See answer nr 10.

  1. I need a complete technical doc about how to change XCM reserve location for DOT/KSM and FAQ and security considerations.

This is currently being worked on and will be shared soon.

  1. If relaychain tokens are automatically migrated from relaychain to AH, that means parachains have to update XCM reserve location migration before the migration day. But there is zero chance that all parachains will migrate at a same time. So we need to handle the case that some parachains are using relaychain as reserve location and some use AH as reserve location.

Yes, parachains need to update their XCM reserve location and yes we have considered the use case as well that not all parachains might have their reserve location updated.

We’re planning to move the funds off the relay chain in three phases.

  1. Phase 1 primarily removes the main ways funds can be frozen/locked/reserved/put on hold. The exceptions are:

  2. HRMP, parachain registration which will not be migrated or call filtered

  3. Multisigs and proxies which will be migrated (funds and state moved to AH) but not call filtered, so people can recreate them if they need/want.

All other pallets which can create locks/holds/reserves/freezes will be call filtered and subsequently removed from the RC to mean that the only funds on the RC are free balances and the previously mentioned pallets. This phase will not increase the ED of the RC to 10 DOT yet, to allow integration partners time to make mistakes without hard penalties e.g. large numbers of users being dusted for ~50 USD each because an exchange has not had time/not been willing to change and the ED has been raised right away. The ED will be raised to 10 DOT for the incentive to still hold, but just not actually do it until phase 2.

  1. The second migration (probably EOY 2025 or early 2026) will migrate all funds that have been teleported back to the RC in the intervening months back to AH and then increase the ED to 10 DOT
  2. The third migration will move HRMP and parachains registration, migrate any proxies and multisigs to AH where they don’t already exist, again transfer ALL funds from the RC to AH and then remove the balances pallet from the RC.

This three step process balances our aims of:

  • Removing functionality from RC
  • Disincentivising usage of the RC for balance transfers
  • Minimising the impact on integration partners and end users (in phases to allow realistic timescales)
  • Eventually removing balances pallets from the RC

This is something that we newly decided after a deeper investigation of the APIs and will be mirrored in the docs accordingly.

I will also demand that parachains must have at least 6 months time for the implementation of the migration. The time cannot start unless a detailed migration plan with tutorials are released. At this stage, I am not able to make any planning due to lake of details.

We will provide with each migration on each testnet the necessary documentation and guidelines, we’re also here to technically support the Parachains and further Integration teams and learn from the transitions. Parachains teams were informed about the migration and have been onboard since September, this thread is mainly a place to inform the broader ecosystem and keep everyone on track about our steps. The timeline shows the plan that we currently have, but ofc this will be adapted with each iteration, which is also the reason why we can’t give exact dates at the time. Let me know after this if there are still open questions remaining.

5 Likes

Thanks for the answers and additional insights. They are very helpful.

I will wait for the release of the XCM reserve location migration tutorials and see.

For the staking migration, which impacts the liquid staking protocol at Acala, any additional details? It isn’t super clear to me how the staking pallets are migrated and what changes are needed on our side.

The Q2 release on Kusama makes me uncomfortable because we only have <6 months time yet we don’t have enough information to plan and implement necessary changes on our side. We need time to allocate resources, implement the changes, test it, audit it, test it more, and then deploy it. I don’t want to rush such major changes and wanting to ensure everyone have plenty of time to act.

I need a very detailed migration plan. It seems like there will be 3 steps for balances migration. How about other functionalities? How many steps in total and what are they? What calls will be disabled at which steps?

1 Like

Hi Bryan,

Just wanted to follow up on Joyce’s answer to answer a few of your specific points, especially your questions about staking and recommendations for how this should be done.

We have a full list of pallets, their status and what needs to happen for them to run on AH here

We also have got the tracking issues on the project’s public GitHub board separated into verticals which you can check out for more details or for specific implementation details.

Someone more familiar with staking pallets to make up some plan.

This was our idea too - getting people who are best placed to determine the plan for each subsystem and then work through the intersections to get an overall plan for the whole system.

Staking

Staking on a parachain has been a project at Parity for over a year involving Kian, Gonçalo, Ankan and George (among others). Kian wrote the original staking system and Ankan and Gonçalo have been working on the staking system for around 2 years. They have designed and implemented the majority of the pieces required to transition to running on a parachain (more on those specific changes later).

Originally the project aim was left open as to which parachain it would be running on - recently the decision was made that it would be running on Asset Hub as part of the Plaza vision.

The way that staking on a parachain will be achieved has been planned out extensively by the staking team, with input from others and then combined with expertise in the other areas affected to create the overall migration.

All of the major changes in staking are related to:

  • how validators are elected

  • how election results are communicated to the Relay Chain

  • how slashes are communicated and enacted from the Relay Chain to AH

Much of this is a direct result of moving to a parachain, where there are different implications of overweight blocks on AH vs the RC - currently on the relay chain staking works by just accepting that sometimes it will produce overweight blocks, but if this were to happen on Asset Hub it would stall. We are putting bounds on storage, paginating where needed, and allowing the elections and snapshots to run across multiple blocks.

As far as the staking API goes: for any staking user (end user, liquid staking etc) the interface is the same, albeit on AH instead of RC. From this perspective the same staking pallet will be migrated and be running on AH. This means that during the migration, you just need to switch the liquid staking solution over from RC to AH. There will be an entry in the supervisor pallet’s state to note the stage of the migration.

The only major exception to this is that we are also tackling the long standing issue of nomination pool funds not being held in user accounts. We are changing this during the migration, and therefore allowing these funds to be usable in governance. This will impact wallets, as the funds staked in nomination pools will suddenly re-appear in the user account as an amount on hold.

The only detailed change for normal stakers would be that validators would have to set their session keys in relay, and the rest of the operations will happen as-is, just on AH instead of RC (validate, set_commission, etc.)

Overall migration

For the migration, we determined what needed to happen for the migration to be successful for staking and other parts of the system, discussed several options of how that would work and went through many steps of iteration to work out the kinks and where things overlapped to ensure that we have a smooth transition of the system as a whole. We considered going in multiple stages in the early discussions but after exploring it a bit we realised that it is much cleaner to do it in one go for a range of factors.

I’ll not go too deep into those now, but on a high level:

  • It’s not always possible to disentangle each pallet with a balances dependency from the others e.g. locks can overlap, so migrating one pallet’s lock and the associated funds without the others means there are cases where the account no longer has the balance remaining to have the other locks.

  • Migrating staking moves 51% (currently) of the total issuance away from the chain where governance is ongoing - by moving staking or governance first and leaving the other behind would mean that the amount of funds usable for voting is diminished. This can be solved by either changing the curves or writing some method of remote locking, but the extra work and complexity can be avoided by just moving them together in one step. Since governance is relatively easy to move, we decided to go for this option.

Taken from a slide from my presentation at the parachains AHM AMA that we ran in November:

  • Add functionality to AH

  • Special supervisor pallet in runtimes to handle migration of state via XCM during one special era

  • Balances: Account by account, unlock, transfer, re-lock

  • Pallet states: chunked basically 1to1 replication

  • Referenda calls: converted where possible, sent back to RC where not possible

  • Extrinsics to recalculate deposits/locks (decreasing) called by bots

Staking migration

Election pallet - no need to migrate, recreated every era

Bags list - does not need to be transferred, can be recalculated, but needs to be done before the next snapshot

Staking migration steps:

  • Special era begins

  • Slashes applied

  • Migration starts

  • Balances move

  • Staking data moved

  • Bags list recalculated

  • Election pallet state recreated

(block new election signal if we overrun)

  • Migration ends signal

  • Send signal to relay chain to start new election

What calls will be disabled at which steps?

The Staking and Governance calls in particular will be disabled on the relay chain from the start of the special era in which this will all happen. These filters will remain on staking on the relay chain until the pallets are removed.

The supervisor pallet will control the flow of the overall migration and each of its subtasks. A rough order of operations is the following:

  • Temporarily filter all calls affecting balances, staking, governance or other pallets which are moving to avoid the state changing mid-migration

  • Migrate as mentioned above

  • Remove the call filter on calls temporarily filtered that are still allowed (broadly this is just the following pallets: Balances, Multisig, Proxies, HRMP ops and parachain registration)

Remove the state which has been migrated

Remove the pallets that have been moved

Require all offchain applications to support AH.

I would love to be able to do this, but alas I don’t know how this could be achieved. Since this requires an investment in time and/or infrastructure by all those applications it is unlikely that everybody could be induced to switch before they need to, as other business cases would take priority. A lot of weight is in the word “require” - the three step plan that Joyce shared above aims to maximise the number of projects that we have in place to incentivise parts that could still be done on both before removing the functionality completely. For things like staking and governance it doesn’t make sense to have them in two places at once. Requiring people to support AH to me is the same as announcing that this is happening (Sept 2024), communicating it well (subjective but continuing) and providing time, testing and support for the transition.

If there’s any part of that where we could step up let us know! Otherwise we’re trying to get support and guides/tutorials up with time for people to migrate, while also making it a priority to move everything such that we have all the benefits that this brings ASAP.

3 Likes

Thanks for the additional info. It is clear to me now that there are a lot of efforts and thoughts are being put on making up this plan. The additional context helps a lot on why the decisions were made and that make much more sense to me now.

This is a draft migration plan I have for Acala and Karura, please help review:

  1. Governance proposal to pause liquid staking stake/unstake requests
  2. Governance proposal to pause XCM transfers ?? Is this needed ??
  3. Runtime upgrade
  • Change liquid staking XCM dest from relay to AH
  • Add AH as DOT reserve
  1. Wait for AH staking migration to start and complete
    • the liquid staking protocol will still send XCM to AH to withdraw unlocked DOTs and those may fail. We will monitor and record all failed XCM
  2. Governance proposal to issue XCM to teleport reserved DOT on relay to AH ?? is this needed ??
  3. Governance proposal to unpause everything
  4. Governance proposal to resend all the failed XCM during migration period
  5. Runtime upgrade
  • Remove relay as DOT reserve
  1. Governance proposal to teleport all remaining reserved DOT on relay if there are any
  2. Done

To my understanding, the migration will take 1 era (6h on Kusama, 1 day on Polkadot). So the total migration time for Karura will be ~1 day and ~2 days for Acala.

Yea no problem, I was planning to write something a bit more in depth about the plan and our design choices anyway, as a couple of our planning docs were originally internal.

You beat me to it though :slight_smile: I’ll try to keep adding details as and when we come to them and try to update a bit more quickly after plans become concrete. From this point though that verticals board I linked above should contain everything that we’re working on or planning.

Your plan looks solid, I think the only tweaks I would suggest is that 2 isn’t needed, and that you can remove relay as DOT reserve before the migration. You can do the parts of 3, 5 and 8 relating to the reserve location sequentially before the upgrade:

  • Add AH as DOT reserve
  • Gov proposal to teleport reserved DOT on relay to AH
  • Remove Relay as DOT reserve

Cisco’s guide should help to make this all clearer

Here’s the guide for changing the DOT reserve from Relay to Asset Hub: Changing the DOT reserve from the Relay Chain to Asset Hub - HackMD. All feedback welcome.

There’s also a tool linked for testing that the runtime change works.

It’s still necessary to do the gov proposal to teleport reserved DOT on relay to AH, as Dónal mentioned.

1 Like

We cannot teleport DOT reserve to AH until staking migration is completed because those DOT could be used for liquid staking and it will be additional work to handle the case that staking and DOTs are live on two chain.

1 Like