ckBTC FAQ
The following questions and answers are from the POV of a developer who wants to know things such as "how does a canister send ckBTC?".
For questions from the POV of a user who wishes to know how to hold, send, receive these tokens, please see the user FAQs.
How do I write a smart contract that uses ckBTC?
The best place to start is to follow the ckBTC and Bitcoin integration developer tutorial. This tutorial will guide you through the process of creating a smart contract that uses ckBTC or integrates with Bitcoin.
What is the purpose of ckBTC?
Chain-key Bitcoin (ckBTC) is a token on the Internet Computer that is backed 1:1 by bitcoin (BTC). It is designed to integrate Bitcoin with the Internet Computer Protocol (ICP) and decentralized finance (DeFi) applications. ckBTC is an ICP-native token that uses chain-key cryptography to own and control all underlying bitcoin, extending the ICP protocol stack so the blockchain behaves like a faster, less expensive, and more environmentally sustainable solution than the Bitcoin network.
ckBTC facilitates bitcoin holders to participate in the DeFi ecosystem, activating the world’s largest crypto economy. It offers a secure and scalable environment to use bitcoin in DeFi applications, including lending, borrowing, asset management, decentralized exchanges, and more.
ckBTC is not a bridged or wrapped token; it is a direct link between the Bitcoin network and the Internet Computer, reducing the risks tied to bridges. This approach not only tackles security concerns but also launches Bitcoin into a world of better adaptability and user experiences.
ckBTC also offers the first bonafide use case for bringing smart contracts to BTC. Building DeFi on ICP is more secure, faster, environmentally friendly, and cost-effective.
What specific problem does ckBTC aim to solve within the Bitcoin ecosystem?
ckBTC aims to solve the following problems:
Lack of programmability: The Bitcoin blockchain lacks a programmable layer that is expressive enough to build complex decentralized applications in the form of smart contracts
Intermediary dependence: Self-custody solutions are cumbersome and not ideal for non-technical people but the alternative relies on trusted parties such as custody providers, which is not ideal, either.
Limited integration with DeFi: Bitcoin has been largely unable to integrate smoothly with decentralized finance (DeFi) applications. ckBTC, being an ICP-native token backed 1:1 with real BTC and governed on chain by ICP smart contracts, facilitates bitcoin holders to participate in the DeFi ecosystem.
High latency and fees: Every Bitcoin transaction is processed with the same low throughput, high latency, and high fees native to the Bitcoin network. ckBTC, being a digital bitcoin twin created by chain-key cryptography and canister smart contracts, can be sent with 2–5 second finality and negligible fees.
Security concerns with bridges: ckBTC gets rid of the need for bridges, reducing the risks tied to them.
How does ckBTC relate to Bitcoin?
The Internet Computer integrates with the Bitcoin network at a protocol level, allowing ICP canister smart contracts to create Bitcoin addresses and send and receive bitcoin directly on the Bitcoin network. This integration is made up of two key building blocks: network integration and chain-key ECDSA. With these building blocks, canisters can directly and securely hold, receive, and send bitcoin seamlessly as if the Internet Computer and the Bitcoin network were one blockchain source.
How is ckBTC transaction different from a regular Bitcoin transaction?
ckBTC is different from regular Bitcoin transactions in several ways:
Speed and cost: ckBTC can be sent with 1-2 second finality and negligible fees, making it much faster and cheaper than regular Bitcoin transactions which can take roughly an hour and have high fees.
Smart contract integration: Canister smart contracts can programmatically hold and transfer ckBTC, making it possible to develop fully on-chain Layer-2 applications for Bitcoin. This is not possible with regular Bitcoin transactions.
Fixed transaction fees: ckBTC transaction fees are fixed. Bitcoin transaction fees depend on the size of the transaction and the current backlog of transactions in the Bitcoin network (if the load is high, the fee rate is high).
Why should I choose ckBTC for my application or service?
Choosing ckBTC for your application or service comes with several advantages:
Trustless Bitcoin-based commerce: ckBTC allows Bitcoin-based commerce to run natively on Internet Computer Protocol (ICP) smart contracts, enabling custodial solutions where the custodian is a decentralized application, mitigating the third-party risk.
Security: ckBTC is truly decentralized, potentially reversing the negative DeFi trend caused by large scale hacks and rug pulls.
Low fees and fast transactions: ckBTC acts as a local ledger facilitating fast transactions with low fees (10 satoshis), and only settles transactions on the Bitcoin network when necessary.
Easy integration: Compatible with the ICRC-1 token standard, and now also ICRC-2, ckBTC is easy to integrate into dapps running on the Internet Computer.
Verifiable: All transfer activity and metrics of the ckBTC ledger and ckBTC minter are verifiable on chain. Issuing and redeeming ckBTC also goes through Know Your Transaction (KYT) checks to protect end users by ensuring no tainted bitcoin enters the Internet Computer blockchain or is transferred out to tainted Bitcoin addresses.
What advantages does ckBTC offer in terms of speed, fees, and security?
Chain-key Bitcoin (ckBTC) offers several advantages in terms of speed, fees, and security:
Speed: ckBTC transactions are finalized within seconds, which is a significant speed-up compared to traditional Bitcoin transactions that can take up to an hour or more for 6 confirmations.
Fees: The transaction fees for ckBTC are fixed and negligible, costing only 0.0000001 ckBTC. This is approximately two orders of magnitude lower than traditional Bitcoin miner fees.
Security: ckBTC is backed 1:1 by Bitcoin (BTC), meaning 1 ckBTC can always be redeemed for 1 BTC and vice versa. Unlike other tokens pegged to Bitcoin, ckBTC does not rely on a third-party bridge for conversion between BTC and ckBTC, making it a more secure alternative. The security of ckBTC has been assessed for potential risks, including double-spending of funds, denial-of-service attacks, and insufficient access controls.
Furthermore, ckBTC is issued and redeemed via canister smart contracts that are verifiable by anyone at any time, eliminating centralized custodians, bridges, and traditional cloud providers that could act as attack vectors.
How can I integrate ckBTC into my existing applications or platforms?
To integrate ckBTC into your existing applications or platforms, you can follow the developer documentation. Here are some resources that you might find useful:
ckBTC developer documentation page: This page provides detailed information about ckBTC, including its functionality and how it works.
ckBTC minter GitHub repository: This repository contains the code for the ckBTC minter, which is responsible for minting and burning ckBTC.
Creating a ckBTC point of sale dapp: This is another sample code for a ckBTC point of sale dapp.
If you need further assistance, you can also ask questions in the Internet Computer Developer Forum.
What are the technical requirements for developers to work with ckBTC?
For more specific technical requirements, developers may want to refer to the ckBTC API reference and the GitHub repository for ckBTC. They might also find it helpful to follow the developer journey for ckBTC and Bitcoin integration and to look at examples of deploying a Bitcoin dapp and creating a ckBTC point of sale dapp.
How does ckBTC ensure the security of the funds it handles?
ckBTC ensures the security of the funds it handles through several measures:
No third-party bridges: ckBTC does not rely on any third-party bridges for the conversion between BTC and ckBTC. This eliminates the vulnerabilities associated with bridge hacks, which have been a prime target for hackers due to their easy-to-compromise architecture.
Security assessment: The security of ckBTC was a high priority for DFINITY and its community. A third party security assesment was performed by Trail of Bits. The assessment covered testing the possible risks including double-spending of funds, denial-of-service attacks, and insufficient access controls.
KYT checks: Cross-chain transactions go through Know Your Transaction (KYT) checks to protect honest users. KYT is a process that monitors and tracks financial transactions in order to detect and prevent fraudulent or criminal activity.
Trustless process: The conversion of ckBTC back to BTC and vice versa is controlled at the Internet Computer protocol-level in a decentralized manner.
Decentralized process: 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.
1:1 pegging: Securing ckBTC 1:1 with BTC is crucial as it eliminates the risk of depegging.
How does ckBTC handle transactions across multiple blockchains?
ICP nodes communicate with Bitcoin nodes to download the Bitcoin network’s blocks and maintain its Unspent Transaction Output (UTXO) set. Using this information, the Internet Computer acts as a sidechain and hosts a trustless “bitcoin twin” called ckBTC that can be directly processed by canister smart contract logic and transferred with 1-3 seconds finality at near zero cost.
To create ckBTC, a user transfers their bitcoin to a specific Bitcoin address (under the ckBTC minter’s control), which then triggers the minting of ckBTC for the user. The NNS dapp facilitates the conversion (in both directions).
In the future, ckBTC will be available on other networks like Ethereum – also directly, and without bridges, thanks to chain-key cryptography integrations.
Can I build smart contracts that interact with ckBTC?
Yes, you can build smart contracts that interact with ckBTC on the Internet Computer.
What are the transaction fees associated with ckBTC?
The transaction fees for ckBTC on the Internet Computer are designed to be minimal. It is set at 0.0000001 ckBTC, which is equivalent to less than a cent or 10 satoshis. Users only need to pay the transaction fees of the Bitcoin network when converting Bitcoins to ckBTC or vice versa. See: How ckBTC Solves the Dilemma of Blockchain Bridges.
In addition, there is a fee when bitcoins are retrieved. The formula 246*in + 7*out + 52
is used to determine the ckBTC minter’s fee in satoshi. Since transactions to redeem bitcoin usually have two inputs and outputs, the fee is typically 558 satoshi but can be lower if multiple retrieval requests are handled together.. See Chain-key_Bitcoin wiki.
There is also a Know Your Transaction (KYT) fee (currently 2000 satoshi) when converting BTC to ckBTC and vice versa. See Chain-key_Bitcoin wiki.
How quickly can ckBTC transactions be finalized?
ckBTC transactions can be finalized very quickly. They achieve a near-instant transaction finality with transaction confirmation within 1–2 seconds. This rapid finality can increase throughput and efficiency, facilitating more scalability for blockchain applications.
Who controls the development and governance of ckBTC?
ckBTC has two main canister smart contracts (ckBTC minter
and ckBTC ledger
). Both are controlled by the NNS DAO, updated via community proposals and run on the pzp6e
subnet.
The conversion of ckBTC back to BTC and vice versa is controlled at the Internet Computer protocol-level. This process is completely trustless and managed by automated software programs (smart contracts).
Is there a community-driven approach to decision-making?
Yes, the Internet Computer blockchain employs a community-driven approach to decision-making. This is facilitated by the Network Nervous System (NNS), which is a decentralized algorithmic authority that oversees the network's operations and evolution.
Each node provider is verified and voted in by token holders via the NNS. This means that the community of token holders has a say in the governance of the Internet Computer, including admitting new node providers to the network and assigning them to subnets based on community member votes.
This approach ensures that the Internet Computer remains decentralized and that decisions are made collectively by the community, rather than being controlled by a single entity.
Can you provide examples of current applications that utilize ckBTC?
Yes, there are several decentralized applications (dapps) on the Internet Computer that already support ckBTC. Here are some of them:
You can follow these projects on Twitter to stay updated on their latest developments.
Does ckBTC incorporate KYT?
Yes, cross-chain transactions go through KYT checks to protect honest users. Know Your Transaction (KYT) is a process that monitors and tracks financial transactions in order to detect and prevent fraudulent or criminal activity, such as money laundering or terrorist financing.
If ckBTC were to operate without a KYT implementation, there would be a risk of 'tainted' bitcoin entering the Internet Computer, that an honest user could unknowingly withdraw. Such bitcoin may be rejected by CEXs, which means honest users could potentially lose their bitcoin when trying to sell.
KYT is an important security component of ckBTC. Read more about how ckBTC implements KYT and the motivation behind it in this forum post.
Additional reading
- Bitcoin smart contracts are coming to Internet Computer DeFi projects
- Chain-key bitcoin: A decentralized bitcoin twin
- Chain-key bitcoin
- Chain-key technology
- ckBTC ledger
- ckBTC sparks a new era on the Internet Computer
- Deploying your first Bitcoin dapp
- Governance of the Internet Computer
- How ckBTC solves the dilemma of blockchain bridges
- ICP multi-chain
- Local development workflow
- Native Bitcoin & ckBTC developer docs
- Native Bitcoin on ICP
- Taking security seriously: two top ICP features assessed by Trail of Bits
- The Internet Computer blockchain takes a first step towards digital sovereignty in Europe
- What is ckBTC?
- What you need to know about Bitcoin integration and ckBTC