Transaction-Verification

檢查交易輸入的記憶體使用量是多少?

  • April 27, 2016

每當節點接收到交易時,節點都會驗證其有效性。為此,它會檢查每個交易輸入是否是 UTXO 集的一部分。據我了解,UTXO 集儲存在鏈狀態數據庫中,該數據庫保存在一個LevelDB結構中。

我以前認為他的 UTXO 集保留在記憶體中,但由於我了解到它目前的大小約為 1.2GiB,這似乎不太可能。

因此,我假設 chainstate-db 儲存在磁碟上,但每秒訪問多次以檢查事務輸入。這會在節點上引起多少記憶體使用量?

沒錯,UTXO 集使用 leveldb 儲存在 .bitcoin/chainstate 目錄的磁碟上。它以壓縮狀態儲存,目前大小約為 1.5GB

為了加快訪問速度,bitcoind 使用記憶體記憶體,可以使用 -dbcache 選項進行配置。

因此,我假設 chainstate-db 儲存在磁碟上,但每秒訪問多次以檢查事務輸入。這會在節點上引起多少記憶體使用量?

訪問 leveldb 數據庫本身就像訪問任何其他 nosql 數據庫一樣。您基本上查找作為 utxo 的鍵並獲取一個值作為輸出,您需要將其反序列化並儲存在記憶體變數中

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