Allen

Allen

crypto seeker||starknet

以太坊的窘境--扩容

随着以太坊生态的日渐繁荣,长久以来亏绕生态的一大问题就是:交易速度和费用。这也是以太坊挥之不去的问题,因此扩容也是最被广泛讨论的问题。这里简单介绍下历史。

扩容之路#

Pos:区块提议者和区块验证者分离,pos 工作流程是:

  1. 在分片提交交易
  2. 验证者将交易添加到分片区块中
  3. 信标链选择验证器以提出新的块
  4. 其余的验证者组成随机的委员会验证分片上的提议

提出区块和证明提议都需要在一个 slot 内完成,一般是 12s。每 32 个 slot 组成一个周期 epoch,每个 epoch 将打乱验证者排序重新选举委员会。

合并后,以太坊将为共识层实现提议者 - 构建者分离。Vitalik 认为,所有区块链的终局是拥有中心化的区块生产和去中心化的区块验证。由于分片后的以太坊区块数据非常密集,出于对数据可用性的高要求,区块生产的中心化是必要的。同时,必须有一种方法来维护一个去中心化的验证者集,它可以验证区块并执行数据可用性抽样。

什么是分片?是水平分割数据库以分散负载的过程#

分片是一种分区方式,可以在 P2P 网络中分散计算任务和存储工作负载,经过这种处理方式,每个节点不用负责处理整个网络的交易负载,只需要维护与其分区(或分片)相关的信息就可以了。每个分片都有自己的验证器网络或者节点网络。分片的安全性问题:

例如整个网络有 10 条分片链,破坏整个网络需要 51% 的算力,那么破坏单个分片之需要 5.1% 的算力。

信标链,负责生成随机数,将节点分配给分片,捕捉单个分片的快照,处理握手权益和其他各种功能,负责完成分片间的通信,协调网络的同步。

分片的一个很大问题是跨分片。因为在分片中,每个节点群只处理该分片内的交易,交易在分片间会相对独立,那么 AB 两用户处于不同分片上,相互转账如何处理呢?

区块存在被舍弃的情况,因此如果 A,B 被接受处理,在 #2 中选择接受 W,X 交易,那么整个交易就无法进行下去。尽管发生分叉的概率非常小。

过去的方式是数据可用性层分片,每个分片都有独立的 proposers 和 committee。在验证者集合中,每个验证者轮流验证分片的数据,他们将数据全部下载下来进行验证。

缺点是:

  1. 需要严密的同步技术来保证验证者之间能够在一个 slot 内同步。
  2. 验证者需要收集所有的 committee 的投票,这里也会出现延迟。
  3. 而且验证者完全下载数据对其压力也很大。

第二种方法是放弃完全的数据验证,而是采用数据可用性抽样的方法。这里又分为两种随机抽样方式:

  1. 区块随机抽样,对部分分片抽样,如果验证通过后,验证者进行签名。但是这里的问题是,可能会出现遗漏交易的情况。
  2. 通过纠删码将数据重新解释为多项式,再利用特定条件下多项式能够恢复数据的特点,来确保数据的完整可用性。

多项式的性质:能够从四个点去恢复数据

那么只要保持 50% 以上的被编码的数据是可用的,整个数据就是可用的。

当我们进行多次抽样时,数据不可用的概率只有 2^-n

逻辑就是我们将数据进行纠删码变为多项式,再进行拓展,拓展能够恢复数据。

这里的问题就被转移到了:在多项式拓展的过程中,是否被正确的拓展。

因为本身数据有问题,那么拓展后,重新恢复数据也是错误的。那么如何确保数据被正确的拓展呢?

  1. celestia 使用欺诈证明,这里有一个同步问题
  2. ethereum 和 polygon avail 使用 kzg 承诺,这里不需要诚实少数和同步问题。但 kzg 承诺不具备抗量子计算攻击的能力,未来以太坊可能转向 zkstarks 的技术,其抗量子算法攻击。

在这个赛道里面,最火热的当属采用零知识证明的 zksync 和 starkware 了。后续讲详细介绍他们。

什么叫抗量子攻击:就是该算法不依赖大量的数学安全假设。#

Kzg 承诺:证明多项式在特定位置的值与指定的数值一致。

KZG 承诺无非就是多项式承诺中的一种,能够在不给定具体消息的情况下验证消息。具体流程如下图:

与 merkel 树进行对比:#

整个流程就是:将数据通过纠删码化为多项式,将其拓展。使用 KZG 承诺确保我们的拓展是有效的,且原数据是有效的。然后利用拓展可以 reconstruct 数据,最后进行数据可用性抽样。

Celestia 要求验证者下载整个区块,现在的 danksharding 则利用数据可用性抽样技术。

由于区块存在部分可用的情况,因此任何时候我们都需要重构区块的时候保证同步。在区块确实部分可用时,节点之间通信,将区块拼凑出来。

KZG 承诺和数据欺诈证明的比较:#

可以看到 KZG 承诺能确保拓展和数据是正确的,而欺诈证明引入第三方进行观察。最明显的区别是,欺诈证明需要一个时间间隔来给观察者进行反应,从而报告欺诈,这时候需要满足节点直接的同步,以整个网络能够及时收到欺诈证明。KZG 则明显的比欺诈证明更快,其使用数学方法来确保数据的正确,而不需要一个等待时间。

Celestia 自身的缺陷在于使用大区块,要求验证者下载全部数据,这个也是以太坊 danksahrding 的 proto 方案。那么为了解决会出现的问题,celestia 未来也会选择数据可用性抽样的方法,那么就需要用到 kzg 承诺。

无论是 kzg 还是欺诈证明都需要同步。因为存在概率发生区块不可用的情况。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。