Upcoming Runtime Upgrades on Centrifuge 1018 and Altair 1026

Hello Community! :raised_hand:
We are ready to propose a runtime upgrade with the following content:


We are excited to announce the inclusion of Pools in the Centrifuge runtime, a significant enhancement to our platform. As a result, investors will now have the opportunity to invest in RWA Pools on the purpose-built Centrifuge chain, which operates under the robust security umbrella of Polkadot.

This new feature complements the existing Tinlake on Ethereum, expanding investment options for our valued users. No migrations.

  • Register CFG and DOT in the Asset Registry

When we first added XCM to our runtimes (first Altair and later Centrifuge), the first token we supported was Acala’s AUSD and for that we just added AUSD as a hardcoded variant of our CurrencyId enum type. That type enumerates all the currency ids that the Centrifuge chain knows about or is able to handle. Later, improving our XCM setup, we introduced the ORML asset registry for two purposes:

  1. So that we could support new tokens through XCM by simply registering them in the asset registry instead of hardcoding them in the CurrencyId type and thus not require runtime upgrades to support new tokens.
  2. So that we had a standardised way of querying metadata for all tokens that Centrifuge handles, i.e, both native tokens like CFG and Tranche tokens, as well as “foreign” tokens like AUSD, USDC, etc.

This motion is now a step into cleaning up that first legacy, “hardcoding”-based approach; we do that by dropping those hardcoded currency variants (AUSD and KSM (the latter only applicable on Altair)) and have them registered as Currency::ForeignAsset(<asset_id>) in the asset registry instead.
The next step will be to migrate all balances that are now under CurrencyId::AUSD and CurrencyId::KSM to CurrencyId::ForeignAsset(<aUSD_asset_id>) and CurrencyId::ForeignAsset(<ksm_asset_id>), respectively.

GitHub issue covering this work: centrifuge/centrifuge-chain#826


  • InterestAccrual V2 (#1157): This updates pallet-interest-accrual to store all rates in a vec, rather than in an array. This makes rate accrual and nav updates much faster, at the cost of slightly slower rate lookup for operations on individual loans (borrow, repay, write-off)
  • Loans refactor (#1266): Remove pallet-loans storage and replace the pallet with `pallet-loans-ref
  • PoolSystem (#1285): Remove duplicate metadata hash from pool-system

Common changes

  • Refactor pallet-loans to allow better scalability in loans. Instead of choosing between fixed loan types, they can now be composed with different valuations/restrictions/schedules—improvements in the written-off systems and a lot of simplifications to reason easier about loans as a borrower (#1180)

  • For more details, please check the corresponding specification

  • Significantly improved interest rate accrual and NAV update efficiency (#1157)

  • Added new proxy type PermissionManagement which will be used for adding new investors by onboarding API (#1197)


The Council will propose the Runtime Upgrade on Altair first and after on Centrifuge.

As soon as the Council motion has been initiated for the upgrade, we will keep you posted with the governance process on the Forum.