在SeeDAO投研公会的第七十九次周会中,我们迎来了不少新人小伙伴的加入,同时还有幸邀请到了著名的萨摩老师作为嘉宾。萨摩老师涉猎广泛,是一个跨领域的学习者和科普爱好者,也是BuidlerDAO、LXDAO等多个DAO的杰出贡献者,非常熟悉区块链的技术知识。作为嘉宾,萨摩老师在这次周会上给我们分享了“My First Layer 2”为主题的科普讲解,本文就让我们一起来回顾萨摩老师的精彩观点吧。
—
公链发展的瓶颈
一是通过增加区块的大小,使得单个区块可以容纳更多的交易,比如BCH将区块大小从 1MB 提升至 32MB,BSV则是更激进地取消了区块大小上限,允许无限多的信息融入一个区块。这样做会导致区块链的体积快速膨胀,参与验证的机器性能要求越来越高,提高了参与门槛,导致区块链网络的去中心化程度和安全性降低。
二是通过降低出块时间,提高单位时间内的出块数量,来提高TPS。这样对节点的网络条件提出了更高的要求,提高了参与的门槛,并且因为物理距离较远的节点群容易对于最新区块产生分歧,导致了区块链的分叉。分叉后的区块链必须等待区块确认竞争出最长的一条支链,抛弃其他的支链,这就导致了一段时间内的大量交易记录被重写,如Polygon在2023年发生过157个区块的重组事件。
Layer 2 概念的兴起与发展
▎几乎在高性能公链兴起的同一时间,由OP提出的optimism,就是运用了Layer 2的概念。
▎Layer 2指二层网络,是在一层网络的基础上搭建的,用各种技术手段帮助底层公链扩容的解决方案。传统互联网也采用了增加层级的方式来实现业务的解耦,降低层级负担。同样的可以利用技术在区块链一层网络(Layer 1)的基础上增加Layer 2,来分摊Layer 1的负担,达到扩容提升性能的目的。
▎Layer 2的原型:状态通道。状态通道使用了多签技术,允许两个个体之间提前存入一笔资金锁定在智能合约中,建立一个内部通道,然后双方可以在通道内进行多笔小额转账,速度极快,成本极低,再在一段时间后用转账证明一次性提款。这就是比特币的闪电网络和以太坊的雷电网络背后的底层技术。
用户必须提前锁定资金; 只能实现简单的转账交易,无法实现更复杂的交易需求; 无法给不参与雷电网络的用户转账。
▎侧链方案
为了解决状态通道无法执行复杂交易的问题,侧链方案进入人们视野。侧链可以理解为一条相对独立的区块链,它们往往采用与主链(一般是以太坊)类似的架构,方便主链上的项目迁移至侧链。我们可以在主链的智能合约内锁定一定量的资产,然后在侧链上铸造等量资产,实现“原子交换”。用这种方式将资产存入侧链,在侧链上进行各种交易,然后在必要时转移回主链。
▎侧链为了分担主链的交易压力,往往会采用与主链不一样的共识机制,大幅提高出块的速度,或是用少量的超级节点进行通信。这使得侧链的安全性相比以太坊主链大大地降低。侧链的安全性由自身的节点负责,如果侧链的安全出现问题,比如用户的资金存入侧链后出现问题无法转移回主链等,那么整个以太坊生态都会受到影响。所以,侧链是否属于Layer 2存在一定的争议。
随着状态通道和侧链方案在实践中暴露出不足,Plasma方案被提出并得到重视,它解决了前面两者暴露出的两个问题:
无法给未参与的个体发送资金:未加入Plasma链的账户也可以收到资金,然后自行提取到 Layer 1。 无法继承 Layer 1 安全性:Plasma定期向主链提交信息,以继承 Layer 1安全性。
Plasma运营商需要定期向Layer 1上传默克尔树的根证明,即“状态根”(State Root),这样所有人都能检查Layer 2的账本是否被篡改。
▎Plasma的局限性:用户从Plasma链上提取资产时,要经历漫长的挑战期(一般为7天),是为了确定交易的合法性,如果挑战期内有人质疑节点运营商作恶,可以自行检查交易记录,并提交欺诈证明,挑战期内未被挑战的提款在挑战期结束后才会生效。但Plasma节点运营商是一个中心化的节点,第三方不容易获得交易数据进行监督,如果节点运营商作恶失去可信性,可能会发生用户大规模退出Plasma的情况,短时间内产生巨量的提款请求,提交大量的欺诈证明,导致以太坊主网长时间堵塞。
Rollup技术的发展
▎Rollup方案Layer 2的技术特点:Rollup 意为“打包”,也就是将一段时间内发生的交易先进行压缩,再进行打包,然后周期性地上传至主网。目前主流的Rollup方案分为两大路线,分别为Optimistic Rollup(乐观的 Rollup)与Zero-knowledge Rollup(零知识证明的 Rollup)。
▎Optimistic Rollup:OP-Rollup是将一段时间内的所有交易细节全部压缩打包,定期发送至 Layer 1。这种机制乐观地相信大部分交易者都是诚实的,继承了 Plasma 挑战期和欺诈证明机制。
▎Zero-knowledge Rollup:ZK-Rollup一般是将一段时间内的交易计算完成后,将状态变化的结果压缩打包,并附上交易已经在Layer2被正确执行的零知识证明,定期发送至 Layer 1。用零知识证明代替监督者,依赖数学而非验证者(Rely on Math,not Validators)。
大幅分担了Layer 1层的计算负担,有效实现扩容; 压缩交易数据,节省了Layer1的存储资源; 向Layer 1上传必要的关键信息,且一层对二层的状态有最终裁决权,从而最大程度地继承了Layer 1的安全性。
4232f4610000000000000000000000007ea2be2df7ba6e54b1a9c70676f668455e329d29000000000000000000000000d548a5e31de2b4c2681a58a3be5302abcae4bc5700000000000000000000000000000000000000000000000000000000000186a0(Method ID / 填充的 0 / 代币合约地址 / 填充的 0 / 收款的账户地址 / 填充的 0 / 提币数量)
Layer 2通过科学计数法,删除原数据中不必要的0(数量精度略微下降,实践中几乎无影响); 删除所调用的Method ID(调用方法很常见,可以通过交易内容的特征推测); 为常用的行为设置一个绿色通道,例如“发送”动作以及发送的代币类型为“USDC”这两个信息设置一个更短的HelperID来直接调用; 登记一个“电话本”,记录常用收款人的地址,将长地址压缩为第X页中的第X个地址; 如果发送的是ETH,省略HelperID; 经过上面一些列操作,最终上传到Layer1的数据就压缩成了059c570186a0(收款账户“电话簿”编号 / 提币数量)。
▎Optimistic Rollup
状态根(State Root): 状态根可以快速确认 Layer 2 小账本的内容是否被篡改。
压缩后的全部交易数据:包含各种交易细节,比如交易附带的“用户签名”。
▎与 Plasma类似,OP-Rollup也使用默克尔树的形式保存了一个“小账本”,记录了全体账户的所有状态(账户余额)。如果我们相信目前的交易验证者(Validator)都是诚实的,那么状态根能快速确认当前Layer 2 的小账本记录的内容是否被篡改,确保安全性。
这种设计之下,即使只有一个诚实的挑战者,也足以确保整个Layer2的交易安全。不过代价是 OP-Rollup 必须提供一个退出窗口期,让挑战者有时间去检验并提交欺诈证明,因此使用官方桥从 OP-Rollup 网络提款往往需要7 - 14天的等待期。
OP-Rollup的逻辑简单易懂,而且上传了全部交易细节,因此对 EVM (以太坊虚拟机)的兼容性也非常好,很有利于落地实施。但还是难以避免漫长的挑战期。
▎ZK Rollup(Zero-Knowledge Rollup):零知识证明Rollup。
依赖于数学算法的一种非交互式证明,让在Layer2诚实执行交易的验证者能生成一个证明,而不诚实的验证者无法得到正确的证明,并且Layer1验证这个证明的代价极低,Layer1确认了证明之后,就能认可一整个批次的交易为真。如果证明无法通过,则拒绝整个批次的打包。
比方说,一个NFT在一段时间内在ABCD多次反复转手,但最终的结果是A的手里减少了一个NFT,D的手里增加了一个NFT,这叫做状态变化的结果。Layer 2只需要把这个状态结果上传到Layer 1,以及一个ZK证明去证明中间这些过程已经正确地被执行即可,如果通过Layer 1的验算通过,则这一批次的交易得到确认,否则这一批次的交易全部被打回,而不需要一个挑战者去监督交易的安全性。交易如果是不合法的,甚至无法被压缩打包。
▎ZK-Rollup 会周期性向主网上传3种数据:
状态根:状态根可以快速确认Layer 2小账本的内容是否被篡改。 交易数据:经过压缩和聚合的交易数据,例如将多个交易合并为一批次的状态变化结果。通过使用零知识证明保证交易的安全性,可以舍弃一些不必要的信息,例如前面提到的“用户签名”。 有效性证明:即零知识证明,让Layer 1的智能合约在经过简单验证后,就能确认交易已经被正确执行。
▎ZK-Rollup与OP-Rollup的区别:
OP-Rollup则完全将Layer 1当成了解决数据可用性的公告板,依赖挑战者的监督,两者的安全性和交易确认速度都会产生明显差异。
▎ZK-Rollup的优点:
更高的压缩率,让Layer 2的扩容上限更高。
▎ZK-Rollup的两个技术路线STARK vs SNARK
简洁(Succinct):验证速度快于计算证明。 非交互式(Non-Interactive):无需证明者与验证者之间进行交互。如比特币的公私钥对也是一种零知识证明,但它要求私钥拥有者对一段文字进行签名才能证明自己拥有私钥,这需要发生一次交互。 统计学上的可靠(Argument):相对于数学上绝对的证明(即 100% 可靠),实现了统计学上的可靠(如 99.99999999%)。 包含信息(Knowledge):可将某些信息编码进零知识证明中,如一笔交易已被正确执行。
可扩展的(Scalable):在进行大规模交易的证明时,验证时间仍然较短。 透明的(Transparent):随机数公开可验证,无需像 SNARK 一样设置初始可信环境。 统计学上的可靠(Argument):相对于数学上绝对的证明(即 100% 可靠),实现了统计学上的可靠(如 99.99999999%)。 包含信息(Knowledge):可将某些信息编码进零知识证明中,如一笔交易已被正确执行。
SNARK的优势:证明体积更小,交易成本比STARK更低,随着技术发展,安全性不显著弱于STRAK,拥有更大的潜力。
▎ZK发展路线ZK-VM vs ZK-EVM
ZK-VM:从零知识证明的角度出发,专门开发适用于零知识证明的算法,从而构建一个ZK-VM(零知识虚拟机),而不是原生兼容EVM的 ZK-EVM(零知识以太坊虚拟机),在此基础上尽可能实现EVM兼容。这种路线的优点是能够充分发挥零知识证明的潜力,实现最大化的扩展性。
ZK-EVM:从EVM兼容性的角度出发,将EVM的交易在操作码层面切割成更小的步骤,对每个步骤去找对应的零知识证明算法,力求实现完全的EVM兼容。这样做可以使开发者几乎无感地切换到二层网络,方便现有项目迁移,最大程度地保留目前的 EVM 生态成果。
复盘Layer 2的发展历程以及Layer2的未来展望
▎侧链,数据对主链来说不可用,无法继承主链安全性。
▎Plasma,状态根可以保障链下账本的不被篡改,但具体交易数据对一层网络来说也不可用,导致资金退出困难。
▎OP-Rollup,上传所有交易的详细数据以及状态根到Layer 1上,确保了全部交易数据的可用性,从而确保Layer2的安全。
▎ZK-Rollup,上传关键交易数据以及能证明链下交易已经被正确执行的零知识证明,实现安全性的同时,还能一定程度保证隐私性。
▎未来:数据可用性问题能否由Layer2解决。
▎Validium,仅向主网上传状态根和零知识证明,交易数据交由Layer 2保存。
▎以太坊的Deneb更新,是以太坊扩容路线 DankSharding 的前置步骤,旨在保证以太坊信标链安全性的前提下,为Layer 2扩容提供更大的储存资源。
Deneb 更新添加了一种新的交易:Blob交易(大型二进制对象 Binary Large Object)。在主链上只留存指针,指针指向一个Blob块,上面可以储存约 128KB 的二进制数据。
以太坊矿工只负责在一段时间内(如一个月)保存Blob上的数据,通过随机抽样的方式确保 Blob 上二进制数据的真实性,但不验证存在Blob上的交易。
Blob 交易看起来对常规交易的扩容没有帮助,但这对于Layer 2打包的交易数据来说简直是完美契合Layer2原先定期上传给Layer 1上的打包交易数据本来就不会执行,只是起到保障数据可用性的作用。
而Blob本身就相当于一个公示板,消息在公示板上的存续时间超过了 OP-Rollup的挑战期,实践上完全够用,存储成本却降低了许多,这将促使 Layer 2的交易成本进一步降低。
Blob 增加的唯一缺憾是超过保存期之后,Layer 2如果想保存自己的全部历史交易数据,需要用另外的方案自行解决这些数据的可用性问题。
总体来说,Deneb更新之后,Layer 2将可以在保证安全性的同时进一步降低交易成本,变得更具实用价值。
▎ZK系与OP系未来将会走向相互融合发展的方向。
▎账户抽象与大规模应用。Web3想要得到大规模应用,需要完善区块链的账户体系,用私钥对掌握的账户体系(EOA账户),对普通大众非常不友好,账户抽象是未来的重要趋势。Layer 2可以帮助建立账户抽象,通过智能合约账户进行交易,手续费和交易速度都比EOA账户更加优化,Layer 2为区块链最终的普及提出了更大的可能性。
—