跳至主要內容
進階

選幣策略

選幣(Coin Selection)是錢包決定使用哪些 UTXO 作為交易輸入的過程,直接影響手續費、隱私和 UTXO 集合管理。

15 分鐘

為什麼選幣很重要?

每筆比特幣交易必須完整花費一個或多個 UTXO。錢包需要選擇足夠的 UTXO 來支付目標金額加上手續費,並產生找零輸出。這個選擇會影響:

  • 手續費:更多輸入 = 更大交易 = 更高費用
  • 隱私:輸入連結暴露地址關聯
  • UTXO 碎片化:影響未來交易成本
  • 找零輸出:產生新的 UTXO 需要未來花費

選幣問題

假設你的錢包有以下 UTXO:

可用 UTXO

UTXO A: 0.5 BTC (bc1q...abc)

UTXO B: 0.3 BTC (bc1q...def)

UTXO C: 0.1 BTC (bc1q...ghi)

UTXO D: 0.05 BTC (bc1q...jkl)

UTXO E: 0.01 BTC (bc1q...mno)

總計:0.96 BTC

如果要發送 0.35 BTC,錢包有多種選擇:

方案 輸入 找零 大小
1 A (0.5) ~0.15 BTC 1 輸入
2 B + C (0.4) ~0.05 BTC 2 輸入
3 B + C + D (0.45) ~0.10 BTC 3 輸入
4 B + D + E + ... 可能精確 多輸入

常見選幣演算法

1. 最大優先 (Largest First)

優先選擇金額最大的 UTXO,直到滿足目標金額。簡單但通常不是最優選擇。

優點

  • • 實現簡單
  • • 減少輸入數量

缺點

  • • 可能產生大額找零
  • • 小額 UTXO 永遠不被使用

2. 先進先出 (FIFO)

按照 UTXO 收到的時間順序選擇,最舊的先使用。

優點

  • • 避免 UTXO 積壓
  • • 隱私:混合新舊幣

缺點

  • • 不考慮費用優化
  • • 可能產生大交易

3. Branch and Bound (BnB)

Bitcoin Core 使用的主要演算法。嘗試找到精確匹配目標金額的 UTXO 組合, 完全避免找零輸出。

無找零交易的好處:

  • • 省下一個輸出(約 31-43 vBytes)
  • • 減少 UTXO 集合膨脹
  • • 提升隱私(無法識別找零)

# BnB 搜尋示例

目標:0.36 BTC(含手續費)

嘗試:B + C + E = 0.3 + 0.1 + 0.01 = 0.41 ✗

嘗試:B + D + E = 0.3 + 0.05 + 0.01 = 0.36 ✓

精確匹配,無需找零!

4. 隨機抽樣 (Random)

隨機選擇 UTXO 直到滿足目標。常作為備選方案或與其他策略結合使用。

5. Knapsack

經典的背包問題解法。Bitcoin Core 的 BnB 失敗時會回退到這個方法。 嘗試最小化找零金額。

影響選幣的因素

費率環境

當前費率直接影響最優策略:

費率 策略 原因
低費率 多輸入,整合 UTXO 趁便宜清理碎片
中等費率 平衡選擇 正常交易
高費率 最少輸入,避免小 UTXO 減少費用

灰塵限制 (Dust Limit)

當 UTXO 金額太小,花費它的手續費可能超過其價值。這類 UTXO 被稱為「灰塵」。

# 灰塵判斷

P2WPKH 輸入大小 ≈ 68 vBytes

若費率 = 50 sat/vB

花費成本 = 68 × 50 = 3,400 sats

# 小於 3,400 sats 的 UTXO 就是灰塵

隱私考量

地址連結

當多個 UTXO 作為同一筆交易的輸入時,它們被假設屬於同一個人。 這稱為「共同輸入所有權假設」(Common Input Ownership Heuristic)。

隱私洩露: 如果地址 A 和地址 B 的 UTXO 同時作為輸入, 區塊鏈分析可以推斷這兩個地址屬於同一實體。

找零識別

分析者可以通過多種方式識別找零輸出:

  • 金額啟發:找零通常是「奇怪」的數字
  • 地址類型:找零使用相同地址類型
  • 輸出順序:找零位置可能有規律

隱私優化策略

  • 避免合併來自不同來源的 UTXO
  • 使用無找零選幣(BnB)
  • 考慮使用 CoinJoin 或 PayJoin
  • 隨機化輸出順序

UTXO 管理最佳實踐

1

低費率時整合

週末或夜間,將小額 UTXO 合併成較大的

2

避免過度碎片化

接收時盡量使用較少的地址和較大的金額

3

標籤化 UTXO

記錄 UTXO 來源,避免混合不同隱私等級的幣

4

使用手動選幣

進階錢包允許手動選擇 UTXO,更好地控制隱私

錢包實作

不同錢包的選幣策略:

錢包 演算法 手動選幣
Bitcoin Core BnB + Knapsack 支援
Sparrow 多種可選 支援
Electrum 可配置 支援
一般手機錢包 自動 不支援

延伸閱讀: 了解 手續費估算UTXO 模型 可以幫助更好地理解選幣決策。

已複製連結
已複製到剪貼簿