bitcoin-libraries-bdk-jvm

v2026.09.24

bdk-jvm / bdk-android: Kotlin/Java bindings to BDK. Same descriptor- first wallet API. UniFFI-generated. USE WHEN: building JVM / Android wallets with BDK quality.

GitHub
安装命令
npx skhub add claude-dev-suite/bitcoin-libraries-bdk-jvm
Markdown
SKILL.md

bdk-jvm / bdk-android

JVM bindings to Rust BDK.

Repos (as of September 2026):

  • github.com/bitcoindevkit/bdk-jvm (JVM desktop) — split out of bdk-ffi into its own repo in July 2025.
  • github.com/bitcoindevkit/bdk-ffi, bdk-android/ subdirectory (Android) — still built from the bdk-ffi monorepo.

Install

Both artifacts are at 3.1.0 (September 2026), built on bdk-ffi 3.1.0 / bdk_wallet 3.1.0 / uniffi 0.31.2.

Gradle (Android):

implementation 'org.bitcoindevkit:bdk-android:3.1.0'

Gradle (JVM):

implementation 'org.bitcoindevkit:bdk-jvm:3.1.0'

Quick example (Kotlin)

import org.bitcoindevkit.*

// Since 3.0.0 (June 2026) the Descriptor constructor takes a NetworkKind.
val descriptor = Descriptor("wpkh(xprv.../84h/0h/0h/0/*)", NetworkKind.MAIN)
val change = Descriptor("wpkh(xprv.../84h/0h/0h/1/*)", NetworkKind.MAIN)

// Persistence is a Persister object, not a bare path string.
val persister = Persister.newSqlite("/path/to/db.sqlite")
val wallet = Wallet(descriptor, change, Network.BITCOIN, persister)

// Scans go through a request builder; the client never touches the wallet.
val esplora = EsploraClient("https://mempool.space/api")
val request = wallet.startFullScan().build()
wallet.applyUpdate(esplora.fullScan(request, 10uL, 1uL))
wallet.persist(persister)

val addr = wallet.revealNextAddress(KeychainKind.EXTERNAL)
println(addr.address)

Reopen an existing wallet with Wallet.load(descriptor, change, persister); Wallet.createSingle(descriptor, network, persister) builds a single-descriptor wallet.

Bindings

  • Same API as Rust BDK and bdkpython.
  • UniFFI auto-generates bindings.
  • Coverage: ~95% of Rust BDK API.

Use cases

  • Android wallets — modern alternative to bitcoinj.
  • JVM desktop apps.
  • Server-side JVM Bitcoin services.

Compared

See bitcoinj/SKILL.md for comparison.

Common pitfalls

  • Native .so files per Android architecture; APK size grows. 3.1.0 ships arm64-v8a, armeabi-v7a and x86_64 (32-bit x86 is not built).
  • UniFFI bindings sometimes lag Rust by a version.
  • The two artifacts do not share a bytecode target: bdk-android 3.1.0 sets minSdk 24 and targets JVM 17, bdk-jvm 3.1.0 targets JVM 11.

See also

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

skills/bitcoin/libraries/bdk-jvm

默认分支

main

最新提交

9496306

Tree SHA

fe4e2f1