Skip to main content

System canisters

Intermediate
Concept

System canisters are canisters that provide a necessary function to the ICP network. They are controlled by the NNS and upgraded via NNS proposals. Each system canister is deployed on a system subnet. System subnets have special parameters, such as no cycles costs, to guarantee that the system functions without interruption. These canisters have static canister IDs that projects can make calls to. One common example of a system canister that is used by projects is the Internet Identity canister.

Bitcoin mainnet

The Bitcoin mainnet system canister is used to facilitate connection from the ICP mainnet to the Bitcoin mainnet.

It has canister ID ghsi2-tqaaa-aaaan-aaaca-cai.

The Bitcoin mainnet canister is hosted on the system subnet w4rem-dv5e3-widiz-wbpea-kbttk-mnzfm-tzrc7-svcj3-kbxyb-zamch-hqe.

View the Bitcoin specification.

Bitcoin testnet

The Bitcoin testnet system canister is used to facilitate connection from the ICP mainnet to the Bitcoin testnet.

It has canister ID g4xu7-jiaaa-aaaan-aaaaq-cai.

The Bitcoin mainnet canister is hosted on the system subnet w4rem-dv5e3-widiz-wbpea-kbttk-mnzfm-tzrc7-svcj3-kbxyb-zamch-hqe.

View the Bitcoin specification.

Cycles ledger

The cycles ledger canister is used for cycles management and has been developed as an alternative to the cycles wallet. The cycles ledger allows principals to hold cycles directly rather than requiring a separate cycles wallet canister to be used.

It has canister ID um5iw-rqaaa-aaaaq-qaaba-cai.

The cycles ledger canister is hosted on the system subnet uzr34-akd3s-xrdag-3ql62-ocgoh-ld2ao-tamcv-54e7j-krwgb-2gm4z-oqe.

View the cycles ledger specification.

Cycles ledger index

The cycles ledger index canister is the corresponding index canister for the cycles ledger.

It has canister ID ul4oc-4iaaa-aaaaq-qaabq-cai.

The cycles ledger canister is hosted on the system subnet uzr34-akd3s-xrdag-3ql62-ocgoh-ld2ao-tamcv-54e7j-krwgb-2gm4z-oqe.

View the cycles ledger specification.

Cycles minting

The cycles minting canister is used to mint cycles on the mainnet.

It has canister ID rkp4c-7iaaa-aaaaa-aaaca-cai.

The cycles ledger canister is hosted on the system subnet tdb26-jop6k-aogll-7ltgs-eruif-6kk7m-qpktf-gdiqx-mxtrf-vb5e6-eqe.

Exchange rate

The exchange rate canister (XRC) uses HTTPS outcalls to fetch data from major cryptocurrency exchanges by using the exchange's public API to retrieve real-time or historical cryptocurrency pricing information. The XRC also queries the public APIs for foreign exchange data providers around the world periodically in order to get rates.

It has canister ID uf6dk-hyaaa-aaaaq-qaaaq-cai.

The exchange rate canister is hosted on the system subnet uzr34-akd3s-xrdag-3ql62-ocgoh-ld2ao-tamcv-54e7j-krwgb-2gm4z-oqe.

Learn more about the exchange rate canister or view the exchange rate canister specification.

Genesis token

The genesis token canister is used to query balance and account information regarding the genesis token.

It has canister ID renrk-eyaaa-aaaaa-aaada-cai.

The genesis token canister is hosted on the system subnet tdb26-jop6k-aogll-7ltgs-eruif-6kk7m-qpktf-gdiqx-mxtrf-vb5e6-eqe.

ICP index

The ICP index canister is the corresponding index canister for the ICP ledger.

It has canister ID qhbym-qaaaa-aaaaa-aaafq-cai.

The ICP index canister is hosted on the system subnet tdb26-jop6k-aogll-7ltgs-eruif-6kk7m-qpktf-gdiqx-mxtrf-vb5e6-eqe.

ICP ledger

The ICP ledger canister is used for sending and receiving ICP tokens on the mainnet. It can also be used to obtain account information, such as the account's current balance of ICP.

It has canister ID ryjl3-tyaaa-aaaaa-aaaba-cai.

The ICP ledger canister is hosted on the system subnet tdb26-jop6k-aogll-7ltgs-eruif-6kk7m-qpktf-gdiqx-mxtrf-vb5e6-eqe.

ICP ledger archive

The ICP ledger archive canisters are used to store historic data about ICP token transactions. There are two ICP ledger archive canisters.

They have canister IDs qsgjb-riaaa-aaaaa-aaaga-cai and qjdve-lqaaa-aaaaa-aaaeq-cai.

The ICP ledger archive canisters are hosted on the system subnet tdb26-jop6k-aogll-7ltgs-eruif-6kk7m-qpktf-gdiqx-mxtrf-vb5e6-eqe.

Internet Identity

The Internet Identity canister is used to provide an authentication method used across ICP applications, such as the NNS dapp.

It has canister ID rdmx6-jaaaa-aaaaa-aaadq-cai.

The Internet Identity canister is hosted on the system subnet  uzr34-akd3s-xrdag-3ql62-ocgoh-ld2ao-tamcv-54e7j-krwgb-2gm4z-oqe.

View the Internet Identity specification.

NNS canisters

The NNS is comprised of the following canisters:

The NNS canisters are hosted on the system subnet tdb26-jop6k-aogll-7ltgs-eruif-6kk7m-qpktf-gdiqx-mxtrf-vb5e6-eqe.

SNS Wasm

The SNS Wasm canister is used for deploying and updating SNSes.

It has canister ID qaa6y-5yaaa-aaaaa-aaafa-cai.

The SNS Wasm canister is hosted on the system subnet tdb26-jop6k-aogll-7ltgs-eruif-6kk7m-qpktf-gdiqx-mxtrf-vb5e6-eqe.

Using system canisters

Developers can use system canisters in their projects to integrate services into their dapp or enable functionality that requires data from a system canister.

For example, Internet Identity can be integrated into a dapp to provide user authentication service to the project. Internet Identity is commonly integrated into a dapp through the dfx deps command. dfx deps allows you to pull a system canister into your local project for testing.

For other projects, calls can be made to system canisters to obtain information, such as DeFi projects making calls to the ICP index to obtain information about ICP transactions or price.