区块链其实是基于不同的软件客户端运行的。如果我们想了解以太坊的原理,那么必须理解以太坊的客户端是怎么协作的。当这些客户端工作良好时,区块链正常运行;但是如果客户端有漏洞或遭到恶意攻击,它们对链的不同看法可能会导致对利益相关者遭受 slashing 惩罚,甚至破坏以太坊链本身。本课题旨在探究不同类型的以太坊客户端是如何协作的,不同类型的节点各自需要运行客户端的类型,以及客户端多样性缺失可能造成的问题。

一、以太坊节点

1、节点和客户端

“节点”是运行以太坊客户端软件的任何实体,不同节点连接在一起形成网络。

“客户端”是以太坊执行具体功能的软件,根据协议规则验证数据并保持网络安全。

以太坊节点必须运行两个客户端:执行客户端和共识客户端。

Source: https://ethereum.org/

Source: https://ethereum.org/

2、节点类型

Untitled

2.1 Full node

全节点对区块链进行逐块验证,包括下载和验证每个块的 block body 和状态数据。网络中存在着不同类别的全节点:

不论验证从哪里开始,全节点只保留相对较新的数据(通常是最近的 128 个块)的本地副本,允许删除较旧的数据以节省磁盘空间。旧数据可以在需要时重新生成。整体概括为: