本文为AI研习社编译的技术博客,原标题 A Primer on Ethereum Blockchain Light Clients,作者为 zk Capital 。
翻译 | 高敏 校对 | 余杭 整理 | MY
许多使用点对点协议且基于区块链的项目在性能和吞吐量上夸大其辞。在研发阶段,这些项目已经出现了一些创新,但是一旦这些协议运行时,它们大多对经常遇到的挑战难以作出解释。
网络拓扑结构
假设大多数人在延迟和计算量之间的某个置信区间上网是很容易的,但是他们忽略了必须借助于区块链上的节点进行交互。对大多数用户而言,不幸的是,运行一个全节点不仅速度慢,而且价格昂贵让人望而却步,因此大多数用户选择轻节点,因为它们不仅背负着全节点所拥有的安全性使命,对资源没有额外的需求。
以太坊轻客户端模式允许像树莓派一样的轻量型设备加入网络,当区块头显示时可以将它们下载,并且如用户所要求的那样按需验证某几种状态。在以太坊中,这些档案性的全节点拥有的客户端很容易使得网络饱和。与所谓的 Merkle Tree 相比,树莓派可以更快地锁定这些节点。
你可以在树莓派上安装一个轻型客户端!
密码经济作为运行全节点的动机已远远不够,这是因为资源成本效益在平衡分布式网络过程中遇到了瓶颈。对于轻型节点,网络将拥有怎样的完全平衡是难以预测的。关于怎样平衡这些动机以及如何使得用户更容易证明运行全节点是正确的这些话题,早已被讨论过多次。
对轻客户端的介绍:以太坊中的关键角色
轻型客户端背后的核心思想是它能够获取用户所关切的状态部分。它假设有一个诚信模型,在这个模型中,矿工们都正确遵循以太坊的规则,并且系统中至少有一个完全节点是完全诚实的。
将同步模式标志设置为轻型模式
他们的基本功能是当块标题显示在网络中时可以将它们下载,而且对于正在被客户端使用的状态部分的 Merkle 证明而言,按需变化的问题需求也可以被下载。以太坊上的轻客户端采用分布哈希表而不是本地存储来记录字典树的节点。
考虑到 Ethereum 状态通过大些的 Merkle 树来显示,从 Merkle 的树根出发,沿着树中一个分支的一条节点路径,可以很轻易地将验证信息的完整性作为轻量级的证明。这最终依赖于对所提供的 Merkle 树根正确性的信任。
轻客户端信息包括但不局限于查询账户余额、验证确认事务、检查部署在网络上的某份合同的事件日志等其他信息。
通过 Merkle 树的证明和验证,所有的这些可以被归结为次线性复杂度。当无法获取来自区块链的数据时,或无法检查出何时验证状态交易指数时,客户端可以在点对点网络中向其他参与者发出警告。
当处于轻客户端模式下时,以太坊客户端会将基本上不同的配置和协议经理具体化。当以太坊启动一个轻客户端时究竟发生了什么,对此感兴趣的用户可以参考我下面的问题。
潜在的共识机制
目前的轻客户端协议假定通过全节点在主链上开展工作共识证明。在工作量证明过程中,我们可以借助于一个数学函数来验证区块头部的有效性。也就是说,这个算法很难计算区块头部并输出,但是却很容易对其进行验证。
当轻客户端启动时,他们会寻找区块头部最长的链,而且对于攻击者而言,通过制造有错误的头部来伪装成这条链的费用几乎是无法想象的。
以电力为基础的物理工作到通过工作证明而致力于链的安全性的转变是一个潜在的过程,尽管对制造出的区块头部的验证尤为有效。
在工作量证明环境中,轻客户端十分常用的,因为区块头部可以立刻得到验证,但是我们却无法保证在证明环境中也可以做到这样。
权益证明中的轻客户端:工作证明是不可或缺的吗?
在工作量证明中,轻客户端被简化的问题相当于区块头部并未与一定量的真正的工作实现绑定,而参与者需要投入这些工作中并制造他们。这种共识机制所带来的强度实质上是对拜占庭参与者的威慑性惩罚而不是对耗电计算 NP 难题的奖赏。在权益证明中,如果参与者想尝试发展错误链,那么他们将会受到惩罚,然而,在工作量证明机制中,在错误链上挖矿的参与者将会建立分支,而且不会得到在一条规范链上挖矿的奖励。
权益证明提供协议内的机制来最终确定区块头部。一旦这些头部被信任,获得它们所包含的数据复杂度为对数级别,即从 Merkle 树上获取一个节点。尽管如此,区块头部并不包含我们可以用来验证工作证明方法的标量值,这使得验证最起码为对数级别的而不是具有时效性的常量级的直接实现。然而,我们最起码可以在轻客户端的同步率上做得更好。
正如 Vitalik 在工作岗位上的对该问题的建议所言,凭借 checkpoint 系统可以建造一个更为轻量的客户端友好型权益机制。一个 checkpoint 可以被定义为一组固定数字的区块。
在这些区块内,三分之二的参与者必须同意通过密码签名,而且 checkpoint 必须包含其以前 checkpoint 的哈希值。在这种新的轻客户端同步机制中,只能下载 checkpoint,而且客户可以验证参与者的签名。如此,在目前的工作证明轻客户端模式下,下载每个单一区块头部所需的开支就降了下来。
然而这种方法并不能解决验证区块头部这一问题,因此权益证明还是很有可能将一小部分作用在块标题上的为了创造轻客户端的工作证明包含在内。
工作证明和股权证明的混合有助于轻客户端吗?
为了在权益证明系统中验证轻客户端,在区块头部的形成过程中无疑会有一个使用计算能力的角色存在,只要能够按要求验证这些区块头部充分小即可。
如果你想对有关内容有更多了解,检查以太坊社区正在分片上进行的工作,包括我的团队:Prysmatic 实验室!在分片模型中,轻客户端是极为有用的,因为分片的目的之一是降低节点对计算的要求。大多数分片的最新进展都公布在以太坊搜索,你可以从这里开始。
如果你喜欢这篇文章或者你有任何疑问,请在推特上联系我们。
原文链接:
https://hackernoon.com/a-primer-on-ethereum-blockchain-light-clients-20d715255ff0
想和这篇文章的译者互动吗?点击原文链接,即可在文章评论区找到译者信息,欢迎提问交流,点赞分享哟~
想知道关于区块链更多知识?
欢迎点击“阅读原文”
或者移步 AI 研习社社区~