一文深度解析ETH以太坊Layer2未来蓝图
March 10th, 2022

从NFT到GameFi,再到Loot,在市场热潮的几番更迭下,市场对于Layer 2的需求已经逐渐加大,随着Arbitrum主网的上线,越来越多的资金开始投身于Layer2 扩容协议市场,市场又掀起了新一轮的赛道竞争。

        虽然现阶段的Layer 2网络总锁仓量屡创新高,但仍然无法满足目前市场上投资者的需求,而且,现在市场Layer 2热度都是基于Zksync ,Arbitrum、Opitimism等项目的炒热而升温,根本无法长期持续。基于此,Layer 2热潮是否会成为“昙花一现”也成为了大众比较关注的事情。那么Layer 2技术目前发展如何?Layer 2网络的未来究竟是怎样的?而这一个个的疑问,路印协议CTO Steve Guo在一次演讲中给了我们答案。

        笔者用简单的方式讲述了Layer 2技术的演进,深入分析了每个Layer 2项目的优缺点,并且向我们叙述了Layer 2网络未来的发展方向。以下内容来自Steve的演讲实录。

           随着Layer 2热度的高涨,一个疑问逐渐浮现在大众面前:Layer 2的真正未来到底是什么?

下图则代表了现在市场上对Layer 2的官方定义。Layer 2是资产安全依赖于Layer 1的第2层网络。所以可以排除掉一些侧链,比如xDai和BSC。

         目前的Layer 2技术可以分为三类技术,最早是State Channel(状态通道)技术,后来又演变为Plasma,再到最新的、比较热门的Rollup技术。Rollup主要分为两个方案,Optimistic Rollup和zkRollup。这两种方案中的每一种内都存在着许多项目。

State Channel(状态通道)

         第一个Layer 2技术State Channel的核心思想其实来源于比特币的闪电网络。例如,假设Alice和Bob必须转移资金,并且他们都在链上,那么其成本会非常高。因此,可以先同意Alice和Bob先将他们各自的资金存入智能合约。在他们各自资金被存储后,Alice和Bob可以不消耗任何Gas费,无限期地在链下转移资金,然后在所有人退出时使用智能合约进行结算,这种过程的核心思想就被称为状态通道。

        虽然这种链下转账的方式确实可以很快,而且便宜,但它也存在一些问题。首先,它需要两端存入资金,其资金占比非常高。此外,它是点对点的。例如,如果A想先与B转钱,然后再与C转帐,则需要建立多个状态通道,这种互动是不可取的。所以,在后来随着Raiden Network、Celer等技术不断演进,现在的状态通道已经可以是点对中心了。任何想要交易的人都需要与中心进行交易,使用状态通道进行连接。

        但这仍然存在同样的问题,因为中心本身需要存入大量的资金以保证资金周转利用率,因此该方案只能用于转账/支付的应用。由于状态通道的这些局限性,也使得它自然而然地演变成了一种叫做Plasma的技术,用以解决State Channels的资金利用问题。

Plasma

         Plasma在链下提供了UTXO(Unspent Transaction Output)等结构模型。每个人的转账记录都类似于比特币UTXO交易。在Plasma链上确认交易后,Plasma将向以太坊上的智能合约提交所有Merkle状态,由智能合约记录所有链下状态。最后,Plasma依靠测试机制来确保所有链下交易都正确执行,例如,避免转账被双花攻击。

          Plasma比State Channel技术更精进的一点就在于它解决了资金利用的问题,但同时它也带来了一个新问题。Plasma需要至少一周的退出期来确保交易的最终确认。同时,Plasma要求所有人监控Plasma链上的所有UTXO交易。也就是说用户必须自己监控这些交易,才能根据这些历史交易对交易问题提出质疑,这也是普通用户所不能接受的。

        因此,Plasma也需要自然进化,进而演化为下一个相对热门的Optimistic Rollup技术。Optimistic Rollup从实际上解决了Plasma所带来的问题。也就是说,Plasma链上的数据最终只是Merkle树(由不同数据块的散列组成的数学数据结构),所以测试起来会更加困难。

Optimistic Rollup

        为了解决Plasma所存在的问题,Optimistic Rollup将所有链下原始交易数据,包括世界状态的树,提交到链上,然后任何人都可以根据链上记录的所有原始信息进行测试。

        如图所示,Optimistic Rollup允许用户提交世界状态并提交链上原始交易数据,然后任何人都可以根据这些数据测试转账是否有效。这个想法被称为Optimistic Rollup。

Optimistic

事实上,这个想法已经在目前市场的两个主网项目中实现了。

        第一个项目叫做Optimism。这个项目的开发团队实际上是来自Plasma,所以Optimism也就理所应当的扩展了Plasma的应用场景。此前的State Channel和Plasma都只是用于转账/支付的应用。那么Optimism如何扩大转账/支付?

         现在市场对于扩大转账/支付的方法是,使用图灵的完整编程来兼容链下的EVM指令,这样每个人都可以直接在链下执行solididity程序。而Optimism的想法则是在链上部署一个智能合约,然后使用智能合约接受链下EVM兼容指令的执行,也称为OVM。

         Optimism试图做一件事,即保证OVM的字节码可以映射到EVM的字节码,但实际上,这种映射可能只有20个左右的字节码. 所以Optimism目前的一个大问题是它无法实现100%的EVM兼容性。正是因为Optimistic有这个问题,Arbitrum才提出了改进方案。

Arbitrum

           Arbitrum在Optimistic基础上的一个巧妙改进是,它不是在链上执行EVM比特码,而是定义了自己的AVM字节码,AVM的字节码是一个非常精简的子集。这样,当用户测试第一级时,Gas会更低,消耗也会更低。

           目前,**Arbitrum**的转会费大约是Optimism转会费的二分之一。Arbitrum还改进了测试机制,允许用户通过分片进行测试。例如,一个区块中有1000个交易,但只有一个是错误的。然后就可以用类似二分法的思路,让用户证明第一个512是否正确,如果正确就测试下一个,比如256,然后继续用二分法来测试,这就是Arbitrum。但Arbitrum并不能就此代表Layer 2的未来。

zkRollup

      V神曾在年初表示,Optimistic Rollup解决方案短期内最有可能兼容EVM,但中长期他更看好 zkRollup。

          事实上,zkRollup和Optimistic Rollup的本质区别在于它不依赖任何测试机制,而是即时保证链上清算的最终确定性。zkRollup依赖于一组称为zk(零知识)证明的数学系统。

         zk证明本质上做了一件事,通俗来讲就是在不告诉对方答案的情况下向对方证明你知道答案。

例如,问题y有一个函数f,我可以根据我的私人秘密x计算y并通过这个函数得到y。最后,我向你开放的是函数f和问题y。但是我的x不能告诉你,我想让大家知道我知道一个x来计算y,这叫做zk证明。

        这样的表述可能相对比较抽象。接下来举一个实际的例子,比如在下面这张图片中寻找Waldo。比方说,我想向大家证明的是,我知道Waldo在这张地图上的位置,但我不能直接告诉你位置,所以我可以这样做:找一块足够大的黑布盖住图片,然后在黑布上剪下小数字,然后把小数字显示出来。 然后你就会明白我知道Waldo在这张地图上的位置,但我没有向你透露这个位置。这就是zk证明的工作原理。

           我证明了一件事,但我没有告诉你这个秘密。这一组技术听起来有点像黑魔法,其核心技术思想被统称为zkrollup。实际上,zkRollup的核心思想是将所有的世界状态归类为一棵大Merkle树,然后所有的链下交易本质上只是改变了一个账户的世界状态。

         最后使用中继系统收集所有的链下交易,然后将这些交易处理后的世界状态树的哈希记录在链上,并记录这些交易元数据的交易信息。与此同时,还提交了一份名为“零知识证明”的证书。只要这个证明在链上得到了验证,就意味着链下的计算已经忠实地处理了所有的交易信息。这是zkRollup和Optimistic Rollup之间最大的区别。

Optimistic Rollup只向链提交元数据和树哈希,而zkRollup还提交zk证明证书,这样它就可以保证最终结算,而不依赖任何测试机制。

