Wallet
為什麼比特幣將密鑰儲存在數據庫中?
據此,比特幣將使用者的密鑰和一些附加數據儲存在一個名為 wallet.dat 的文件中,該文件是一個伯克利數據庫。假設 wallet.dat 只包含使用者的密鑰。我們還假設我們使用的是 linux。
那麼比特幣將密鑰儲存在數據庫中的主要原因是什麼?如果將密鑰儲存為平面文件,它會不會產生相同的效果:公鑰將是文件名,而私鑰將是文件的內容?
即使我們有數百萬個鍵,因此單個目錄中有數百萬個文件,i-node 限制(目錄中的最大文件數)和文件查找速度也不應該成為問題。大多數 linux 系統使用 ext4 作為其文件系統,因此 ext4 中的i-node 數量是無限的(僅受磁碟記憶體限制)。同樣根據這一點,EXT4 使用稱為 HTree 的結構,它允許文件查找具有恆定的時間複雜度。
歷史上
bdb
也用於 UTXO,因此您可以證明將其用於錢包以及保持一致性是合理的。今天它絕對沒有意義,除了它總是需要在某種程度上得到支持以實現兼容性。真的,錢包完全可以被任何鍵值儲存所取代,它會完全正常執行。您不希望每個文件只有一個密鑰,因為從文件系統和人類互動的角度來看,這往往效率低下且難以處理。備份單個文件比備份一個目錄中的數万個文件要容易得多。