UTXO 模型和交易費用/Kb 澄清
我一直在努力根據此問題中討論的 UTXO 模型來理解輸入/輸出和交易細節,並考慮它與基於此問題中討論的交易大小(以 kb 為單位)的交易費用的關係。我想澄清一些事情,除了回答我的問題之外,請隨意挑選我所說的任何錯誤 - 因為這些問題來自我的理解。
似乎交易大小主要是輸入和輸出數量的函式(從某種意義上說,這些是我作為發送者可以控制的東西,而其他影響大小的組件或多或少是靜態的)。
澄清 1:(忽略費用和找零) 假設 Alice 給我(Bob!)2 btc。由於拉里和格雷格各自發送了 1 個比特幣,她得到了這 2 個比特幣。這意味著她有這兩個 UTXO 輸出,每個輸出與她的錢包相關聯的 1 btc,當她將它們發送給我時,交易將有 2 個輸入和 1 個輸出,有點像我在區塊瀏覽器上找到的這個交易。
這筆交易處理完畢後,
does my wallet remember that these 2 btc came from separate UTXO's? Or does it "get melted" as someone alluded to in my first link. More precisely, if I send these 2 btc to Gerald, will it show 1 input or 2?
澄清 2:(有費用和找零) Alice 想寄給我 2 btc。拉里、格雷格和艾倫之前分別向她發送了 1 個比特幣。所以她有 3 個與她的錢包相關聯的 UTXO,每個價值 1 個比特幣。她去寄給我 2 btc,但需要支付費用。為方便起見,我們假設收取 0.5 比特幣的費用。
Does this mean she now has 3 inputs and 2 outputs contributing to the size of the transaction (and thus contributing to the size of the fee)
(她需要所有三個硬幣來支付我的費用並支付費用,然後我將成為一個輸出,而她的“更改地址”將是另一個。最後,我想我理解大多數錢包服務會為你“處理”所有這些細節,因為你可以只輸入 btc 地址和你想要發送的金額,其餘的由他們處理。
Do they typically do this in a most efficient way?
例如,假設我使用像 Nano Ledger S 這樣的錢包。如果我有一個 25 btc 的 UTXO、一個 1 btc 的 UTXO 和 5 個 0.5 btc 的 UTXO,我去給某人發送 1 btc,它會選擇 UTXO這導致最小的交易規模?附錄:我確實計劃在這個網站上活躍,所以如果我的問題可以改進以更好地適應這個社區,請提出批評。
我的錢包還記得這 2 個 btc 來自不同的 UTXO 嗎?或者它是否像我第一個連結中提到的那樣“融化”。更準確地說,如果我將這 2 個 btc 發送給 Gerald,它會顯示 1 個輸入還是 2 個輸入?
(1) 你有一個由 Alice 的交易創建的 2 BTC UTXO。該交易花費了兩個 UTXO,但將它們合併為一個。你的錢包不關心它的歷史——它有一個 UTXO,當花費它時,它需要一個輸入的交易。
錢包或其他軟體有可能找出硬幣的歷史,並找出它來自花費了兩個的交易。但它對未來與它的交易沒有影響。
這是否意味著她現在有 3 個輸入和 2 個輸出對交易規模有貢獻(從而對費用有貢獻)
這是正確的。您將創建一個具有 3 個輸入(每個 1 BTC)和 2 個輸出(一個 2 BTC,一個 0.5 BTC)的交易。差價是 0.5 BTC 的費用。
他們通常以最有效的方式做到這一點嗎?
通常,不,實際上。因為“最有效”並不是優化的唯一標準。例如,您希望現在將交易成本降至最低,但您也不希望將您的錢包置於以後會增加交易成本的狀態。例如,一些硬幣選擇策略(稱為這個問題)會導致在典型工作負載中不斷地將你的硬幣磨成更小的變化,從而使發送未來硬幣的成本越來越高。
一些錢包會考慮目前的費用條件來做出這些決定。
總體而言,分析各種硬幣選擇方案需要做大量工作。其中一些出現在 Mark Erhardt 的碩士論文中。