比特幣核心自動選幣
出於商業原因,我需要使用比特幣核心(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 的選擇。選幣需要平衡網路的健康和使用者錢包的性能。