本章的主要内容是为大家介绍一下以太坊的系统架构。
根据以太坊白皮书的描述,以太坊系统架构图如下所示:
如图所示,以太坊系统架构大体上分为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