Ledger canister version on mainnet


I’m trying to find which release of the IC contains the code for the deployed Ledger Canister. From dfx canister info I get module hash: 0x900e30c4bf3293244cd4649e8470ece822e18723e9a942decabc32d46257b514.

However when I’m building last two blessed releases I get:

cd33d514ea01782fe870ca69e9108c70d0d63aca695d5a307b075b3b8a7f1837 ledger-canister.wasm
Build complete for revision 5058a1326d45303de376cd1a1dc5303fa27cdb07


6d4322fb5a7f69e7bad355f18425886e073a6d3cb6df607dfcc2b840ac5e1821 ledger-canister.wasm
Build complete for revision 742d0a8399476a83878bb87c74eb46b2d8e05000

How can I find the code for deployed ledger canister module?

However when I’m building last two blessed releases

The blessed releases are for replica upgrades, i.e. the software running on the nodes of the IC. The Ledger (or any other NNS controlled canister for that matter) is released independently from the replica.

There is a specific proposal topic for upgrading NNS canisters (it’s “System Canister Management”), this is the one you should be looking at to figure out the latest proposal that upgraded the Ledger canister. In this case, the relevant proposal is Proposal: 115328 - ICP Dashboard (the proposal contains the commit hash from which the Ledger was built and instructions on how to reproduce the build).


Thanks for the info! I did build using given Proposal, and now it is ok!

900e30c4bf3293244cd4649e8470ece822e18723e9a942decabc32d46257b514 *ledger-canister_notify-method.wasm.gz

This matches the deployed module hash!.

Just to clarify, why hash of gzip is used instead of wasm?


There is currently a limit of 2MiB on the size of the Wasm module that can be installed on a canister – this is because the message to install the Wasm module (just like any other message) makes it into an IC block eventually and there are limitations on how big a block can be.

The Ledger Wasm module is bigger than 2MiB, so in order to still go through, we have to compress it. The IC can properly figure out whether a gzip’ed or raw Wasm was included in the install message and handle things accordingly. Since we include the gzip’ed module in the proposal we provide its hash because all the verification will happen using that version (of course the IC will unzip module eventually in order to execute messages on the canister but that’s transparent for end users).

1 Like