如果你已经拥有比特币钱包,下一步就是学会如何安全、高效地发送与接收比特币,比特币交易命令正是连接你与区块链世界的桥梁,它既是技术工具,也是风险管理的阀门,本文将围绕“比特币交易命令”这一关键词,从基础概念、命令格式、实战演练、脚本自动化到安全加固,为你提供一份可落地的操作手册。

为什么必须掌握比特币交易命令
  图形界面钱包虽然友好,但在批量付款、冷签名、手续费动态调整等场景下显得笨拙,命令行工具(Bitcoin Core 的 bitcoin-cli、Electrum 的 cli 版、btcd 的 btcctl 等)则提供了原子级的控制能力:你可以精确指定输入输出、锁定脚本、手续费率,甚至构造复杂的多签或时间锁交易,一句话:图形界面是“自动挡”,命令行是“手动挡”,真正的高手必须会“换挡”。

准备工作:安装节点与钱包
  1. 安装 Bitcoin Core
  Ubuntu 示例:
  sudo add-apt-repository ppa:bitcoin/bitcoin
  sudo apt update && sudo apt install bitcoind bitcoin-cli
  2. 初始化配置文件 ~/.bitcoin/bitcoin.conf
  server=1
  rpcuser=alice
  rpcpassword=StrongP@ssw0rd
  3. 启动并同步区块
  bitcoind -daemon
  bitcoin-cli getblockcount # 确认同步完成

核心命令速查表
  bitcoin-cli getnewaddress "label" "address_type"
  bitcoin-cli getbalance "*" 0 true
  bitcoin-cli listunspent 1 9999999 '["address"]'
  bitcoin-cli createrawtransaction '[{"txid":"...","vout":0}]' '{"address":amount}'
  bitcoin-cli signrawtransactionwithwallet "hexstring"
  bitcoin-cli sendrawtransaction "signedhex"
  bitcoin-cli gettransaction "txid" true
  以上 7 条命令覆盖了 90% 的日常需求:生成地址、查询余额、列出可花费输出、创建裸交易、签名、广播、查询回执。

实战演练:构造并发送一笔 0.01 BTC 的交易
  场景:Alice 要给 Bob 支付 0.01 BTC,并指定 0.00005 BTC 作为矿工费。
  1. 获取 Bob 的收款地址
  bob_addr=$(bitcoin-cli getnewaddress "BobPayment")
  2. 找出 Alice 钱包里大于 0.01005 BTC 的 UTXO
  utxo=$(bitcoin-cli listunspent 1 9999999 '[]' true | jq -r '.[] | select(.amount>0.01005) | {txid:.txid,vout:.vout}' | head -n 1)
  3. 计算找零地址
  change_addr=$(bitcoin-cli getrawchangeaddress)
  4. 创建裸交易
  rawtx=$(bitcoin-cli createrawtransaction "[${utxo}]" "{\"${bob_addr}\":0.01,\"${change_addr}\":0.00005}")
  5. 签名
  signed=$(bitcoin-cli signrawtransactionwithwallet "$rawtx" | jq -r '.hex')
  6. 广播
  txid=$(bitcoin-cli sendrawtransaction "$signed")
  7. 验证
  bitcoin-cli gettransaction "$txid" | jq '.confirmations'

进阶:使用钱包脚本自动化
  在 Linux 服务器上,你可以用 bash 脚本定时扫描未确认交易并追加手续费(RBF),示例片段:
  #!/bin/bash
  txid="$1"
  newfee="$2"
  oldtx=$(bitcoin-cli getrawtransaction "$txid")
  decoded=$(bitcoin-cli decoderawtransaction "$oldtx")
  inputs=$(echo "$decoded" | jq -c '.vin')
  outputs=$(echo "$decoded" | jq -c '.vout | map(select(.value>0)) | map({(.scriptPubKey.addresses[0]): .value}) | add')
  newtx=$(bitcoin-cli createrawtransaction "$inputs" "$outputs")
  signed=$(bitcoin-cli signrawtransactionwithwallet "$newtx" | jq -r '.hex')
  bitcoin-cli sendrawtransaction "$signed"
  保存为 bumpfee.sh,chmod +x bumpfee.sh,即可通过 ./bumpfee.sh txid 0.0001 实现费用替换。

安全加固:离线签名与 PSBT
  1. 在离线机生成私钥,永不触网。
  2. 在线机用 createrawtransaction 生成 PSBT(部分签名比特币交易)。
  3. 通过二维码或 U 盘把 PSBT 传到离线机。
  4. 离线机用 bitcoin-cli walletprocesspsbt 签名。
  5. 把签名后的 PSBT 传回在线机广播。
  该流程杜绝了私钥泄露,是交易所、矿池、大额钱包的标配。

常见坑与排查
  • 错误:mandatory-script-verify-flag-failed
  原因:输入脚本与输出脚本不匹配,通常是地址类型(P2PKH、P2SH、P2WPKH)搞错。
  • 错误:insufficient priority
  原因:手续费过低,节点拒绝转发,可启用 -acceptnonstdtxn=1 测试,或提高费率。
  • 错误:txn-mempool-conflict
  原因:双花,检查是否已广播过相同输入的交易。

未来展望:Taproot 与 Miniscript
  随着 Taproot 激活,比特币交易命令将支持 Schnorr 签名、MAST 结构,Miniscript 则让复杂脚本可读化,命令行里可以直接用 miniscript 描述符生成地址,
  bitcoin-cli getnewaddress "" "bech32m" '{"desc":"wsh(and_v(v:pk(alice_key),or_d(pk(bob_key),older(144)))"}'
  这意味着多重条件、时间锁、哈希锁等高级逻辑将像写 SQL 一样简单。

结语
  掌握比特币交易命令不是炫技,而是对自己资产负责,从最简单的 bitcoin-cli sendtoaddress 到离线 PSBT、RBF、Taproot 脚本,每一步都在降低信任、提升效率,把本文的命令复制到终端,亲手发一笔 0.0001 BTC 的测试交易,你会立刻体会到“私钥在手,天下我有”的快感。