Transactions

為什麼向多個地址付款比單獨發送付款更便宜

  • April 1, 2022

我在這裡找到了這篇關於向多個地址匯款的舊文章,它用“具體數字”解釋了為什麼單筆交易比累積交易更昂貴。由於某種原因,我仍然不明白,也許我錯過了一些東西。假設我要發送 $ 10 to 10 different people. From my point of view I can either create 10 individual transactions and lets say each transaction will have value of $ 10 我會付錢的 $ 1 fee for each of them which means I will send $ 100 美元給人們,我會花 $ 10 for transactions fees. If I just create one transaction with multiple recipients how is that cheaper if the total value transacted will be again 10x $ 100 == $ 100 and I will set up the same fee which will be in this case $ 10. 我大概理解累積交易在技術上會更大,執行得更快(因為它會有更大的優先級,交易的價值更大)但是當完全不考慮交易的速度時,情況就不一樣了結果?我發送了 10 筆單獨的交易(向 10 個不同的地址發送了大約 10 美元,首先我發送了第一個,然後是第二個,然後是第三個等等)只是為了在測試網中測試這個並且還做了一個大的(提供列表地址和值並同時發送)並且它們都已得到確認,所以我肯定遺漏了一些東西。

只是為了形象化:

批量交易範例:

Vladimir 1btc向 Peter 發送0.8btc0.1btc作為對新地址的更改 0.1btc 用作交易費用Vladimir在舊地址中獲得了 0btc,Vladimir在新地址中獲得了****0.1btc,Peter在他的地址中有0.8btc , Vladimir 花費了 0.1btc 的交易費用。

個別交易範例:

第一次交易:Vladimir 1btc 發送0.4btc給 Peter(考慮到他想在單獨的交易中發送另一半)他還剩下 0.6btc,他發送了0.55btc作為新地址的更改,並使用0.05btc 作為交易費用

第二筆交易:弗拉基米爾0.55btc(他的新存款地址在第一次交易後收到) 發送0.4btc給彼得,0.1btc作為對他的新地址的更改(所以他有0.1btc在批處理範例中剩下) 0.05btc用作交易費用 Vladimir在舊地址獲得 0btc,Vladimir新地址獲得 0.1btc,Peter在他的地址獲得****0.8btc(收到0.4btc 和 0.4btc),Vladimir 在交易費用上花費了 0.1btc( 0.05btc + 0.05 btc == 0.1btc)。

弗拉基米爾在兩種情況下都花費了0.1btc,弗拉基米爾最終在兩種情況下都得到了相同的餘額,而彼得得到了相同的價值,為什麼第一種情況更便宜呢?

您需要了解兩件事才能了解為什麼批量(如您所說的累積)交易更便宜。首先是比特幣使用的 UTXO 模型。當您向某人發送比特幣時,您正在做的是獲取一個或多個未使用的交易輸出 (UTXO),將它們花費(從而也銷毀它們),並創建接收者可以花費的新 UTXO。

由於 UTXO 已完全用完,如果您選擇的 UTXO 總價值超過您要發送的金額,您需要將額外金額作為找零返還給自己。因此,您的交易還將創建一個新的 UTXO,您可以花費該 UTXO,其中包含更改的金額。大多數交易都會有找零輸出,因為您不太可能擁有正確數量的 UTXO,其數量與您想要發送的數量完全匹配並支付交易費用。

您需要了解的第二件事是如何計算交易費用。交易費用基於交易的物理大小(以字節為單位),而不是交易金額。這個大小取決於花費了多少 UTXO,以及創建了多少輸出。花費一個 100 BTC UTXO 給一個收件人和一個找零輸出將比花費 10 個 0.1 BTC UTXO 給五個收件人和一個找零便宜。

在此背景下,讓我們考慮您支付 10 個收件人的場景。為簡單起見,假設您有 1 個 UTXO,其價值足以支付所有 10 個人。

當您進行 10 次單獨的交易時,您將首先進行一筆花費您的第一個 UTXO 的交易,然後為接收者創建一個輸出,並將一個零錢輸出返回給您自己。在下一個交易中,你花費你的零錢輸出,為接收者做一個輸出,另一個零錢輸出回給你自己。您這樣做,直到 10 位收件人得到付款。

通過進行 10 個單獨的交易,您創建了 10 個交易,每個交易花費一個 UTXO 並創建一個找零輸出,總共有 10 個 UTXO、10 個找零輸出和 10 個接收輸出。您將不得不為所有這些事情支付交易費用。

現在考慮批處理的情況。您花費一個 UTXO,並創建 10 個接收者輸出和 1 個更改輸出。如果你這樣做,你仍然需要為 10 個接收輸出支付相同的費用,但你只需要為一個 UTXO 和一個找零輸出支付費用。因為您使用更少的數據來支付這 10 個收件人,所以您支付的費用更少,因此能夠節省資金。

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