Bitcoin-Core

比特幣核心自動選幣

  • March 25, 2021

出於商業原因,我需要使用比特幣核心(v0.20.1)自動硬幣選擇功能,幾天前我看到一個讓我困惑的交易出來,就像這樣:

input

 0.00017[...]  bc1qaddr1
 0.01292[...]  bc1qaddr2
 0.00030[...]  bc1qaddr3
 0.00020[...]  bc1qaddr4
 0.00015[...]  bc1qaddr5
 0.00035[...]  bc1qaddr6
 0.02371[...]  bc1qaddr7

output

 0.02783[...]  bc1qaddr8  > amount sent
 0.00965[...]  bc1qaddr9  > change

在這個交易中,7 個 utxos 中有 5 個是不必要的,以這種方式將 utxos 連結在一起有什麼好處嗎?
從我的角度來看,這是一種失去隱私的可怕方式,並且支付的費用比需要的多,我想念什麼?
我讀到比特幣核心試圖從可用的 utxos 和要發送的數量中找到完全匹配,但如果它失敗了,那麼嘗試找到一個 utxos 的子集以達到 0.01btc 的變化,對嗎?
所以,就我而言,添加了不需要的 utxos 以使我的交易變化更接近 0.01?

發生這種情況是因為 Bitcoin Core 的硬幣選擇算法試圖有 0.01 BTC 的最小變化。從找零輸出中減去費用,因此結果是找零輸出的價值較低,但在費用之前,它會嘗試使找零輸出至少為 0.01 BTC。

正如我們在您的交易中看到的,費用前的變化約為 0.01 BTC。大概它實際上已經結束了,因為您混淆了最後幾個數字。然後從找零輸出中減去交易費用,得到你擁有的最終找零輸出值。


有最小變化的原因是為了避免產生非常小的變化輸出。小額零錢輸出可能對使用者的錢包和整個網路有害。這些小的零錢輸出導致錢包擁有更多的 UTXO,這意味著對於未來的交易,需要花費更多的 UTXO。此外,當費率上升時,小值很快就會變成不經濟的輸出。如果創建了大量的小額找零輸出,那麼當費用很高時,錢包最終可能會有很大一部分 UTXO 無法使用。

此外,通過有一個最小的變化目標,硬幣選擇算法將傾向於鞏固和掃除較小的 UTXO。一般來說,這種行為對錢包和網路都有好處。它減少了全球 UTXO 的數量,減少了錢包需要處理和跟踪的 UTXO 的數量,並降低了錢包中的 UTXO 在高費用事件中變得不經濟的可能性。


一般來說,硬幣選擇是一個難題,需要平衡幾個因素。這不僅僅是現在交易的費用,也不一定只是當時錢包的使用者。代幣選擇需要考慮未來花費產出的成本,以及其行為將如何影響未來交易中 UTXO 的選擇。選幣需要平衡網路的健康和使用者錢包的性能。

引用自:https://bitcoin.stackexchange.com/questions/103823