Loopring

        Loopring协议于2019年底推出,是世界上第一个主网上的zkRollup。到目前为止,Loopring协议已经历经了3个版本:第一个版本只支持订单簿中的DEX交易,第二个版本支持转账支付,第三个版本中支持AMM Swaps。而在今年9月初,Loopring协议已经正式发布了现在支持 Layer-2 NFT最新版本。此版本支持NFT在Layer-2上进行铸造、转账和交易,可以降低整体Gas成本。

zkSync

          zkSync与Loopring协议最大的区别在于使用的零知识证明算法不同。Loopring使用一组称为 Groth16的算法,zkSync使用一组称为Plonk的算法。两种算法的本质区别在于是否有最早的初始可信设置。Loopring是必要的,其改变任何电路的行为都需要一个可信的设置,而zkSync则不需要这样做。

         Matter Labs实际上经历了两个版本,1.0 和2.0。2.0称为zkPorter,1.0称为zkSync。它们之间的主要区别在于,为了进一步减少2.0上的Gas消耗,Merkle树和元数据交易数据不在链上,而是使用类似于Community POA的链下Proof来保存数据。

           但是大家请记住,一旦元数据不在链上,用户资产的安全就无法真正得到Layer 1的保障。不过这样的系统本质上允许用户做出自己的选择。如果您想安全,请使用1.0,如果您想更便宜(但不太安全),请使用2.0版本zkPorter。同时,Matter Labs目前正在开发一个与EVM兼容的 zkRollup系统。它定义了一种名为Zinc的编程语言。简而言之,Layer 2项目是最终目标是最终成为一个zkEvm。

StarkEx

另一个著名的zkRollup项目是StarkWare推出的StarkEx。

在早期,大众对其并不看好,因为它第一次上线时声称它是一个zkRollup,但实际上它并没有将应用程序的元数据上链,所以这样的系统不能称为zkRollup。所以当时V神将其命名为Validium。后来,StarkEx又被扩展到支持向链提交元数据的模式。所以现在也可以将StarkEx称之为真正的 zkRollup。

StarkEx在早期定义了自己的编程语言,从一开始就想做一个具有可编程性的zkRollup系统。StarkEx定义的语言称为Cairo,其核心思想是允许用户用Cairo语言编写智能合约。然后它会帮你转换成例如EVM字节码,然后在StarkEx的整个zkRollup系统上进行验证和计算。

zkEVM

           从上述的Layer 2协议来看,并没有完美的Layer 2解决方案,都存在局限性,或者它们没有数据可用性。Steve则认为,最终完全可用的Layer 2网络应该是zkEVM。

zkEVM是什么?顾名思义,只要开发者用EVM写一个智能合约,就可以在zkRollup类型环境中直接执行这个智能合约的字节代码。它不像现在那样在EVM的虚拟机中执行,而是在一个叫做zkEVM的虚拟机中执行。zkEVM可以保证在字节码执行后,zkEVM可以向Layer 1网络证明 zkEVM链下执行的智能合约确实被执行了。

对于zkEVM,目前的设计思路其实分为两类。

          类似于Matter Labs的Zinc和StarkWare的Cairo语言,包括另一个名为Hermez的项目,最近也提出了zkEVM。他们的核心思想是自己定义一套语言,然后把这个语言翻译成EVM的语言。也就是说,他们会自己定义一种EVM语言,然后将EVM字节码翻译成自己的EVM代码,本质上在zkEVM中执行自己的字节码。但是,这种解决方案很可能无法实现100%的兼容性。

 另一个新的解决方案是以太坊基金会正在进行的一个项目,被称为“zkEVM”。

         它的思路是直接将Solidity代码编译成EVM的字节码,无需任何翻译,在zkEVM的虚拟环境中直接执行字节码。它的虚拟环境做了两件最重要的事情。一是证明字节码的执行是正确的,称为EVM证明;二是证明世界状态的修改是正确的。

Steve认为“zkEVM”解决方案可能是最终的Layer 2网络。

        开发者只需要编写一套EVM代码就可以在Layer 1上运行,然后也可以在Layer 2上无缝运行。而这个方案是一个zkRollup,可以保证最终结算的即时性。当然,这个解决方案并没有那么容易上线。Steve表示,估计再过一年左右应该就能看到一个原型,甚至第一个商业版本。

参考

​​​​

Subscribe to Renaissance Labs
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from Renaissance Labs

Skeleton

Skeleton

Skeleton