Skip to main content

User facing FAQ

Advanced
FAQ

The following questions and answers are from the POV of a user using consumer applications like NNS Frontend dapp or others. They are meant to help consumers who want to hold, send, receive tokens.

For questions from the POV of a developer who wants to know things such as "how does a canister send ckBTC?" or how to write code for smart contracts to hold, send, or receive, please see the other FAQs.

General multi-chain questions

What is the purpose of the Internet Computer being having multi-chain smart contracts that can call into other blockchains?

Three reasons:

  1. ICP canister smart contracts have a lot of functionality that other blockchain smart contracts do not, now developers of other blockchains can use ICP smart contract functionality for custody on other chains.

  2. ICP canister smart contracts are able to call into Bitcoin, giving Bitcoin a powerful smart contract layer, since Bitcoin (unlike Ethereum) does not have native smart contracts.

  3. ICP Canister smart contract developers can create software systems that are interoperable with other blockchain smart contracts.

ckBTC User Questions

Questions about ckBTC from a user's POV.

What is ckBTC?

Chain-key Bitcoin (ckBTC) is a token on the Internet Computer that is backed 1:1 by bitcoin (BTC). This means that 1 ckBTC can always be redeemed for 1 BTC and vice versa. Unlike other tokens pegged to bitcoin, the ckBTC token does not rely on a third-party bridge for the conversion between BTC and ckBTC, making it a substantially more secure alternative to “wrapped” tokens.

One of the main advantages of ckBTC over regular bitcoin is its speed and cost of transfers. A transfer of ckBTC is finalized within a few seconds, which is significantly faster compared to transfers on the Bitcoin blockchain where even one confirmation can take minutes (and typically people wait for 5-7 confirmations). Additionally, the cost of a ckBTC transfer is only 0.0000001 ckBTC, which is approximately two orders of magnitude lower than the Bitcoin miner fees.

In terms of usage, ckBTC can be used in applications on the Internet Computer. For example, there is a point of sale app that allows users to accept ckBTC payments. This is made possible because the Internet Computer integrates directly with the Bitcoin network, allowing canisters (akin to smart contracts) on the Internet Computer to receive, hold, and send Bitcoin, all directly with transactions on the Bitcoin network.

Additional reading

How do I convert ckBTC to BTC and vice versa?

To convert Bitcoin (BTC) to Chain-key Bitcoin (ckBTC), follow these steps:

  1. Go to the NNS frontend dapp and sign in with your Internet Identity. If you don't have one, you will be prompted to create one. Any device that supports WebAuthn can be used as a passkey for II. Alternatively, you can use a YubiKey or a Ledger device.
  2. Navigate to My Tokens and select ckBTC.
  3. Click on Receive on the bottom of the screen.
  4. Send BTC to displayed Bitcoin address. Once you see this pop up window, you can copy your NNS BTC address, and send BTC there. Note, that since this is a real bitcoin transaction, it will take roughly two hours (because the minting process happens after the transaction has reached 12 confirmations), and have the Bitcoin network's transaction fees. Once you acquire ckBTC, you can take advantage of its near instant finality (1-2s) and negligible transaction fees (10 satoshis).

For more details, you can refer to this support document.

Important: Please note that when converting BTC to ckBTC in the NNS dapp, there is an inter-network fee of 0.00002 BTC. Sending less than 0.00002 BTC for conversion to ckBTC will result in loss of funds.

To convert ckBTC back to BTC, follow these steps:

  1. Go to the NNS frontend dapp and sign in with your Internet Identity. If you don't have one, you will be prompted to create one. Any device that supports WebAuthn can be used as a passkey for II. Alternatively, you can use a YubiKey or a Ledger device.
  2. Navigate to "My Tokens" and select ckBTC. If you have ckBTC in a different wallet, send it to your NNS principal.
  3. Click on "Send" on the bottom of the screen.
  4. Paste a valid BTC address that you control into the "Destination" field.
  5. Select "Bitcoin" from the "Network" dropdown.
  6. Type in the amount you want to send or click "Max".
  7. Click "Continue", then confirm the transaction.

Under the hood it works like this:

  1. The user makes the desired ckBTC amount available to the ckBTC minter and requests a conversion. The destination Bitcoin address undergoes a KYT check. If the check is successful, the request is accepted and put into a queue.
  2. The ckBTC minter periodically attempts to submit transactions for validated transfer requests.
  3. The ckBTC minter periodically checks which transactions went through and finalizes these transactions.
  4. The ckBTC minter can resubmit a transaction that has been pending for at least one day with a higher fee.

For more details, you can refer to this wiki page.

Please note that every step of converting BTC to ckBTC and back is decentralized, meaning there are no centralized custodians, no bridges and no traditional cloud providers that could act as attack vectors. Issuing and redeeming ckBTC goes through Know Your Transaction (KYT) checks to ensure no bitcoin enters the Internet Computer that is associated with criminal activity.

How do I transfer ckBTC from one account to another?

As a user, to send ckBTC, you can follow these steps:

  1. Go to the NNS frontend dapp and sign in with your Internet Identity. If you don't have one, you will be prompted to create one. Any device that supports WebAuthn can be used as a passkey for II. Alternatively, you can use a YubiKey or a Ledger device.
  2. Navigate to "My Tokens" and select ckBTC. If you have ckBTC in a different wallet, send it to your NNS principal.
  3. Click on "Send" on the bottom of the screen.
  4. Paste a valid BTC address that you control into the "Destination" field.
  5. Select "Internet Computer" from the "Network" dropdown.
  6. Type in the amount you want to send or click "Max".
  7. Click "Continue", then confirm the transaction.

Additional reading

How do I receive ckBTC?

In order to send ckBTC to your nns dapp wallet perform the following steps:

  1. Connect to nns.ic0.app
  2. On the main wallet page, click on ckBTC QR Code Icon. A popup will appear. Scan this from the device that you are sending the ckBTC from. Alternatively you can copy the ckBTC address and send the ckBTC to this address.
  3. On the third party service where you currently have ckBTC stored, select send and then paste the address you copied in the previous step.

Can I convert ICP to ckBTC?

ICP and ckBTC are two separate tokens so there is no protocol way to convert one to another. Typically people who want to exchange one for the other use exchanges.

Can I convert ICP to BTC?

ICP and BTC are two separate tokens so there is no protocol way to convert one to another. Typically people who want to exchange one for the other use exchanges.

What are the average ckBTC transfer fees?

The transaction fees for ckBTC on the Internet Computer (ICP) are designed to be minimal. It is currently configured to at 0.0000001 ckBTC, which is equivalent to less than a cent or 10 satoshis.

When calling retrieve_btc, the formula for the ckBTC minter fee is determined as follows:

246*in + 7*out + 52 satoshi

This formula is used to determine the ckBTC minter’s fee in satoshi. Since every transaction has at least one input and one output, the fee is at least 305 satoshi.

There is also a Know Your Transaction (KYT) fee, currently set at 2000 satoshi, when converting BTC to ckBTC and vice versa.

Additional reading

How can I view the entire history of ckBTC transactions?

You can view the transactions for ckBTC or BTC on the Internet Computer through the Internet Computer Dashboard.

ckETH User Questions

Questions about ckETH from a user's POV.

How do I convert ckETH to ETH and vice versa?

To convert ETH to ckETH and vice versa, you can follow these steps:

To convert ETH to ckETH:

  1. Obtain an ICP principal.
  2. Deposit your ETH: Ethereum holders can deposit Ether to the deposit function in the ckETH helper contract on Ethereum 0x7574eB42cA208A4f6960ECCAfDF186D627dCC175 and specify their ICP principal where they want their minted ckETH to appear.

To convert ckETH back to ETH:

The user again needs to carry out two steps (using the dfx):

  1. Call the icrc2_aprove endpoint on the ckETH ledger (canister ID ss2fx-dyaaa-aaaar-qacoq-cai), where the ckEH minter account is the spender and amount is set at least to the amount to be converted to ETH (minus fees).
  2. Call the withdraw_eth endpoint on the ckETH minter (canister ID sv3dd-oaaaa-aaaar-qacoa-cai), providing the Ethereum address to be credited and the amount.

The user can call retrieve_eth_status on the ckEH minter to check the status of the retrieval process. https://github.com/timohanke/ic/blob/d34903fc2c41e2cff5df86248628f5d0b4fd7168/rs/ethereum/cketh/minter/README.adoc#withdrawal-cketh-to-eth

Additional reading

Can I convert ICP to ckETH?

ICP and ckETH are two separate tokens so there is no protocol way to convert one to another. Typically people who want to exchange one for the other use exchanges.

General multi-chain questions

Is there a user interface for managing my multi-chain assets on the Internet Computer?

Yes, one example is the NNS Frontend dapp. Another example is Oisy Wallet.

How does ICP ensure the security and privacy of my cross-chain transactions?

