一文深绘以太坊Layer2未来蓝图
鸵鸟区块链从NFT到GameFi,再到Loot,在市场热潮的几番更迭下,市场对于Layer 2的需求已经逐渐加大,随着Arbitrum主网的上线,越来越多的资金开始投身于Layer2 扩容协议市场,市场又掀起了新一轮的赛道竞争。
虽然现阶段的Layer 2网络总锁仓量屡创新高,但仍然无法满足目前市场上投资者的需求,而且,现在市场Layer 2热度都是基于Arbitrum、Opitimism等项目的炒热而升温,根本无法长期持续。基于此,Layer 2热潮是否会成为“昙花一现”也成为了大众比较关注的事情。那么Layer 2技术目前发展如何?Layer 2网络的未来究竟是怎样的?而这一个个的疑问,路印协议CTO Steve Guo在一次演讲中给了我们答案。
Steve用简单的方式讲述了Layer 2技术的演进,深入分析了每个Layer 2项目的优缺点,并且向我们叙述了Layer 2网络未来的发展方向。以下内容来自Steve的演讲实录。
作者:Frankle
来源:Medium
编译:陈一晚风
随着Layer 2热度的高涨,一个疑问逐渐浮现在大众面前:Layer 2的真正未来到底是什么?
下图则代表了现在市场上对Layer 2的官方定义。但Steve的定义中,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表示,估计再过一年左右应该就能看到一个原型,甚至第一个商业版本。