扩展区块链的挑战得到了很好的证明。当今运行中最成功的区块链形成了一个线性链,其中每个区块或更新都引用前面的区块。网络上的每个节点都存储了账本历史记录中的完整副本。线性链模型在保持整个世界的共识方面非常有效。不幸的是,它在总体网络吞吐量方面相当有限,因为每个节点都需要接收和验证全局发生的每个交易。
背景
已经提出了许多方法来帮助区块链扩展。目前最流行的方法是第2层解决方案,如闪电网络或等离子体。有两种可能性可以替代线性区块链:DAG和分片。
关于DAG的注意事项
有向无环图(DAG)是由IOTA、Byteball和Nano等项目提出的。他们认为,对于每个人来说,拥有全局状态并不重要,相反,节点应该只需要与它们相关的本地状态,以及与其他节点的足够连接来验证它们的本地状态是否与其他节点的视图冲突。
在没有全局状态的情况下,如果攻击者能够独占受害者节点的传入连接,那么Eclipse攻击之类的攻击是可能的。直到2019年5月,IOTA通过一个每个人都可以连接的集中式协调器解决了这个问题。可以说,这推翻了DAG的全部观点。他们最近宣布从协调器切换到称为Coordicide的投票模块。共识参与者将被期望对冲突的交易进行积极的投票,在我看来,这听起来很像传统的区块链共识。
分片
分片系统类似于DAG,但它们承认全局状态视图的重要性,并对账本施加正式结构,以确保整个系统保持一致。分片将区块链的验证工作划分为几个组,每个组负责工作的一个子集。
目前有许多用于分片的设计,但很少用于生产。主要的设计考虑是是否有一个信标链。信标链的行为很像传统的区块链,但它不是验证交易和账本状态本身,而是依赖于每个分片在自己的状态上达成一致。然后,将此状态压缩为一个merkle根,该根由分片验证器的仲裁签名。然后,信标链将分片根编织成一个整体的链根。
没有信标链的分片是可能的,但是必须付出更多的努力来公平分配资源,防止大规模重组和分片接管攻击。
复杂性
在分片系统中,指定的目标是将工作分配给工作人员,从而提高吞吐量。首要的关键问题之一是理解工作是如何划分的。必须采取保护措施,以确保不诚实的验证器不能覆盖特定的分片。
上面的可视化提示,如果只关注单个分片,那么即使只有1%的验证器也可能造成严重破坏。以太坊计划使用一个改组过程,以不可预知的方式将验证器分配给分片,以防止坏参与者接管分片。
跨分片通信
这些分片的边界上发生了什么?它们是如何相互作用的?一个显而易见的答案是, 如果一个应用程序不在我的分片上,我可以在不同的分片上创建一个新的帐户,或者我甚至可以使用一个跨分片服务,它将我的钱包地址放在一个分片上,并允许我与任何其分片片上的应用程序交互。
想象一下,您希望从与您不在同一分片中的网络参与者那里收到一笔付款。您如何从您没有参与的分片中收到钱?
以太坊研究人员提出的可视化样本方法
这里,我们使用收据的概念来说明。通过提供源分片中交易的merkle路径,收件人可以证明他们将从一个外国分片中来接收代币。目标分片使用收据并记入收件人的帐户。这必须以原子的方式完成。发送方和接收方的帐户要么一起修改,要么不一起修改。如果有一个缺口或一端失败了,发送者可以欺骗接收者,让他们相信他们已经收到了他们永远不会得到的资金。
在途交易
真正的跨分片的原子交易是一个困难的问题,因为它需要分片之间同步通信的验证器。如果对跨分片交易的需求足够高,那么性能可能会下降,因为必须有更多的分片工作人员协作来处理跨分片交易。
分片系统必须开发信任网络不会从外部分片逆转这些交易的机制。如何保护自己免受可能发生的大规模重组的影响?
到目前为止,我们得到的最佳答案是确保一个分片中的验证器数量超过某个最小阈值,这样不诚实的验证器压倒单个分片的几率就会很低。定期(但不是过于频繁)的验证器旋转限制了池中验证器集潜在贿赂的能力。如果验证器旋转太频繁,那么运行一个节点的成本将会增加,而分散化将会受到损害,因为节点将需要更多的存储和带宽来跟上分片的变化。
终结性
一个显著简化这些问题的特性是终结性。一旦一个区块被系统中的多数派认定为最终区块,我们可以肯定,我们脚下的外国分片不会发生变化。终结性会将整个账本密封起来,这样就不能对其进行修改,而且以前的跨分片交易也可以被认为是安全的,就像只有一条链一样。
权益关系证明能够保证终结性,而工作量证明永远不能。这就是以太坊开发人员将PoS和分片组合到他们的Eth2.0路线图计划中的原因。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)