
Ckbtc
This handles the full Bitcoin integration flow on ICP: generating unique BTC deposit addresses per user, minting ckBTC when Bitcoin arrives, transferring ckBTC at 10 satoshi fees, and burning ckBTC to withdraw back to real Bitcoin addresses. The source is thorough about the gotchas that actually break builds, like forgetting to call update_balance after a deposit, using Account Identifiers instead of ICRC-1 accounts, and the 50,000 satoshi minimum withdrawal. It covers both Motoko and Rust, includes mainnet and testnet canister IDs, and walks through the approve-then-retrieve pattern for withdrawals. If you're building anything that touches Bitcoin on ICP, this is the reference implementation.
- skills.sh installs
- 280
- GitHub stars
- 39
- last updated
- Aug 21, 2026
Install
$ npx -y skills add dfinity/icskills --skill ckbtc --agent claude-codeInstalls into .claude/skills of the current project.
Files
Chain-Key Bitcoin (ckBTC) Integration
What This Is
ckBTC is a 1:1 BTC-backed token native to the Internet Computer. No bridges, no wrapping, no third-party custodians. The ckBTC minter canister holds real BTC and mints/burns ckBTC tokens. Transfers settle in 1-2 seconds with a 10 satoshi fee (versus minutes and thousands of satoshis on Bitcoin L1).
Prerequisites
- For Motoko:
mopspackage manager,core = "2.0.0"in mops.toml - For Rust:
ic-cdk,icrc-ledger-types,candid,serde
Canister IDs
Bitcoin Mainnet
| Canister | ID |
|---|---|
| ckBTC Ledger | mxzaz-hqaaa-aaaar-qaada-cai |
| ckBTC Minter | mqygn-kiaaa-aaaar-qaadq-cai |
| ckBTC Index | n5wcd-faaaa-aaaar-qaaea-cai |
| ckBTC Checker | oltsj-fqaaa-aaaar-qal5q-cai |
Bitcoin Testnet4
| Canister | ID |
|---|---|
| ckBTC Ledger | mc6ru-gyaaa-aaaar-qaaaq-cai |
| ckBTC Minter | ml52i-qqaaa-aaaar-qaaba-cai |
| ckBTC Index | mm444-5iaaa-aaaar-qaabq-cai |
How It Works
Deposit Flow (BTC -> ckBTC)
Sponsors
Details
- Repository
- github.com/dfinity/icskills
- Category
- Finance & Trading
- First seen
- Jun 3, 2026