主页 > 苹果可以下载imtoken钱包吗 > 简介 | 以太坊区块链的轻客户端入门

简介 | 以太坊区块链的轻客户端入门

大量基于区块链和点对点协议的项目如雨后春笋般涌现,对网络性能和吞吐量提出了很高的要求。 其中很多项目还处于研发阶段,很多人并没有意识到底层协议上线后将面临的适用性挑战。

网络拓扑结构

我们常常简单地假设大多数网络运营商的响应延迟和计算能力都在一定的置信区间内; 但是我们经常忘记用户在必须与区块链节点交互时遇到的障碍。 不幸的是,在大多数情况下,运行一个完整的节点非常昂贵且速度很慢,因此大多数用户选择“轻型”节点——依靠完整节点来保证安全而无需投入大量资源的节点。

以太坊轻节点客户端允许轻量级设备(如树莓派)加入网络,下载区块头,并根据用户需求验证特定状态。 这样的轻节点在以太坊网络中非常常见,让树莓派连接全节点触手可及。

sitechainfor.com 以太坊区块链浏览器_以太坊和区块链_以太坊区块链数据下载

- Raspberry Pi 设备 - 您可以在其上部署轻客户端! -

对于运行全节点,密码经济学提供的激励与资源成本消耗无法平衡,给分布式网络带来性能瓶颈; 我们很难在自然状态下准确评估全节点和轻节点之间的平衡。 下面是关于激励平衡的一些讨论,方便用户评估运行全节点的合理性。

以太坊和区块链_sitechainfor.com 以太坊区块链浏览器_以太坊区块链数据下载

运行全节点的经济激励(编者注:中文翻译见文末超链接)

引入轻客户端:以太坊中的关键角色

轻客户端的核心思想是:可以获取用户关心的一些状态。 这里假设矿工正确遵守以太坊区块链的规则,全网至少有一个诚实的全节点。

sitechainfor.com 以太坊区块链浏览器_以太坊和区块链_以太坊区块链数据下载

- SyncMode 设置为“Light”的 Geth 客户端 -

轻客户端的基本功能是网络上每出现一个区块就下载区块头,并发送客户端要求的特定状态的默克尔证明(Merkle proofs)请求。 以太坊轻客户端使用分布式哈希表来跟踪 trie 节点,而不是使用本地存储。

sitechainfor.com 以太坊区块链浏览器_以太坊和区块链_以太坊区块链数据下载

因为以太坊的状态是由一棵巨大的默克尔树来反映的,我们可以很容易地从默克尔树的根节点开始沿着树的分支验证特定信息的完整性,从而完成轻量级的验证。 这仅依赖于此过程提供的 Merkle 根节点是证券这一事实。

轻客户端消息包括但不限于:查看账户余额、验证已确认交易数量、查看部署在网络上的某个合约日志等。

以太坊和区块链_以太坊区块链数据下载_sitechainfor.com 以太坊区块链浏览器

通过默克尔验证,可以将上述确认的复杂度降低到次线性(sublinear)级别。 当区块链数据不可用,或验证交易指标状态时无法查询时,客户端可以向对等网络中的其他参与者发出警告。

Geth 客户端有一个完全不同的配置和协议管理器,专为轻型模式设计。 更多关于将Geth转为轻客户端的详细信息,请参考以下问题:

探索当前的客户端协议架构 · Issue #122

sitechainfor.com 以太坊区块链浏览器_以太坊和区块链_以太坊区块链数据下载

底层共识机制

目前的轻客户端采用所有节点都运行在主链上的工作量证明共识。 在PoW共识中,有这样一个功能可以让我们验证区块头的有效性。 也就是说,通过这个算法的计算,很难输出相同的区块头,但相对容易验证。

一旦轻客户端连接到网络,它会立即寻找最长链的区块头; 对于攻击者来说,生成一个假的区块头来欺骗区块链网络是得不偿失的。 虽然区块头的验证效率很高,但是通过PoW,底层的物理工作转移仍然需要——贡献电力来换取区块链的安全。

以太坊区块链数据下载_sitechainfor.com 以太坊区块链浏览器_以太坊和区块链

-图片来源:软件工程日报-

轻客户端在PoW共识下非常有用,因为可以不断验证区块头; 但在权益证明(Proof of Stake)共识下无法保证。

以太坊和区块链_sitechainfor.com 以太坊区块链浏览器_以太坊区块链数据下载

PoS共识下的轻客户端:是否需要PoW共识?

简化 PoS 共识下的轻客户端问题,区块头不关联特定数量的“真实”工作量因素,因此无法简化。 也就是说,PoS共识的约束力来自于拜占庭问题节点的惩罚,而不是功耗计算NP问题的奖励。 在 PoS 共识下,尝试生成错误区块的节点将受到惩罚,而在 PoW 共识下,生成错误区块的节点将导致区块链分叉,从而无法在有效共识链上获得奖励。

PoS 提供了一种用于确定最新区块头的协议内机制。 一旦确定了这些块头,访问它们包含的数据就变成了对数复杂度的问题(例如,访问 Merkle 树节点); 此外,这里的块头不包含我们在 PoW 协议验证标量下使用的数据。 这些因素使得验证行为至少呈对数复杂,并且从部署开始就具有固定的时效性。

然而,至少我们可以更好地同步轻客户端。 Vitalik 在他的推文中表达了对此事的看法——通过检查点(checkpoint)系统,可以构建一个对轻客户端更加友好的 PoS 共识系统。

我们指定一定数量的区块作为检查点以太坊和区块链,需要2/3以上参与者的数字签名同意,每个检查点需要包含前一个检查点的哈希值。 当新模式的轻客户端同步时,只下载检查点区块头,客户端可以验证那些检查点参与者的签名。 这避免了在当前 PoW 模式下轻客户端每次同步时都要下载所有区块头的缺点。

但是,这并没有解决验证区块头的问题; 因此,为了达到创建轻客户端的目的以太坊和区块链,不排除在PoS协议下对区块头进行小规模的PoW验证。

sitechainfor.com 以太坊区块链浏览器_以太坊和区块链_以太坊区块链数据下载

混合 PoW/PoS 系统可以为轻客户端供电吗?

只要验证区块头所需的算力很小,这种混合协议绝对可以成为轻客户端验证的重要手段——即在PoS系统中,在生成区块头时就使用算力进行验证。

如果您对此感兴趣,可以阅读以太坊社区对分片功能所做的研究工作。 这包括我们的团队 Prysmatic Labs! 在分片模型中,轻客户端在解放节点计算能力需求的任务中扮演着极其重要的角色。 大多数分片模型开发者将在这里开始他们的以太坊探索之旅:

无状态客户端的概念

参考

%28LES%29

原文链接: