Tools/Explorers

Bitcoin Development Tools Landscape: Libraries, Frameworks, SDKs

Map of Bitcoin development tools: libraries (bitcoinjs, rust-bitcoin), wallet frameworks (BDK, LDK), Lightning SDKs, and application frameworks for building apps.

Spark TeamInvalid Date

Bitcoin Developer Tooling Overview

Building on Bitcoin requires selecting from a layered stack of libraries, frameworks, and SDKs that handle everything from raw transaction serialization to complete wallet management. The ecosystem has matured significantly: Rust and TypeScript dominate the library landscape, wallet frameworks like BDK have reached stable 1.0+ releases, and Lightning SDKs now offer turnkey integration for mobile and web apps.

This guide maps the major tools across four layers: core protocol libraries, wallet frameworks, Lightning SDKs, and application frameworks. Each entry includes the current version, language, maintainer, and maturity level based on publicly available data. For a focused comparison of wallet SDKs specifically, see the wallet SDK comparison tool.

Core Protocol Libraries

Core libraries handle the lowest-level Bitcoin operations: serializing transactions, deriving keys via BIP-32, constructing Script programs, and performing elliptic curve cryptography. They do not manage wallets or chain state: that responsibility falls to the frameworks built on top of them.

LibraryLanguageVersionMaintainerGitHub StarsMaturity
bitcoinjs-libTypeScript/JS7.0.1bitcoinjs org~6,000Production
rust-bitcoinRust0.32.8rust-bitcoin community~2,600Production
python-bitcoinlibPython0.12.2Peter Todd~1,900Stable (dormant)
libsecp256k1C0.7.1Bitcoin Core~2,400Production
rust-miniscriptRust13.0.0rust-bitcoin community~420Production

bitcoinjs-lib

The dominant JavaScript/TypeScript library for Bitcoin, with over 1,600 dependent npm packages. bitcoinjs-lib provides transaction construction, signing, address generation, and script parsing for Node.js and browser environments. It supports SegWit, Taproot, PSBT creation, and all standard address types. If you are building a web-based Bitcoin tool or wallet, this is the starting point.

rust-bitcoin

The foundational Rust crate for Bitcoin protocol structures. rust-bitcoin handles serialization, transaction construction, BIP-32 key derivation, and script operations. It serves as a dependency for both BDK and LDK, making it the most structurally important library in the Rust Bitcoin ecosystem. Version 0.33.0-beta shipped in February 2026 with breaking API improvements.

libsecp256k1

The cryptographic engine behind Bitcoin Core itself. libsecp256k1 implements ECDSA signing and verification, Schnorr signatures, and key generation on the secp256k1 curve. It is written in C for maximum performance and has undergone multiple security audits. Every other Bitcoin library either wraps or reimplements this code.

python-bitcoinlib

A Python interface to Bitcoin data structures maintained by Peter Todd. Useful for scripting, prototyping, and research, but the last release was June 2023. For production Python applications, consider using BDK Python bindings instead.

Wallet Frameworks

Wallet frameworks sit above core libraries and handle the complex concerns that wallet applications need: UTXO tracking, coin selection, derivation path management, chain synchronization, and PSBT coordination. They enable developers to build self-custodial wallets without reimplementing consensus-critical logic. For a detailed feature comparison, see the wallet SDK comparison.

BDK (Bitcoin Dev Kit)

BDK is the leading open-source wallet SDK for Bitcoin. Maintained by the BDK Foundation (a US 501(c)(6) non-profit) and funded by OpenSats grants, BDK reached its 1.0 milestone in 2025 and has since iterated to bdk_wallet 3.0.0 (April 2026). The framework is descriptor-based: you define wallet behavior using output descriptors, and BDK handles UTXO management, coin selection, and transaction construction.

BDK supports multiple chain synchronization backends including Electrum, Esplora, Bitcoin Core RPC, and compact block filters via the Kyoto project. Language bindings through bdk-ffi (uniffi-based) cover Kotlin, Swift, and Python, with community bindings for React Native and Flutter. BDK is the right choice for teams building dedicated Bitcoin wallets that need full control over the on-chain layer.

LDK (Lightning Dev Kit)

LDK provides a modular, runtime-agnostic Lightning Network implementation. Maintained by Spiral (a Bitcoin-focused division of Block, Inc.) with 30+ full-time developers, LDK lets you build custom Lightning wallets and nodes while controlling your own storage, networking, and chain backends. The lightning crate is at version 0.2.2 (February 2026), with LDK Node 0.7.0 providing a higher-level ready-to-go node implementation.

