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.

20 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.

5 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.

6 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.

4 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.

1 Like

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.

3 Likes

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.

2 Likes

@joyce A few questions:

  1. Based on the current introduction document, as far as I understand, for parachains, we do not need to manually transfer the DOT on the relay chain sovereign address to AH. After the migration is completed, the DOT on the sovereign address will be automatically transferred to the parachain sovereign address on AH?

  2. I noticed that the public keys of the sovereign address on the relay chain and the sovereign address on AH are not the same for parachains. During the migration process, will such a difference cause DOT to be mistakenly transferred to the wrong address on AH instead of the actual sovereign address on AH?

  3. For some parachains that use derivative addresses of sovereign addresses, these derivative addresses seem to face the same problem as described in question 2. Do we have preparations and plans for this problem?

  4. For the DOT in the crowdloan that has not been unlocked and the DOT locked in staking, can we directly retrieve the corresponding assets on AH after the migration? Similarly, assets in different pallets may also face the problem mentioned above that the public keys of the parachains sovereign addresses (and their derivative addresses) on the relay chain and AH are different. How should we deal with this problem?

Thanks in advance!

Hi @0xYancy, all good questions:

  1. Yes this is correct, we’re transferring all account balances over.
  2. Also correct, and which changes the weight of need in “we do not need to manually transfer” - it’s likely that you’ll want to teleport the funds over as Bryan noted above, but if you don’t there will be a mechanism to prove that you owned the account on the Relay and can recover the funds to the correct address on AH. Since this will require your chain’s sovereign account it will either need governance or sudo to run this, so that has a bearing on whether you decide to teleport before the migration or to recover them afterwards.
  3. Also solved by the solution to 2, but likely better to teleport these funds too.
  4. In phase one (before we increase the ED) we are leaving crowdloans on the relay and calls to withdraw, refund and dissolve will be allowed as normal and they will release funds to the relay chain accounts in question. In the mean time we are planning to introduce a mechanism to be refunded directly to AH which will be deployed at some point later this year.
3 Likes

Thank you very much for your reply. Regarding the second point, I still have some extended situations to clarify and discuss:

  • From our perspective, the ideal solution would be to directly map the sovereign and derived addresses on the relay chain to the corresponding correct addresses on AH during the automatic migration process. Is there an opportunity for us to push for this form (i.e., preparing special address mappings before the migration)? This is because if we have to manually teleport the funds before migration, it would require us to unstake the DOT from staking, which would result in a loss of 28 days of staking rewards. This is nearly unacceptable for LST users. Furthermore, after transferring the DOT to AH before migration, since AH currently does not have a staking pallet, we would lose even more staking rewards until migration is completed and staking can occur on AH.
  • Regarding the recovery mechanism using SUDO after migration, will this mechanism be effective for all types of balances? For example, after migration, the DOT in staking on the sovereign or derived addresses on the parachain should be directly migrated to the corresponding address on AH (which in our case would be the wrong address), and it would continue to earn staking rewards. In this case, can we use the recovery mechanism to transfer the DOT from staking to the correct derived address on AH, while keeping the staking status intact so that rewards can continue seamlessly?

Overall, we hope to push for a solution where these special address mappings are prepared in advance so that the automatic migration can directly complete this mapping, allowing the DOT in staking to continue earning normal rewards during the migration.

If the recovery mechanism is smooth and supports the restoration of assets in staking, and if it is available immediately after migration, this could also be a very good solution.

Manually teleporting the funds in advance would cause too much loss of rewards, which would be very difficult for users and parachain project teams to accept. Therefore, we hope to avoid this as much as possible and explore other solutions to address this issue.

Yes, we are aiming to improve this situation. We had originally considered using a hardcoded mapping for derived accounts (not just parachain SAs) from one point to another, but having a list of accounts and transferring from one to another could lead to undesired results.

I discussed it with Adrian, who proposed an opt-in mechanism on chain (described here), where you could register ahead of time for your funds to be mapped from account X on the relay to account Y on AH, then sign it with account X. This would avoid the bad UX of recovery/the unbonding time of needing to teleport manually while removing the “trust me bro” look up table of account mappings.

We’d still have the recovery mechanism for people who don’t register in time. Basti suggested on the issue that we could still do all the parachain SAs without requiring opt-in. With SAs it’s pretty clear what they want to happen, then any other derived accounts could use the opt in mechanism.

2 Likes

Asset Hub Migration: monthly update

Reserve locations

For the migration, all Parachains will need to update their reserve locations in their XCM config for DOT to Asset Hub instead of the Relay Chain. You can find documentation on how to set your reserve location here. Feel free to comment on the document, so that we’re improving for the migration on Kusama and Polkadot.

This should not be confused with the reserve balance, which will be automatically migrated by Parity as part of the project. More to that can be found in the FAQ.

Asset Hub Next on Westend

AH-next is nearing completion and will be deployed on Westend with the current staking mechanism, where the staked balances of nomination pools are locked and can’t be used for voting.

The deployment of Asset Hub Next will be accompanied by a list of critical user journeys to guide wallets/dapps/CEX testing.

4 Likes

Thank you very much and sincerely, opt-in custom account migration mapping is exactly the solution we need, which can solve most of our problems and troubles! :heart: