Bitcoind
如何檢查輸出是否已用完?
使用 rpc 客戶端(例如
bitcoin-cli
),對於給定的事務和它的輸出索引,我如何判斷輸出目前是 utxo,還是已經使用?在後一種情況下,我還想知道花費它的交易。
我查看了
gettxout
命令,但我不清楚如何從它返回的數據中提取答案。我正在執行一個 txindex=1 的完整節點。
如果
gettxout
返回某些內容,則輸出未使用。如果它什麼都不返回,則輸出要麼不存在,要麼已用完。你不需要
-txindex
這個。
正如@pieter-wuille 已經回答了你問題的前半部分:
如果
gettxout
返回某些內容,則輸出未使用。如果它什麼都不返回,則輸出要麼不存在,要麼已用完。為此,我要補充一點,您可以設置 unconfirmed flag
true
,因此它也會考慮未確認的交易。要回答您問題的第二部分,這是查找花費您的 txo 的交易的次優方法:
假設
txindex=1
和prune=0
.要找出誰花費了 txout,您可以找出它被確認的塊:
getrawtransaction {txid} 1
。從這裡開始,您可以遍歷所有塊,直到最後到達的一個 (getblock
) 和記憶體池 (getrawmempool
),同時檢查每筆交易:foreach(var input in tx.inputs) { if(input.prevout.txid == myTxo.txid && input.prevout.index == myTxo.index) { // tx spent the txo you were looking for } }