探讨 Layer2 性能与做恶问题
2022-11-16 17:45
Lao Bai
2022-11-16 17:45
订阅此专栏
收藏此文章
聊下目前圈内一些悬而未决、富有争议、正在探索的技术或是机制,主要针对 ETH。


撰文:Lao Bai


开个贴,聊下目前圈内一些悬而未决 / 富有争议 / 正在探索的技术或是机制,主要针对 ETH。


会分开几个章节发:


  • Layer2 的性能与做恶问题
  • Layer2 的去中心化,共识与代币效用问题
  • Layer2 的 OP 与 ZK 之争问题
  • ETH L1 的抗审查问题
  • EigenLayer 与 AltLayer 两个「创意型」项目


今天先来说 Layer2(特指 Rollup)的性能与做恶问题。


Layer2 牛逼在哪


Rollup 最牛逼的一点就是,在几乎(不是 100%)继承了 L1 的安全型前提下,可以把性能做到极致,为啥呢?


因为区块链慢就慢在多个节点要处理 + 传播所有交易,还要最后达成一致。


ETH 如果只有一个节点,TPS 应该至少大几千,但是去中心化这么多节点,TPS 就变成 10 几了。


所以现在各种 Alt Layer1 扩容的大方向也无非这么几个。


  1. 提升节点性能 - 单位时间内处理更多交易[ ]()
  2. 减少节点数量 - 减少节点通讯次数,缩短共识达成时间
  3. 优化传播机制 - 提升带宽利用率,减少共识协议占用的带宽比例
  4. 节点不用处理所有事物 - 类似工厂流水线,分工合作提升效率(分片,分层,模块化……Flow 是个另类)


从最早的 EOS,到最近的 Aptos,所有 Alt Layer1 都是在上面四个大方向上取 1-2 个深耕,外加一些小的技术创新,方式方法与取舍不同而已,扩容这个事儿有机会再单独开个贴详聊。


回到 Layer2,Layer2 为什么可以吧性能做到极致呢?


因为理论上它一个节点就能跑,它可以无限提升 1,然后完全不需要关心 2,3,4,我就一个官方中心化 Sequncer 怎么滴吧?反正我有 OP 或者 ZK 可以保证你们资金的安全。


所以也不需要什么共识,不需要什么传播,不需要什么分工合作,跟 Web2 世界客户端 - 服务器模型没啥区别。


Layer2 的性能(TPS)极限在哪


大概率会是以下两个值较低的那一方:


单个 Sequencer 的性能处理极限 ETH L1 那边做为 Settlement 的区块 Gas 限制(目前貌似是 3000 万左右)。


Layer2 Sequencer 要不要去中心化


回答这个问题,首先要问,不去中心化的优势和劣势在哪:


  • 优势 - 不用说,可以跑到 TPS 极限,多个 Sequencer 去中心化一定会牵扯到共识,传播等问题,性能铁定损失
  • 劣势 - 意识形态上不那么「区块链」,以及可能出现的 Sequencer 作恶问题


Sequencer 能做恶么?不是说有 OP 或是 ZK 来保驾护航么?


没错,Rollup 的精髓就在于通过 OP 或是 ZK 让 Layer2 继承 Layer1 的安全性,但这个安全性,理论上只是无限接近,不可能完全等价,所以 Sequencer 其实还是有一点点做恶的空间,特别是单个 Sequncer,空间在哪?


不是你想象的篡改交易,或是凭空生成一笔交易之类的,因为 Sequncer 要定期提交打包的原始数据去 Layer1 的,其他的全节点会从 Layer1 下载这些数据来监督 Sequncer。因为签名的存在,Sequncer 是不能提交杜撰或者修改「非法交易」的,或者说提交了也没有任何意义。


Sequencer 能做的只有两件事


  • 隐藏合法交易 - 相当于审查
  • 排序交易 - 我手里可以弄出两套「合法账本」,你们全节点还不一定知道。


隐藏合法交易比如这么一个场景 - A 和 B OTC,A 给 B 转了 ETH,B 两秒钟后一看收到了,就给 A 银行卡转了钱,没想到 A 贿赂了 Sequencer,Sequncer 直接没把 A 给 B 转 ETH 这笔交易提交到 L1,于是乎 B 就傻眼了,因为几分钟后(Arbitrum 是每三分种提交一次数据去 Layer1,OP 要更久一些),自己钱包里的 ETH 又凭空消失了。


双账本问题可以想像这么一个场景 - 某个超级热门 NFT 项目 Mint,也有人勾结 Sequencer,想垄断 mint 名额,但 Sequencer 又不能明目张胆的拒绝其他用户的 Mint,于是表面上正常响应应用户请求,实际手里又弄了一套「分叉」账本,上面的结果是 NFT 都被贿赂者优先 mint 完的,最终在 Layer1 上只提交了那套「分叉」账本,于是很多用户之前明明显示 Mint 成功了,过几分钟结算层那边结束,却变成无效了。


归根结底,Layer2 上两三秒给你的结果,只是 Layer2 上的 Finality,而不是 Layer1 结算层的,真正的 Finality,应该等 Layer1 那边 Rollup 数据提交完毕,才能算真的 Finality (当然 Layer1 自己其实还有个 15 分钟的完全终结期,现在 V 神正在推动把这 15 分钟减小为 12 秒的单槽终结,就不在本文讨论之列了)。这几分钟的时间窗口,就是 Sequencer 理论上可以做恶的「空窗期」。

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

相关Wiki
Lao Bai
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开