Live prices are currently unavailable — the exchange feed could not be reached and no recent cached reading is held.

Research · ICP

Native Bitcoin integration

A canister on the Internet Computer can hold bitcoin and spend it. It derives an address from a threshold key, reads the Bitcoin blockchain through a dedicated canister, and submits signed transactions. There is no bridge and no wrapped token in the path — the canister controls the address the way a wallet does.

Last reviewed 2026-09-21Source: ICP Developer Docs — Bitcoin integration and the management canister APIThe integration is described as deployed. Fee levels and confirmation behaviour are properties of the Bitcoin network and are not fixed here.

Why this is unusual

Bitcoin's script system authorises a spend by checking a signature against a public key. A system that can produce such a signature for an address it controls can move the bitcoin at that address, and a system that cannot must rely on someone else who can. Most smart-contract platforms fall into the second category, which is why bitcoin on those platforms is typically a wrapped token issued by a custodian.

The Internet Computer falls into the first. A canister can request a threshold ECDSA public key for secp256k1 or a threshold Schnorr public key for BIP340 secp256k1, derive a Bitcoin address from it, and request signatures that spend from that address. The documentation describes this as the foundation of the Bitcoin integration, and it is the reason the integration is called native rather than bridged.

The distinction has a practical consequence for custody. A wrapped bitcoin is a claim on a custodian; if the custodian fails, the claim is worth whatever the bankruptcy estate pays. A canister's bitcoin is at an address whose key the network's threshold protocol controls, and the canister's ability to spend it depends on the network continuing to sign rather than on a company continuing to exist.

Reading the Bitcoin chain

A canister does not connect to Bitcoin nodes itself. The documentation describes a Bitcoin canister running on a system subnet that maintains a view of the Bitcoin blockchain, and a Bitcoin adapter that connects the network to the Bitcoin peer-to-peer network. Canisters read through the Bitcoin canister, which exposes methods for the data a wallet needs.

The documented methods cover the balance of an address, the UTXOs held by an address, the current fee percentiles, block headers, and general blockchain information such as the current height and the network. A canister that wants to construct a transaction needs the UTXOs to spend and a fee estimate, and both are available. The documentation notes that the Bitcoin canister's view follows the Bitcoin network with a delay, so a canister should not assume it sees the tip of the chain.

The documentation also describes the trust model for reads. The Bitcoin canister runs on a system subnet and its responses are subject to the network's consensus, so a canister reading a balance is trusting the network's view of Bitcoin rather than querying a node it chose. That is a different trust assumption from running your own node, and it is worth understanding before building anything that depends on the exact state of the chain.

Signing and submitting transactions

Writing is a two-step process. The canister constructs a Bitcoin transaction — selecting UTXOs, building outputs, computing the sighash for each input — and then asks the management canister to sign the sighashes with the key that controls the address. The documentation describes the signing methods for both ECDSA and Schnorr, and the transaction is then submitted through the Bitcoin canister's send method.

The documentation is explicit about a caveat that matters for correctness. A signing request can return an error while the signature has in fact been produced, so a canister cannot treat a failed signing call as proof that no signature exists. A protocol that assumes otherwise can be made to sign twice, which for a Bitcoin transaction means two transactions spending the same UTXO. The chain-key cryptography page covers the signing protocol and this caveat.

Fees are a Bitcoin concern rather than a network one. The documentation describes a method that returns current fee percentiles, which a canister uses to choose a fee rate. A transaction that pays too little may sit unconfirmed for a long time, and a canister that wants to replace it must construct a replacement that spends the same inputs with a higher fee. None of this is abstracted away.

ckBTC and the limits

ckBTC is the network's chain-key token for bitcoin. The documentation describes it as an ICRC-1 token backed one-to-one by bitcoin held at an address the network controls, minted when a deposit is confirmed and redeemed when a holder wants the underlying. It exists because most applications want a token they can transfer at network speed rather than a UTXO they must manage.

The documentation describes a KYT check on deposits, performed by a dedicated canister, which screens incoming funds before minting. That is a policy layer rather than a cryptographic one, and it means a deposit can be refused. A user who wants to hold bitcoin without that policy should hold it directly at an address they control rather than in ckBTC.

The limits of the integration are worth stating. A canister can spend from addresses whose keys it derives; it cannot spend from arbitrary addresses, and it cannot reverse a Bitcoin transaction. Confirmation times are Bitcoin's, not the network's. And the whole arrangement depends on the network continuing to operate and to sign, which is the same dependency every application on the network has.

Sources and references

The integration architecture, the reading and signing methods and the ckBTC mechanism are described from the Internet Computer's own documentation. Bitcoin network properties such as fee levels and confirmation times are not fixed here because they are not the network's to set.

  • The Bitcoin integration and its architecture. ICP Developer Docs, Bitcoin integration: describes the Bitcoin canister, the adapter, and the reading and sending methods.
  • The management canister methods for Bitcoin. ICP Developer Docs, Bitcoin API reference: lists the balance, UTXO, fee-percentile, block-header and transaction methods with their signatures.
  • ckBTC and the KYT check. ICP Developer Docs, Chain-key tokens: covers the minter, the one-to-one backing and the deposit screening policy.