Transactions

在未經確認的交易之後,錢包如何使用未經確認的輸出作為輸入?

  • September 3, 2013

我在地址 A 上有 10 個比特幣。

使用原始交易,我將 5btc 從 A 發送到 B,並將更改地址設置為 A 本身。現在因為從 A 到 B 的交易沒有得到確認,我不能花剩下的 5 個 btc。

但是我看到QT錢包可以做到這一點。前任:

我在地址 A 上有 10 btc。我將 5btc 發送到 B。錢包創建一個新地址 C 並將其設置為找零地址。然後我嘗試在錢包上使用 5 btc,它可以工作。它允許我從地址 C 發送。

  1. 錢包是否在這裡使用未經確認的輸出作為輸入?

2)如果是這樣,它是如何做到這一點的,我該如何使用原始交易來做到這一點?

3)如果沒有,這裡發生了什麼?

錢包在這裡使用未經確認的輸出作為輸入嗎?

是的。

如果是這樣,它是如何做到的

除了 coinbase 交易,交易獨立於區塊。花費未確認輸入的交易看起來與花費確認輸入的交易完全相同。

Bitcoin-Qt 使用未確認的零錢是安全的,因為它知道輸入是有效的,並且會在某個時候得到確認(儘管可能很慢)。對於 Bitcoin-Qt 來說,使用它本身沒有創建的未經確認的輸入是不安全的,因為它們可能永遠不會確認,從而導致資金永久綁定。(非常舊版本的比特幣犯了這個錯誤,但在出現廣泛問題後得到了糾正。)

我如何使用原始交易來做到這一點?

您可以正常創建交易createrawtransaction,但您需要signrawtransaction在其第二個參數中提供有關未確認交易的一些額外資訊。

看起來比特幣 QT 能夠引用它自己的未經確認的交易,這有點危險。考慮一下:

第一個交易(A 到 B)可能在第二個(C 到 …)之後到達區塊鏈,或者它可能根本沒有到達。在這種情況下,第二個事務將不會通過,因為它在第一個事務發生之前無效。即使第二筆交易存在於比特幣 QT 中,它也可能在第一筆交易完成之前不會被發送出去。

如果您想使用原始交易執行此操作,您可以同時創建兩個交易,只需知道第二個交易將無效(因此被區塊鏈拒絕),直到第一個交易通過。

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