您好,登錄后才能下訂單哦!
比特幣存儲機制
比特幣存儲系統由兩部分組成: kv 數據庫(levelDB)索引和普通數據文件。普通文件用于存儲區塊鏈數據,kv 數據庫用于存儲區塊鏈元數據。用于存儲區塊鏈數據的普通文件以 blk00000.dat , blk00001.dat 文件名格式組成。其中 index 目錄存儲用于存儲區塊元數據。
普通區塊數據文件
為了快速檢索區塊數據,每個文件的大小是128 M Bytes。區塊里的數據(區塊頭和區塊里的所有交易)都會序列成字節碼的形式寫入 dat 文件中。在序列化的過程中,如果檢測到當前寫入文件尺寸加上區塊尺寸大于 128 M Bytes,則會重新生成一個 dat 文件。
kv數據索引
區塊的索引元數據格式如 <blockHash,xxxxx+npos> 格式, 其中 xxxxx 為 dat 文件序號,npos 為區塊寫入 dat 文件的起始位置。?
交易的元數據格式如 <txHash, xxxxx+npos+nTxOffset> 格式, 其中 xxxxx、npos 和上面的描述一致,nTxOffset 為寫入 dat 文件的起始位置(基于npos 位置)。
上述所有元數據都將寫入 kv 數據庫中,其中 blockhash/txHash 將作為后續查詢具體數據在 dat 文件中的索引使用。
LevelDB
Google 的 LevelDB 數據庫存儲區塊鏈元數據。Leveldb是一個google實現的非常高效的kv數據庫,并且是開源的。
它的一個主要特點就是寫的性能非常好,適用于比特幣客戶端這種應用場景。
levelDB雖然是個數據庫,但是并不像其它的主流數據庫(mysql ,oracle等)可以提供客戶端連接服務。它只是一個基于c++的lib庫而已,所以我們使用起來也很簡單,直接在工程里鏈接lib庫文件。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。