Bitcoind

如何檢查輸出是否已用完?

  • November 2, 2017

使用 rpc 客戶端(例如bitcoin-cli),對於給定的事務和它的輸出索引,我如何判斷輸出目前是 utxo,還是已經使用?

在後一種情況下,我還想知道花費它的交易。

我查看了gettxout命令,但我不清楚如何從它返回的數據中提取答案。

我正在執行一個 txindex=1 的完整節點。

如果gettxout返回某些內容,則輸出未使用。如果它什麼都不返回,則輸出要麼不存在,要麼已用完。

你不需要-txindex這個。

正如@pieter-wuille 已經回答了你問題的前半部分:

如果gettxout返回某些內容,則輸出未使用。如果它什麼都不返回,則輸出要麼不存在,要麼已用完。

為此,我要補充一點,您可以設置 unconfirmed flag true,因此它也會考慮未確認的交易。

要回答您問題的第二部分,這是查找花費您的 txo 的交易的次優方法:

假設txindex=1prune=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
  }
}

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