LDK 0.1 (January 2025) introduced BIP 353 Human Readable Names and LSPS1 client support. Bindings are available for C, Swift, Java/Kotlin, and Python. LDK is the right choice when you need fine-grained control over Lightning behavior: custom channel policies, proprietary routing algorithms, or integration with existing wallet infrastructure.

Lightning and Layer 2 SDKs

Lightning SDKs abstract away channel management, liquidity, and routing so application developers can integrate Bitcoin payments without running their own nodes. This category also includes newer Layer 2 SDKs that move beyond the traditional Lightning channel model.

SDKLanguageVersionMaintainerModelMaturity
LDKRust0.2.2Spiral / BlockModular Lightning nodeProduction
Breez SDK (Spark)Rust0.15.0Breez TechnologyNodeless L2 integrationProduction
Breez SDK (Liquid)Rust0.12.2Breez TechnologyNodeless via Liquid swapsProduction
GreenlightRust/Python/Kotlin/Swift0.4.0BlockstreamCloud-hosted CLN nodesProduction
Spark SDKTypeScript/Go0.5.8LightsparkStatechain-based L2Early production

Breez SDK

Breez SDK is a nodeless Lightning integration toolkit with bindings for Swift, Kotlin, Python, Flutter, React Native, Go, C#, and WebAssembly. Over 75 apps have integrated Breez SDK, including Deblock and Cake Wallet. The Spark variant (v0.15.0) integrates with the Spark protocol for statechain-based transfers. The Liquid variant (v0.12.2) uses Liquid Network swaps. The original Greenlight-based variant has been deprecated.

Greenlight (Blockstream)

Greenlight offers cloud-hosted, non-custodial Lightning nodes built on Core Lightning. Users keep their keys locally while Blockstream operates the node infrastructure, using the VLS (Validating Lightning Signer) project for remote signing security. The free tier supports up to 1,000 on-demand nodes. Greenlight is a good fit for developers who want a managed Lightning backend without surrendering custody.

Spark SDK

The Spark SDK enables building on Spark, a Bitcoin Layer 2 protocol built on statechains. Unlike Lightning, Spark requires no channels, liquidity management, or routing. The TypeScript SDK (@buildonspark/spark-sdk v0.5.8) provides direct integration for web and React Native apps. For Swift, Kotlin, Python, and other languages, Breez SDK Spark offers uniffi-based bindings that wrap the core Rust implementation.

Application Frameworks

Application frameworks provide higher-level abstractions for building complete Bitcoin-powered products: payment processing, federated custody, and merchant tooling.

BTCPay Server