Internet Computer (ICP) ensures the security and privacy of your cross-chain transactions through several mechanisms:

  1. Bitcoin Integration: ICP's native Bitcoin integration allows canisters (advanced smart contracts) to interact with the Bitcoin network at the protocol level. This means they can directly receive, hold, and send BTC on the Bitcoin mainnet without using intermediaries and third-party blockchain bridges, which often have security issues. Canisters can read from and write to the Bitcoin ledger.

  2. Ethereum Integration: ICP aims for a native integration with the Ethereum network by running Ethereum nodes co-located with ICP nodes. The current mechanism to interact with smart contracts on Ethereum is to use the EVM RPM canister, which uses HTTPS outcalls to communicate with JSON-RPC services such as CloudFlare, Alchemy, Ankr, or BlockPI. Since it is not bound to any single service provider, it can read state information from and transmit transactions to Ethereum in a secure and reliable manner.

  3. Chain-key Cryptography: ICP uses chain-key cryptography to sign native transactions on other blockchains. This set of cryptographic protocols allows ICP to securely communicate across chains.

  4. Platform Privacy: The Internet Computer runs a decentralized network, where data and computation are replicated across nodes in data centers located around the world. Communication with the Internet Computer relies on a set of boundary nodes, which can see the IP address of the sending user, as well as which canister the user is sending it to and the payload. All communication to the Internet Computer and within it is encrypted and the state of canisters is private by default.

Additional reading

Can I track the status of my multi-chain transactions on the Internet Computer dashboard?

The dashboard currently shows conversions between ckBTC and Bitcoin (on the ckBTC transaction page) as well as between ckETH and Ether (on the ckETH transaction page).

What are the steps involved in setting up a multi-chain wallet on the Internet Computer?

The NNS frontend dapp serves as a multi-chain wallet enabling users to hold many types of tokens such as ICP, ckBTC, ckETH, etc.

How does ICP handle the conversion of tokens between different chains, such as converting ICP to ckBTC?

The Internet Computer (ICP) has a rich ecosystem of DeFi apps and services such as AMM's and Decentralized exchanges which enable swapping between tokens, such as ICP or a chain-key token such as ckBTC or ckETH. Tools like ICPSwap, Sonic, and ICLight can be used for this purpose. On ICPSwap, for instance, you can connect to the dapp with several different wallet types, such as Internet Identity, NFID, Bitfinity and more. Then, you can select the type of token you'd like to swap for another, such as ICP, and enter the value you'd like to swap. Finally, select the token you'd like to receive in return for your ICP.

In the future, when the Internet Computer blockchain integrates with additional blockchains, more chain-key tokens will become available on ICP.

Is there a guide or tutorial on how to use multi-chain features on the Internet Computer for beginners?

Yes, there are several resources available for beginners who want to use the multi-chain features on the Internet Computer.

  1. The ETH starter tutorial is a great place to start. It provides a step-by-step guide on how to interact with Ethereum on the Internet Computer.

  2. You can also check out the Code ckETH and Code ckBTC for code samples on how to use these features.

  3. The DeFi sample code provides examples of decentralized finance applications that utilize the multi-chain features of the Internet Computer.

  4. For more advanced topics, you can explore the Multi-chain DeFi page which discusses how the Internet Computer can be used for decentralized finance applications.

  5. The developer resources page also provides a wealth of information, including documentation, sample code, tooling, and support.

Remember, the Internet Computer allows you to create smart contracts that directly interact with other blockchains without the need for trusted centralized bridges. This is made possible using chain key cryptography. You can learn more about this in the wiki.

How does ICP handle the integration of smart contracts across different chains?

Internet Computer Protocol (ICP) handles the integration of smart contracts across different chains through a process known as cross-chain interoperability. This is achieved through advanced cryptography, specifically threshold ECDSA and chain-key cryptography.

For instance, ICP can natively create signed transactions on other blockchains like Ethereum and Bitcoin, allowing decentralized applications (dapps) deployed on ICP to interact directly with other networks and their smart contracts, tokens, and other digital assets.

ICP has integrated with Bitcoin at the protocol level. This integration coupled with the chain-key threshold ECDSA feature allows a canister (a computational unit on the ICP) to create a Bitcoin address, then send or receive bitcoin directly as if they were a regular Bitcoin user.

ICP is also working on an integration with Ethereum that will allow Ethereum smart contracts and digital assets like ERC-20 tokens to be used in ICP canisters. This integration is being worked on.

In the future, ICP aims to become fully compatible with the Ethereum Virtual Machine (EVM), enabling developers to deploy Ethereum smart contracts directly on the ICP network.

Additional reading

Can I use my existing hardware wallets or mobile apps to manage my multi-chain assets on the Internet Computer?

Yes! Please see documentation here on using Ledger Nanos and other hardware wallets: hardware wallets.