比特幣原始碼分析--比特幣架構
前面的一系列文章我們結合原始碼對比特幣的主要模組進行了梳理和分析。本文我們將這些模組拼接起來,看看比特幣的整體架構。
比特幣的整體架構圖如下:
(1)P2P網路層
完成P2P的組網,網路連線管理,節點狀態的維護,為比特幣提供資料傳輸服務;
(2)安全與共識層
這一層主要向上層提供安全與資料共識服務,保證比特幣中的交易資料的安全與區塊鏈(賬本)的一致性,又可以細分成三個主要模組:
加密演算法:提供各種加密演算法,如SHA,ECDSA資料簽名演算法,hash演算法以及Base58編碼演算法等等。
認證模組:merkle樹用來快速驗證交易是否包含在區塊中;通過加密演算法對交易進行簽名,生成鎖定和解鎖指令碼;指令碼引擎負責解析並執行指令碼;
共識模組:比特幣中採用的是PoW。
(3)資料層
比特幣中的資料,例如交易,區塊,區塊鏈等等。另外該層還包括了資料的儲存,例如通過level db儲存與載入區塊鏈,記憶體交易池等。
(4)RPC
RPC服務端的實現,提供JSON API供客戶端訪問區塊鏈 。
以上4層構成了bitcoind。
(5)應用層
各種比特幣的應用,例如比特幣核心提供的bitcoind client。該層主要是作為RPC客戶端,通過JSON API與bitcoind互動,享受各種區塊鏈的服務(查詢交易資訊、挖礦等等)。
從圖中可以看出,區塊鏈實際上並沒有用到什麼創新的技術,實際上用的還是密碼學、共識演算法、P2P等一些已有的技術,但是區塊鏈巧妙的將這些已有技術組合起來,形成了一個能夠在金融、物聯網、醫療、教育等多個行業都能大顯身手的新技術。