以太坊的架构

根据以太坊白皮书《A Next-Generation Smart Contract and Decentralized Application Platform》的描述,以太坊架构如下图所示。

 

以太坊架构

如图所示,以太坊架构分为 7 层,由下至上依次是存储层、数据层、网络层、协议层、共识层、合约层、应用层。

其中存储层主要用于存储以太坊系统运行中的日志数据及区块链元数据,存储技术主要使用文件系统和 LevelDB。

数据层主要用于处理以太坊交易中的各类数据,如将数据打包成区块,将区块维护成链式结构,区块中内容的加密与哈希计算,区块内容的数字签名及增加时间戳印记,将交易数据构建成 Merkle 树,并计算 Merkle 树根节点的 hash 值等。

与比特币的不同之处在于以太坊引入了交易和交易池的概念。交易指的是一个账户向另一个账户发送被签名的数据包的过程。而交易池则存放通过节点验证的交易,这些交易会放在矿工挖出的新区块里。

以太坊的 Event(事件)指的是和以太坊虚拟机提供的日志接口,当事件被调用时,对应的日志信息被保存在日志文件中。

与比特币一样,以太坊的系统也是基于 P2P 网络的,在网络中每个节点既有客户端角色,又有服务端角色。

协议层是以太坊提供的供系统各模块相互调用的协议支持,主要有 HTTP、RPC协议、LES、ETH 协议、Whipser 协议等。

以太坊基于 HTTP Client 实现了对 HTTP 的支持,实现了 GET、POST 等 HTTP方法。外部程序通过 JSON RPC 调用以太坊的 API 时需通过 RPC (远程过程调用) 协议。

Whisper 协议用于 DApp 间通信。

LES 的全称是轻量级以太坊子协议(Light Ethereum Sub-protocol),允许以太坊节点同步获取区块时仅下载区块的头部,在需要时再获取区块的其他部分。

共识层在以太坊系统中有 PoW(Proof of Work)和 PoS(Proof of Stake)两种共识算法。

合约层分为两层,底层是 EVM(Ethereum Virtual Machine,即以太坊虚拟机),上层的智能合约运行在 EVM 中。智能合约是运行在以太坊上的代码的统称,一个智能合约往往包含数据和代码两部分。智能合约系统将约定或合同代码化,由特定事件驱动触发执行。因此,在原理上适用于对安全性、信任性、长期性的约定或合同场景。在以太坊系统中,智能合约的默认编程语言是 Solidity,一般学过 JavaScript 语言的读者很容易上手 Solidity。

应用层有 DApp(Decentralized Application,分布式应用)、以太坊钱包等多种衍生应用,是目前开发者最活跃的一层。

posted @ 2021-10-27 22:31  Mr.peter  阅读(1997)  评论(0编辑  收藏  举报