Bitcoin-Core

輸出的變化儲存在哪裡?

  • March 22, 2022

我了解到比特幣沒有辦法表示賬戶餘額,而是私鑰使用者擁有的 UTXO 的總和。那麼輸出的變化儲存在哪裡?

我的意思是,當一個交易的輸出被用作另一個交易的輸入時,它必須全部花費。有時輸出的硬幣價值高於使用者希望支付的價值。在這種情況下,客戶端生成一個新的比特幣地址,並將差額發送回該地址。

更改是否會重新儲存在 UTXO 中?

當發件人創建交易時,他們會明確定義他們花費的比特幣。我們將此類比特幣未使用交易輸出 (UTXO) 稱為比特幣未使用交易輸出 (UTXO),您可以將 UTXO 集視為比特幣餘額的分佈式賬本。UTXO 的狀態是三元的:它們要麼還不存在,要麼可供消費,要麼已經被消費。您不能從 UTXO 中扣除,它們必須在一筆交易中全部用完。

支出者通過其獨特的輸出點引用 UTXO 來明確選擇交易輸入,該輸出點txid:vout源自創建待花費 UTXO 的交易及其在輸出列表中的位置。

在聲明 UTXO 被花費後,花費者對輸入的總價值的總和有可分配的餘額。支出者將明確地將消耗的輸入的值分配給新的輸出。任何未分配的資金都被視為交易費用,並且將由將交易包含在一個區塊中的礦工收取。

這意味著分配的資金總額小於或等於花費的 UTXO 的價值,其餘部分是交易費用。以下情況適用於非coinbase交易:

  • Σ(outputs) ≤ Σ(inputs)
  • transaction fees = Σ(inputs) - Σ(outputs)

因此,只有交易的輸入和輸出是明確定義的。交易費用由輸入和輸出隱含定義。

因此,發送給單個接收者的簡單交易通常有兩個輸出:

  • 接收者輸出以進行支付
  • 更改輸出以將剩餘資金從輸入返回給發送者

我從 blockchair.com 抓取了一筆隨機交易來視覺化:

具有一個輸入和兩個輸出的交易,其中一個具有整數金額

如果 Alice 的錢包沒有為自己創建找零輸出,Alice 將支付 11,044…. BTC 的額外費用。;)

請注意,由於整數,我只是猜測 610 BTC 是接收方輸出,我對這筆交易並不熟悉。

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