This article assumes that you already set up an air-gapped wallet with quill, which consists of an air-gapped computer that has quill installed together with an identity file containing a private key. Using the air-gapped wallet also requires a mobile phone and the Scan & Send application.
Transferring tokens to the air-gapped wallet
You can display the addresses of the wallet with the following command:
% quill --pem-file identity.pem public-ids
PEM decryption password: [hidden]
Principal id: adett-lionk-6fxvm-cjgo2-ilfvx-7kbcj-ijzvx-3un7v-pl45j-mttb6-aae
Legacy account id: 8c38fd552fc9a6ba6cf4d574df0bb15212574f29ca3b459d2af05def37217488The principal id, here adett-lionk-6fxvm-cjgo2-ilfvx-7kbcj-ijzvx-3un7v-pl45j-mttb6-aae, can be used to send any token that complies with the ICRC-1 standard.
The ICP account id, here 8c38fd552fc9a6ba6cf4d574df0bb15212574f29ca3b459d2af05def37217488, can be used to send ICP tokens from wallets that do not support the ICRC-1 standard. When sending tokens from centralized exchanges, you usually have to use this address format.
Transferring tokens from the air-gapped wallet
Transferring ICP tokens
ICP tokens can be sent toward addresses of either of the above two formats using the following command:
% quill --pem-file identity.pem transfer --amount [AMOUNT] [TO-ADDRESS] --qrThe value AMOUNT is the amount of ICP tokens, specified with up to 8 decimal digits. The displayed QR code can be scanned with the Scan & Send application.
Transferring ckBTC or SNS tokens
Quill supports sending ckBTC and SNS tokens using the ICRC-1 address format. For ckBTC, the command is as follows:
% quill --pem-file identity.pem ckbtc transfer --satoshis [AMOUNT] [TO-ADDRESS] --qrThe value AMOUNT is the amount of Satoshis to be sent. The displayed QR code can be scanned via the Scan & Send application.
For SNS tokens, one first needs to create a file that contains the canister ids. For the Dragginz DAO, for example, the file dragginz.json would look as follows:
{ "governance_canister_id": "zqfso-syaaa-aaaaq-aaafq-cai", "ledger_canister_id": "zfcdd-tqaaa-aaaaq-aaaga-cai", "root_canister_id": "zxeu2-7aaaa-aaaaq-aaafa-cai", "swap_canister_id": "zcdfx-6iaaa-aaaaq-aaagq-cai" }Given this file, the command for transferring DKP tokens is then as follows:
% quill --pem-file identity.pem sns transfer --canister-ids-file dragginz.json --amount [AMOUNT] [TO-ADDRESS] --qrTools used in this tutorial
- Scan & Send for ICP using QR codes
- Quill for creating transactions