Transactions
在比特幣交易中重複相同的輸出
我正在建構一個腳本,該腳本實時索引所有比特幣交易及其所有詳細資訊等。但我在這裡查看此交易 - https://www.blockchain.com/btc/tx/8327996113c5ad326853c8af39424e12b02cadcab03a7e3b387902fe7d503081
我想知道為什麼會有這麼多重複輸出,我用紅色標記了它們。輸出完全相同,地址相同,數量相同。其中一些可能已花費,其中一些可能未花費(實際上在其他範例交易中,我認為我已經看到了 - 具有不同狀態的相同輸出 - 已花費或未花費)。
此外,這可能是一個愚蠢的問題——為什麼其中一些被花掉了,而另一些卻沒有被花掉?
- 它們不是“相同的”:交易輸出由它們的outpoint唯一標識。輸出點是創建輸出的交易的 id 和輸出在交易輸出列表中的位置的組合。
- 該協議根據輸出而不是地址來跟踪資金。事實上,地址的概念根本沒有出現在協議級別,它只是一種將接收者的資訊傳遞
scriptPubKey
給發送者的帶外機制。因此,雖然很奇怪,但在一次交易中創建多個支付到同一地址的輸出是完全合法的。- 大概接收者有某種自動化過程,只要達到最小門檻值,它就會退出服務。為方便起見,他們使用相同的地址。然而,該服務分批付款的時間比接收者達到最低門檻值所需的時間更長。
- 由於 UTXO 不相同(參見 1.),因此單獨選擇 UTXO 用作交易中的輸入。由於接收方顯然已經接受了地址重用造成的隱私損失,他們似乎也不介意多次從收到的資金到同一個地址而造成的隱私損失。
或者,接收器更喜歡具有較小值的多個輸出而不是具有較大值的單個輸出,正如@RedGrittyBrick 在評論中建議的那樣。但是,這通常出現在企業錢包流動性管理的背景下,這個解釋的金額似乎有點小。