# ICRC Ledger Suite Upgrade

**URL:** <https://forum.dfinity.org/t/icrc-ledger-suite-upgrade/40655>\
**Category:** Rust\
**Created:** [January 29, 2025, 2:01pm UTC](https://forum.dfinity.org/t/icrc-ledger-suite-upgrade/40655 "2025-01-29T14:01:34Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![mathiasb](https://avatars.discourse-cdn.com/v4/letter/m/f475e1/32.png) [@mathiasb](https://forum.dfinity.org/u/mathiasb)\
**Post date:** [January 29, 2025, 2:01pm UTC](https://forum.dfinity.org/t/icrc-ledger-suite-upgrade/40655/1 "2025-01-29T14:01:35Z")

</div>

# Overview

Throughout the development and maintenance of our ledgers, we have prioritized maintaining a key invariant: the ability to downgrade from any version of the ledger to its immediately preceding version. However, the DFINITY Financial Integration team recently worked on migrating the ledgers to use stable storage for key data structures, including balances and approval information. This transition inherently breaks the aforementioned invariant. Additionally, migrating from heap-based data storage to stable storage involves a series of carefully orchestrated steps, each of which introduces critical changes that subsequent upgrades depend upon. This means that upgrading to the latest ICRC ledger suite version must be done with care and attention to the prescribed upgrade sequence.

This document provides a detailed guide to effectively navigating ICRC ledger suite upgrades. It outlines the necessary steps, considerations, and best practices for ensuring a smooth transition between versions while minimizing potential issues.

# Ledger Suite and Upgrade Process

1. **Ledger Suite Components:**

2. **Versioned Release Process:**

3. **Sequential Upgrades:**

4. **Component Upgrade Order:**

5. **Performing Upgrades:**

6. **Verifying Upgrades:**

# Upgrading from Non-Released Versions

The points above provide general guidelines for upgrading between officially released versions of the ledger suite. If your ledger suite is running a non-released version or you are unsure which version it is currently running, the following steps can help you upgrade to an official release and migrate your ledger to stable memory.

1. Determine the currently installed ledger version

2. Determine the canister version to upgrade to

3. For each canister in the ledger suite, in the order specified in step #4 in the previous section, test the upgrade, take a snapshot, perform the upgrade, and verify the upgrade using the steps #5 and #6 in the previous section.

4. Repeat steps #2 and #3 until the ledger is at the latest release.

5. Don’t upgrade the production ledger suite canisters on a Friday 😉

---

<div class="post-metadata">

**Author:** ![frederico02](https://avatars.discourse-cdn.com/v4/letter/f/7bcc69/32.png) [@frederico02](https://forum.dfinity.org/u/frederico02)\
**Post date:** [January 30, 2025, 1:18pm UTC](https://forum.dfinity.org/t/icrc-ledger-suite-upgrade/40655/2 "2025-01-30T13:18:06Z")

</div>

Is this taken care of for SNS deployed and controlled ledger suites?

---

<div class="post-metadata">

**Author:** ![mathiasb](https://avatars.discourse-cdn.com/v4/letter/m/f475e1/32.png) [@mathiasb](https://forum.dfinity.org/u/mathiasb)\
**Post date:** [January 30, 2025, 1:41pm UTC](https://forum.dfinity.org/t/icrc-ledger-suite-upgrade/40655/3 "2025-01-30T13:41:42Z")

</div>

> Is this taken care of for SNS deployed and controlled ledger suites?

Yes, in the sense that the ledger suite versions are blessed in the appropriate order, and the upgrade path has been tested. It is still up to the individual SNSs to make proposals to perform the upgrades.

---

<div class="post-metadata">

**Author:** ![Dustin](https://avatars.discourse-cdn.com/v4/letter/d/5daacb/32.png) [@Dustin](https://forum.dfinity.org/u/Dustin)\
**Post date:** [February 19, 2025, 3:49pm UTC](https://forum.dfinity.org/t/icrc-ledger-suite-upgrade/40655/4 "2025-02-19T15:49:40Z")

</div>

Are you going to post here about subsequent upgrades of the ICRC ledger suite or where can we stay up to date about those? @mathiasb

---

<div class="post-metadata">

**Author:** ![mathiasb](https://avatars.discourse-cdn.com/v4/letter/m/f475e1/32.png) [@mathiasb](https://forum.dfinity.org/u/mathiasb)\
**Post date:** [February 19, 2025, 5:24pm UTC](https://forum.dfinity.org/t/icrc-ledger-suite-upgrade/40655/5 "2025-02-19T17:24:28Z")

</div>

The releases can be found [here](https://github.com/dfinity/ic/releases?q=ledger-suite-icrc&expanded=false). If it would be helpful, we could also try to update this thread. If we later decide to e.g., post in another thread, or in separate threads per release, we can inform about that here also.

---

<div class="post-metadata">

**Author:** ![mathiasb](https://avatars.discourse-cdn.com/v4/letter/m/f475e1/32.png) [@mathiasb](https://forum.dfinity.org/u/mathiasb)\
**Post date:** [April 30, 2025, 8:28am UTC](https://forum.dfinity.org/t/icrc-ledger-suite-upgrade/40655/6 "2025-04-30T08:28:09Z")

</div>

The [ledger-suite-icrc-2025-04-14](https://github.com/dfinity/ic/releases/tag/ledger-suite-icrc-2025-04-14) release has been marked as ready. It has been rolled out to some test token ledgers and the ckERC20 chain fusion token ledgers, and will be rolled out to ckBTC and the SNS ledgers in the coming days.

---

<div class="post-metadata">

**Author:** ![mathiasb](https://avatars.discourse-cdn.com/v4/letter/m/f475e1/32.png) [@mathiasb](https://forum.dfinity.org/u/mathiasb)\
**Post date:** [June 19, 2025, 8:15am UTC](https://forum.dfinity.org/t/icrc-ledger-suite-upgrade/40655/7 "2025-06-19T08:15:23Z")

</div>

The [ledger-suite-icrc-2025-06-10](https://github.com/dfinity/ic/releases/tag/ledger-suite-icrc-2025-06-10) release has been marked as ready, and it has been successfully rolled out to the SNSs. This release adds support for [ICRC-106](https://github.com/dfinity/ICRC-1/pull/196).
