Bitcoin-Core-Development
驗證在比特幣核心程式碼庫中在概念上涵蓋什麼?
驗證(.h和.cpp)在比特幣核心程式碼庫中的概念涵蓋什麼?
這個問題是 Larry Ruane 在 2021 年 5 月 12 日的比特幣核心公關評論俱樂部上的 Carl Dong PR上提出的,以去全球化
ChainstateManager
John Newbery在比特幣核心公關評論俱樂部會議上回答了這個問題。
從概念上講,驗證儲存並維護我們對區塊鍊和相關 UTXO 集的最佳視圖。它還包括一個向記憶體池送出未確認交易的介面。
此外,James O’Beirne在 Bitcoin Edge Dev++ 上關於比特幣核心架構的展示文稿中的幻燈片指出:
驗證根據某些接受規則處理修改鏈狀態和事務(記憶體池)的記憶體資料結構。
它既定義了其中一些資料結構(CChainState,
mapBlockIndex
),也定義了驗證它們的過程,例如CheckBlock()
。奇怪的是,它還包含一些用於將數據編組到磁碟和從磁碟編組的實用功能,例如
ReadBlockFromDisk()
、FlushStateToDisk()
、{Dump,Load}Mempool()
。這可能是因為validation.{h,cpp}
是重構main.{h,cpp}
為更小部分的結果。這是 James 展示文稿中的圖表,顯示了驗證如何與程式碼庫的其他區域相關聯。