Bitcoin Smart Contracts on the Internet Computer

Coding Bitcoin

Canister with ckBTC
ICP offers protocol-level integration with the Bitcoin network. A canister smart contract, the Bitcoin canister, operates effectively as an on-chain “Bitcoin light node”, receiving, holding, and indexing the complete set of unspent transaction outputs (UTXOs) in an efficiently queryable form. This Bitcoin canister offers other smart contracts on ICP the ability to submit signed transactions to the Bitcoin network. Submitted Bitcoin transactions are signed using chain-key ECDSA (ckECDSA) signatures, an enhanced version of threshold ECDSA available only on the Internet Computer (the only version that is secure in an asynchronous environment such as the Internet).

ckECDSA combined with the Bitcoin canister offers canister smart contracts running on ICP the ability to custody and transact native Bitcoin without the need for any additional third-party off-chain custodial or bridging solutions.

ckBTC is a pair of ICP smart contracts building on the Bitcoin canister and ckECDSA services. The contracts work together to enable users and canister smart contracts on ICP to send and receive BTC value within seconds — far faster than is possible with native BTC chain transactions, while also always allowing users and smart contracts to send and receive value to and from native BTC network addresses.

ckBTC exposes ICRC-1 and ICRC-2 ledger interfaces (the fungible token standards of ICP), making it simple for all wallets on the Internet Computer to offer ckBTC support. Many wallets also support the additional inter-network transfers to and from BTC addresses.

The two contracts work in concert to ensure that the total value of ckBTC cannot exceed the BTC held by the two contracts. This can always be verified by viewing the on-chain dashboards and metrics of the two contracts: ckBTC Minter dashboard, ckBTC Minter metrics, ckBTC Ledger metrics.
Tracked Bitcoin UTXOs
Info button
-
Expand chart
Bitcoin Canister Stable Memory Usage
Info button
-
Expand chart
Synced Bitcoin Block Height
Info button
-
Expand chart
loading
loading