Algorithms

區塊鏈中交易查找的算法效率

  • January 28, 2016

由於比特幣使用二元默克爾樹(剛剛了解到),我想知道區塊鏈中交易查找的算法效率是多少。

我不知道區塊鏈下面的資料結構是如何組織的。

AFAIK,每個塊都包含一個 Merkle 樹,它可以通過prevId其自己的塊頭中的欄位與前一個塊樹相關聯。

考慮到這一切,我想知道,給定 a ,我是否TXID能夠在對數時間(O(log2 n)

不,你不能。區塊鍊是一個區塊鍊錶,每個區塊包含一個交易數組。塊頭送出到其中交易的 Merkle 樹,但它們是按時間順序排序的,而不是按 txid,所以你需要線性搜尋。如果你想快速找到一個區塊中的交易,你需​​要一個外部索引資料結構。

然而,在比特幣節點或錢包的正常操作中也不需要這樣做。

為了驗證,維護了一組未使用的交易輸出(它是節點操作的內部,而不是區塊鏈的一部分),由 txid(所謂的 UTXO 集)索引。該集合表示區塊鏈中給定點的分類帳的“狀態”,並且可以將塊視為 UTXO 集的“更新檔”:交易輸入從 UTXO 集中刪除(“花費”)條目,而交易輸出創建新的。

錢包維護自己的一組與使用者餘額相關的交易。這些通常被索引,但比區塊鏈中所有交易的集合要小得多,並且通常只保存在記憶體中。

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