本章的主要內容是爲大家介紹一下以太坊的系統架構。
根據以太坊白皮書的描述,以太坊系統架構圖如下所示:
如圖所示,以太坊系統架構大體上分爲8層,由底層到應用層依次爲存儲層、數據層、網絡層、協議層、共識層、激勵層、合約層、應用層。
每個層級的主要功能:
(1)存儲層:用於存儲以太坊系統運行過程中產生的區塊鏈元數據和系統日誌。區塊鏈元數據採用 LevelDB 數據庫存儲,系統日誌由文件系統存儲。
(2)數據層:數據層是區塊鏈的核心,主要處理以太坊交易中的各類數據,完成數據的編碼、解碼,將數據打包成區塊,將區塊拼接成鏈式結構,處理區塊數據簽名並添加時間戳印記,將交易數據構建成 Merkle 樹,並計算 Merkle 樹根節點的 hash 值等。
(3)網絡層:主要實現網絡節點的連接和通訊,又稱點對點技術(P2P)。
(4)協議層:以太坊提供的供系統各模塊相互調用的協議支持,主要有 HTTP、RPC協議、LES、ETH 協議、Whipser 協議等。
以太坊基於 HTTP Client 實現了對 HTTP 的支持,實現了 GET、POST 等 HTTP 方法。
外部程序通過 JSON RPC 調用以太坊的 API 時需通過 RPC (遠程過程調用) 協議。
Whisper 協議用於 DApp 間通信。
LES 的全稱是輕量級以太坊子協議(Light Ethereum Sub-protocol),允許以太坊節點同步獲取區塊時僅下載區塊的頭部,在需要時再獲取區塊的其他部分。
(5)共識層:主要實現全網所有節點對交易和數據達成一致,防範拜占庭攻擊、女巫攻擊、51%攻擊等共識攻擊,其算法稱爲共識機制。共識機制是區塊鏈的核心技術,它決定了有誰來出塊,出塊權選擇方案將影響整個系統的安全與穩定。常用的共識機制有POW(Proof of work)工作量證明、POS(Proof of stake)權益證明等。
(6)激勵層:激勵層主要是爲了實現代幣的發行和分配,採用經濟利益來規範整個系統正常循環發展。(注:私有鏈不需要激勵機制)
(7)合約層:智能合約是運行在以太坊虛擬機上代碼的統稱。智能合約的開發一般採用 Solidity 編程語言,編譯成功後部署到 EVM 上運行執行。
(8)應用層:基於以太坊系統開發應用產品,根據不同場景開發相應的應用,是開發者主要的工作區。
總結:從以太坊源碼分析來看,以太坊系統架構可以分成8個層級,每個層級直接是有依賴關係的,最終形成一套完整的系統。以太坊是開源的,大家可以下載源碼查看,學習裏面的技術。也可以依賴以太坊系統,搭建自己的應用系統,比如產品溯源、身份認證、權限認證等。
以太坊官網:https://ethereum.org
以太坊源碼:https://github.com/ethereum/go-ethereum
以太坊中國社區:https://ethfans.org