用 Python 玩转比特比特币:bitcoinlib 开发宝典

·

如果你想用几行代码就完成钱包、私钥、交易、脚本调试等 比特币开发 的常规需求,那么 bitcoinlib 就是为你量身打造的瑞士军刀。本文手把手教会你从零安装、核心功能速览,到真实用例拆解与进阶技巧,带你在 10 分钟内跑通「建钱包 → 收币 → 发币」的完整流程。

为什么选 bitcoinlib?

核心优势一览

| 关键词:比特币库、Python、钱包、脚本、BIP32


三步完成安装

关键词:安装、Ubuntu、pip、Docker

Linux(Ubuntu)

先装系统依赖

sudo apt update && sudo apt install -y build-essential python3-dev libgmp3-dev

再装库

pip install bitcoinlib

macOS & Windows

参考 官方完整指引:Homebrew 与 MinGW-w64 依赖说明都能找到。

Docker 方案

官方仓库 docker/ 目录已提供常用镜像,直接在容器里跑,无需折腾本地依赖。


Quick Start:5 分钟跑通「收 → 发」

1. 创建钱包并获得收款地址

from bitcoinlib.wallets import Wallet

w = Wallet.create('Wallet1')  # 本地数据库默认 SQLite
addr = w.get_key().address
print("我的新地址:", addr)
# 输出示例: bc1qk25wwkvz3am9smmm3372xct5s7cwf0hmnq8szj
复制地址,发 0.0001 BTC 做测试,用不了 10 分钟就能到账。

2. 扫描链上数据,查看余额

w.scan()
w.info()

控制台会打印:

3. 把余额发送给好友

tx = w.send_to('bc1qemtr8ywkzg483g8m34ukz2l4pl3730776vzq54', '0.001 BTC', offline=False)
print("交易哈希:", tx.txid)

若一切顺利,立刻返回类似
b7feea5e7c79d4f6f343b5ca28fa2a1fcacfe9a2b7f44f3d2fd8d6c2d82c4078 的 TxID。
你可以用任何区块浏览器实时追踪。


深挖 5 大高频场景

关键词:HD 钱包、隔离见证、多重签名、脚本调试、测试网

场景 1:用 BIP44 生成企业级分层账户

from bitcoinlib.wallets import wallet_create_or_open
w = wallet_create_or_open('CompanyWallet', keys='xprv9s...', network='bitcoin', scheme='bip44')
acc0 = w.new_account('运营账户')
acc1 = w.new_account('财务账户')

每个账户会自动衍生 2ⁿ 个地址空间,方便内部对账。

场景 2:构建隔离见证 3/5 多签

from bitcoinlib.keys import HDKey
from bitcoinlib.wallets import Wallet

keys = [HDKey.from_passphrase(p) for p in ['alice', 'bob', 'charlie', 'david', 'eve']]
w = Wallet.create('Multisig3of5', keys=keys, sigs_required=3, witness_type='segwit')
addr = w.get_key().address
print("多签地址:", addr)

场景 3:编写并解析比特币脚本 asm

from bitcoinlib.transactions import Output
script = 'OP_2 PUBLIC_KEY_1 PUBLIC_KEY_2 OP_2 OP_CHECKMULTISIG'
output = Output(script_type='p2sh', script=script)
print('锁定脚本:', output.script_hex)

调试脚本再也不用手动拼装 op-codes。

场景 4:连接自托管 Bitcoin Core 👉 这里教你 3 步自建全节点保障隐私

场景 5:测试网水龙头一条龙

from bitcoinlib.wallets import Wallet
w = Wallet.create('TestnetFaucet', network='testnet')
t = w.send_to(w.get_key().address, '0.00001 TBTC')

想要 无风险 地实战支付流,测试网 TBTC 0 成本。


常见问题 Q&A

Q1:bitcoinlib 生成的私钥可以用在其他钱包吗?

A:完全可以。它遵循 BIP39/BIP32 标准,助记词与扩展私钥 (xprv/xpub) 都通用,可直接导入 Electrum、Trezor、Ledger 等主流钱包。

Q2:能不能离线签名?

A:能。把 offline=True 即可在离线设备里签名 Raw Tx,再把 hex 拿到线上节点广播。适合冷钱包/硬件钱包开发场景。

👉 用离线签名守住最后一道安全底线

Q3:能对接以太坊吗?

A:目前专注于比特币系 UTXO 模型,ETH 不在支持范围。但你可以 fork 代码,修改参数就能复用大部分钱包、密钥、交易结构逻辑。

Q4:库的安全性如何?

A:所有加密计算依赖成熟的 libsecp256k1 与 Python cryptography,建议在测试网磨合充分后再上线。官方免责声明也提醒:仍在开发迭代,生产环境务必备份+多重验证

Q5:有 GUI 或 Web 界面吗?

A:bitcoinlib 是底层库。你可以自己动手用 Django/Flask 包装,已有社区项目如 Blocksmurfer Explorer 采用它做区块浏览器后端。

Q6:如何参与社区贡献?

A:直接在 GitHub Discussions 提 issue、PR 或提问。作者响应速度相当快。


即将到来的新功能:Taproot & Schnorr

| 关键词:Taproot、Schnorr、Timelock、Roadmap

官方路线图已敲定的下一版本亮点:

开发者可以提前在 develop 分支体验,API 保持向后兼容,迁移平滑。


小结 & 行动清单

  1. 安装:pip install bitcoinlib
  2. 跑通示例:建钱包 → 收币 → 发币
  3. 选任一「五大场景」拓深:HD 企业账户、多签、脚本调试、连接本地节点、离线签名
  4. 关注 Taproot 更新,提前适配 Schnorr 签名
  5. 加入 GitHub 社区,一起把库做得更健壮

将你的第一个钱包名字起成 「HelloBitcoin」,在评论区告诉我你的地址吧!