Transactions

守護程序如何通過雜湊獲取交易

  • April 3, 2020

我想知道守護程序如何從雜湊中獲取交易數據。我不是在問我如何獲得它,我知道我可以通過 rpc 獲得它,我是在問守護程序如何在幕後完成它。它是否有已發生的每筆交易及其所在區塊的數據庫?還是只是遞歸搜尋每個塊?我很難過它是如何有效地做到這一點的。謝謝

這取決於您如何配置您的 bitcoind 以及您使用的命令。

getrawtransaction首先在記憶體池中搜尋您的 txid。mempool 中的交易保存在記憶體中,可以通過 txid 查找。如果交易不在記憶體池中。那麼您需要提供可以找到它的塊的雜湊,或者您需要啟用交易索引(通過從您的 bitcoin.conf 開始-txindex或添加txindex=1到您的 bitcoin.conf)。

如果您提供可以找到 tx 的塊的散列,則在塊索引中查找塊在磁碟上的位置。然後對該塊進行反序列化并線性搜尋 tx。

如果您啟用了事務索引,則在事務索引中查找 txid。事務索引將 txid 映射到磁碟上的某個位置(類似於塊索引如何將塊雜湊映射到磁碟上的某個位置)。所以這個數據庫也允許快速查找。

RPCgettransaction不同於. getrawtransaction這是一個僅限錢包的 RPC。錢包儲存整個交易。因此gettransaction,只需在儲存交易的地圖中查找 txid。

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