System canisters
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:
- NNS governance: Canister ID
rrkah-fqaaa-aaaaa-aaaaq-cai
- NNS lifeline: Canister ID
rno2w-sqaaa-aaaaa-aaacq-cai
- NNS registry: Canister ID
rwlgt-iiaaa-aaaaa-aaaaa-cai
- NNS root: Canister ID
r7inp-6aaaa-aaaaa-aaabq-cai
- NNS UI: Canister ID
qoctq-giaaa-aaaaa-aaaea-cai
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.