BTCPay Server (v2.3.9, C#) is the most mature open-source Bitcoin payment processor, with over 7,600 GitHub stars. It provides a self-hosted solution for invoices, point-of-sale terminals, subscriptions, and e-commerce plugins for WooCommerce and Shopify. The Greenfield REST API offers client libraries in C#, Python, and Node.js. For developers building merchant payment solutions, BTCPay Server is often the fastest path to production.

Fedimint

Fedimint (v0.11.1) is a framework for building federated e-cash mints with default modules for Bitcoin, Lightning, and Chaumian Ecash. The TypeScript/Wasm SDK (@fedimint/core) enables web and mobile apps to interact with Fedimint federations. Fedimint targets community custody models where a group of guardians collectively manages funds, balancing privacy with accessibility.

Scripting and Smart Contract Tools

Miniscript is the primary tool for working with Bitcoin Script in a structured, analyzable way. The rust-miniscript crate (v13.0.0) enables compilation, analysis, and optimal witness construction for spending conditions. It is integrated into Bitcoin Core descriptor wallets and BDK. For a deeper exploration of what Miniscript enables, see our research on Miniscript spending policies.

Minsc provides a higher-level scripting language that compiles down to Miniscript Policy, useful for prototyping complex spending conditions. Sapio (v0.2.4) explored composable multi-transaction smart contracts around BIP-119 CTV, but development has stalled since January 2024.

Testing Networks

Bitcoin provides three testing environments, each suited to different stages of development. Note that testnet3 was deprecated in Bitcoin Core v28 and removed entirely in v30: use testnet4 or signet instead.

  • Regtest: fully local, instant block generation, complete control over the environment. Best for unit tests and CI pipelines
  • Signet: semi-centralized with signed blocks (no proof-of-work). Predictable and stable. Best for integration testing and cross-team coordination
  • Testnet4 (BIP 94): public, decentralized test network introduced in Bitcoin Core v28 to replace the unstable testnet3. Best for testing with realistic network conditions

How to Choose Your Stack

The right combination of tools depends on what you are building, what language your team uses, and how much control you need over the underlying protocol.

Building a dedicated Bitcoin wallet: start with BDK for on-chain functionality. Add LDK if you need Lightning with full customization, or integrate a higher-level Lightning SDK like Breez or Greenlight for faster time-to-market. Read our wallet SDK comparison for detailed guidance.

Adding Bitcoin payments to an existing app: BTCPay Server's Greenfield API is the fastest integration path for merchant scenarios. For programmatic payments, Breez SDK or the Spark SDK provide nodeless integration that avoids the operational complexity of running Lightning infrastructure.

Building developer tools or protocol-level software: use rust-bitcoin and libsecp256k1 directly. Add rust-miniscript for descriptor-based script analysis. Test on regtest locally and signet for coordination.

Exploring federated or community custody: Fedimint's module system lets you build custom mints with Bitcoin and Lightning support out of the box.

Frequently Asked Questions

What is the best programming language for Bitcoin development?

Rust has become the dominant language for new Bitcoin infrastructure. Both BDK and LDK are written in Rust and provide language bindings via uniffi for Swift, Kotlin, and Python. TypeScript/JavaScript remains strong for web applications through bitcoinjs-lib. C is used for performance-critical cryptography (libsecp256k1). Choose based on your platform: Rust for libraries and backends, TypeScript for web, Swift or Kotlin (via BDK/LDK bindings) for mobile.

What is the difference between BDK and LDK?

BDK (Bitcoin Dev Kit) handles on-chain wallet functionality: UTXO management, coin selection, PSBT construction, and chain synchronization. LDK (Lightning Dev Kit) handles Lightning Network functionality: channel management, routing, and payment processing. They are complementary, not competing: many wallets use BDK for on-chain and LDK for off-chain, sharing the same Rust foundation through rust-bitcoin.

Can I build a Bitcoin wallet without running a full node?

Yes. BDK supports multiple lightweight backends: Electrum servers, Esplora (block explorer API), and compact block filters (via the Kyoto project). Lightning SDKs like Breez and Greenlight are explicitly designed to be nodeless, handling channel management and routing through cloud infrastructure while keeping keys on the user's device. Spark SDK also requires no node operation: the protocol handles transfers without channels or routing.

Which Lightning SDK is easiest to integrate?

Breez SDK and Spark SDK have the lowest integration complexity because they are nodeless: no channel management, no liquidity provisioning, no watchtower setup. Breez SDK supports 10+ language bindings and has been integrated by 75+ apps. Spark SDK is simpler still because the underlying protocol has no channels or routing to manage. Greenlight is a middle ground: you get a full CLN node without hosting it, but you still work with Lightning concepts like channels and liquidity.

What happened to Bitcoin testnet3?

Testnet3 was deprecated in Bitcoin Core v28 (2024) and fully removed in v30. It suffered from instability, griefing attacks, and fee market distortions that made it unreliable for testing. BIP 94 introduced testnet4 as the replacement, with fixes for the difficulty reset exploit that plagued testnet3. For local development, regtest remains the recommended option. For shared testing environments, signet provides the most predictable behavior.

How do I test Bitcoin applications locally?

Use regtest mode, which creates a fully local blockchain where you control block generation. Start Bitcoin Core with -regtest, generate blocks on demand with generatetoaddress, and run your tests against a deterministic environment. BDK and LDK both have regtest-compatible configurations. For CI pipelines, regtest is preferred because it requires no network access and produces instant, reproducible results.

Is Miniscript ready for production use?

Yes. Miniscript is integrated into Bitcoin Core's descriptor wallet implementation and is used by BDK for transaction construction. The rust-miniscript crate (v13.0.0) is actively maintained by the rust-bitcoin community. Miniscript enables tooling to analyze spending conditions, compute optimal witnesses, and verify that scripts are correct before broadcasting. For more detail, see our Miniscript spending policies research.

This tool is for informational purposes only and does not constitute financial or technical advice. Version numbers, GitHub statistics, and maturity assessments are based on publicly available data as of May 2026 and change frequently. Always verify current versions and maintenance status in each project's repository before building on it.

Build with Spark

Integrate bitcoin, Lightning, and stablecoins into your app with a few lines of code.

Read the docs →