在未經確認的交易之後,錢包如何使用未經確認的輸出作為輸入?
我在地址 A 上有 10 個比特幣。
使用原始交易,我將 5btc 從 A 發送到 B,並將更改地址設置為 A 本身。現在因為從 A 到 B 的交易沒有得到確認,我不能花剩下的 5 個 btc。
但是我看到QT錢包可以做到這一點。前任:
我在地址 A 上有 10 btc。我將 5btc 發送到 B。錢包創建一個新地址 C 並將其設置為找零地址。然後我嘗試在錢包上使用 5 btc,它可以工作。它允許我從地址 C 發送。
- 錢包是否在這裡使用未經確認的輸出作為輸入?
2)如果是這樣,它是如何做到這一點的,我該如何使用原始交易來做到這一點?
3)如果沒有,這裡發生了什麼?
錢包在這裡使用未經確認的輸出作為輸入嗎?
是的。
如果是這樣,它是如何做到的
除了 coinbase 交易,交易獨立於區塊。花費未確認輸入的交易看起來與花費確認輸入的交易完全相同。
Bitcoin-Qt 使用未確認的零錢是安全的,因為它知道輸入是有效的,並且會在某個時候得到確認(儘管可能很慢)。對於 Bitcoin-Qt 來說,使用它本身沒有創建的未經確認的輸入是不安全的,因為它們可能永遠不會確認,從而導致資金永久綁定。(非常舊版本的比特幣犯了這個錯誤,但在出現廣泛問題後得到了糾正。)
我如何使用原始交易來做到這一點?
您可以正常創建交易
createrawtransaction
,但您需要signrawtransaction
在其第二個參數中提供有關未確認交易的一些額外資訊。
看起來比特幣 QT 能夠引用它自己的未經確認的交易,這有點危險。考慮一下:
第一個交易(A 到 B)可能在第二個(C 到 …)之後到達區塊鏈,或者它可能根本沒有到達。在這種情況下,第二個事務將不會通過,因為它在第一個事務發生之前無效。即使第二筆交易存在於比特幣 QT 中,它也可能在第一筆交易完成之前不會被發送出去。
如果您想使用原始交易執行此操作,您可以同時創建兩個交易,只需知道第二個交易將無效(因此被區塊鏈拒絕),直到第一個交易通過。