文章是视频中前 26 分钟的简短的结构化文字版介绍。
以太坊拥堵问题,已经是一个普遍共识。以太坊的拥堵主要体现在两个方面:交易费用高和交易 TPS 低。在以太坊上,这两点是不能分割来看的。
自 2016 年以来,不断有号称『下一代』区块链出现,都以高 TPS 为卖点,但他们都会遭遇著名的『三难问题』,即可扩展性、安全和去中心化三者不可兼得。
这是因为,TPS 越高,运行网络的成本(财务和计算)就越高。现在大多数增加 TPS 的区块链都是通过一下几点进行:
要实现以上几点,那必然要通过使用更高性能的机器作为区块链节点(来加速计算,存储更大量的数据)或者使用更少的节点(加速共识)或者进一步缩短出块时间来达成。这些都是不可持续的,机器的性能不能无限大,更高的性能要求也会导致更少的节点,更少的节点会导致更中心化,从而导致更不安全的区块链。
例如,Solana 已经拥有任何前 20 种加密货币中最昂贵和最专业的硬件要求,并且随着 Solana 交易和价格的上涨,运行节点、成为验证者和处理交易的硬件成本也在增加。
硬件要求
以下是加密货币和网络安全专家 Jameson Lopp 在 2020 年比特币节点和 2021 年节点同步测试中所经历的经验数据。该表比较了在普通消费级 PC 上同步比特币、以太坊和 Solana 的完整节点所需的时间。
即便如此,Solana 所能够达到的 TPS 也不够全球采用。它所遇到的状态增长和集中化问题,也并不是个例。
毫无疑问,目前的 Layer 1 替代方案并不能很好地解决以太坊遇到的问题,向外寻找解决方案并不能一劳永逸。以太坊也积极探索自身的扩容,分片(链上扩容) + Layer 2(链下扩容)是其最终拥抱的解决方案。
使用 L2 解决方案的主要优点是主链保持不变,不受其上构建的内容的影响。任何“在堆栈上”(例如在另一层)发生的问题都不会损害基础层——相反,可以将 L2 视为与以太坊上的智能合约交互的链下软件存在。
使用 Rollups 扩容可以在不牺牲安全性的情况下实现指数级的可扩展性增益。Rollups 的主要创新在于它们将计算移到链下,同时仅在链上存储最少的交易数据。Rollups 链处理所有昂贵且计算密集的数据处理,使以太坊执行交易的能力呈指数增长。
Rollups 本质上是一条独立的链,该技术的实现是在自己的 Rollup 链上执行以太坊交易,将它们“rolled up”成一批,以太坊接收并存储结果。然而,为了做到这一点,以太坊主网需要某种方式来验证链下发生的交易是否有效。这里有两个主流的验证方式:
这两种证明分别由两种不同的 Rollup 技术所采纳,也正因为证明方式的差别,导致这两种证明各自具有一些优缺点:
想要进一步理解 Rollup 技术在干嘛,这里需要介绍一下单片(Monolithic)区块链和模块(Modular)区块链的概念。Monolithic 是指一个区块链,其中每个节点都执行区块链的所有部分:执行、共识和数据可用性。
如比特币所使用的区块链就是单片区块链,还有 Solana、Polygon Pos 和 BSC 等,而 Cosmos、Polkadot 和 Near 等,则属于模块区块链。
所谓模块区块链,就是把单片区块链节点所要完成的三件事情拆分开来,分开执行,最终再组合起来,将节点的功能『模块化』。Rollup 技术就是『模块化』技术之一,它将节点的执行功能模块化,抽离出来到 Rollup 链上执行,然后提交给主链进行达成共识,并保持主链节点的数据可用性。同样的,也存在一些技术将节点的数据可用性进行抽离,这个之后我们会提到。
零知识证明(Zero-Knowledge)是指一方(证明者)向另一方(验证者)证明一个陈述是正确的,而无需透露除该陈述是正确的外的任何信息。其数学基础是同态隐藏,即:
- 同态加法:通过𝐸 ( 𝑥 ) 和𝐸 ( 𝑦 ) 计算出𝐸 ( 𝑥 + 𝑦 ) 的值
- 同态乘法:通过𝐸 ( 𝑥 ) 和𝐸 ( 𝑦 ) 计算出𝐸 ( 𝑥𝑦 ) 的值
- 扩展到多项式
举个例子来说,一个简单的版本是『Alice想要向Bob证明她知道一组数𝑥和𝑦使得𝑥 + 𝑦 = 7, 同时不让Bob知道𝑥和𝑦的具体数值』。那么 Alice 该怎么做呢?通过零知识证明,Alice 可以:
这个例子比较简单,而且是可以通过暴力进行破解的,真正的零知识证明是无法通过暴力破解的,比如下面的盲签的方法:
ZK Rollups (ZKRU) 是具有很少特定节点(称为证明者)的独立区块链网络。通过加密证明链接到以太坊的主网。此链接可防止汇总审查或窃取资金,同时保持以太坊 L1 的不可变属性。这种证明称为有效性证明,确保链下交易的有效性,使其立即可验证,并且无需提款/质询期。详细描述该过程:
这里有三个主要参与方:链下证明者、零知识证明和链上验证者。
优点
缺点
在以太坊汇总空间中,有两个领导者:zkSync 正在使用 zkSNARKs,StarkWare 正在使用 zkSTARKs。除了这两个之外,还有Loopring、Aztec、Polygon Hermez (SNARKs)、Polygon Miden (STARKs) 等等。
zkSNARK(Zero-Knowledge Succinct Non-interactive ARgument of Knowledge)和 zkSTARK(Zero-Knowledge Scalable Transparent ARguments of Knowledge)最大的区别就在于,前者使用的是椭圆曲线来确保证明所需的随机性,而后者使用的是抗碰撞的哈西函数来确保这一点,初始化随机性对于零知识证明技术来说至关重要,这也一定程度上导致了两种技术的优缺点。
首先是 zkSNARK 的优缺点,其计算更复杂,但其计算产生的证明大小更小,而且最近 zkSync 发布了 2.0 的测试网,能够兼容 EVM。
优点
缺点
zkSTARK 在一定程度上解决了 zkSNARK 的缺点,但是同样地,它也有一些其他的缺点,不兼容 EVM 是比较致命的,它使用 Cairo 作为变成语言,开发者需要学习新的语言以布置应用。
优点
缺点
基于 Rollup 技术,有一种方案可以达到更高的 TPS,那就是 zkSync 发布的 zkPorter 技术和 StarkWare 发布的 Validium 和 Volition 技术。它们所做的是将单片区块链节点三大功能之一的『数据可用性』也进行了抽离,将数据可用性存储在链下,从而进一步提高区块链的 TPS。
Validium 的机制几乎与 ZK Rollup 相同,唯一的区别是 ZK Rollup 中的数据可用性是在链上的,而 Validium 保持在链外。这意味着 ZK Rollups 在第一层区块链本身上发布数据,而 Validiums 在链上发布有效性证明,但数据保留在单独的网络上。
这种链下存储方案提供隐私优势,因为用户的交易和余额信息存储在 validium 运营商处,而不是公开在区块链上。但是,由于交易数据未在链上发布,用户被迫信任运营商在需要时提供数据。这一关键区别使 Validiums 更类似于一个高性能的托管 PoA 系统,Validium 运营商可以在该系统中冻结但不能窃取用户的资金。
在链下存储数据的权衡是它需要对第三方的信任,第三方可能会阻止用户访问他们的余额。 Starkware 旨在通过数据可用性委员会 (DAC) 来解决这个问题,该委员会由 8 名独立成员组成,他们拥有自己的交易副本。他们还需要通过随时提供这些数据来维护这些数据。如果运营商阻止用户访问他们的资金,委员会成员可以覆盖他们以确认他们的请求是否有效。使用 Validium 的示例:Loopring (LRC) 和 StarkEx。
多个项目使用 Starkware 的 StarkEx 平台启动了 Validiums,包括:
Volitions 是 ZK-rollup 和 Validium 混合解决方案,使用户能够选择链上或链下的数据可用性,即通过以太坊或通过验证。
zkPorter 是 zkSync 2.0 中数据可用性的内部共识机制,支持大 TPS 数。zkSync 2.0 作为标准 ZKRU 可以处理 ~1,000 到 5,000 TPS,但使用 zkPorter,它可以处理 ~20,000 到 100,000 TPS(取决于每个事务的复杂性)。但是需要注意的是,在使用 zkPorter 时,用户依赖的是 zkSync 的内部共识机制。这要求用户信任 Matter Labs,并依赖利用 L1 共识机制的不太安全或分散的汇总解决方案。zkPorter 和 Starkware 的 Volition 之间的主要区别在于,用户必须在每个 zkPorter 账户中选择是否产生具有链下数据可用性的交易,而在 Volition 中,用户可以选择账户内的每笔交易。
它们的关系汇总如下表所示。
最后,有几张图能够比较直观的比较一下 ZK Rollup 和其他扩容技术在四个维度(三难问题+可编程性)的差别。这边主要是以 zkSync 为例子。
zkSync 2.0 的设计最大限度地利用了所有 4 项功能,并结合了以下 2 项技术突破:
由于 zkEVM 和 zkPorter 是可互操作和可组合的,zkSync 2.0 能够显着优于所有其他扩展解决方案。
目前的共识是Eth2 数据分片 将在 2022 年底在不牺牲去中心化的情况下提供指数级更大的数据可用性层。 zkSync 的 zkRollup 技术与 Eth2 数据分片相结合是最终目标,在不牺牲任何 4 个因素的情况下达到 100,000 TPS。
(完)
最近在体验zk的产品,这边就放一个zk捐赠链接,点击下面链接请我喝茶,谢谢老板们!