作者:沙漏时间
背景介绍
以太坊扩容在社区中的讨论如火如荼,多个解决方案正在加紧开发,并有望在今年全部上线主网。在整个以太坊 Layer2 方案爆发的前夕,imToken 联合 ETHPlanet、EthFans、ECN、上海前沿技术研讨会和 HiBlock 等多家优秀的以太坊生态社区与公司,共同策划一场以太坊扩容主题系列活动。
4 月 23 日举办了第一场活动:Rollup - 以太坊 L2 扩容新范式杭州线下 Meetup。
以下是本次 Meetup「如何建设更好的 Layer2」的圆桌讨论文字版本,由上海前沿技术研讨会 - 沙漏时间整理。Celer 开发者 - Michael
imToken 产品经理 - 阿树
安比实验室负责人 - 郭宇
Loopring CTO - Steve
姚翔:非常荣幸邀请大家来到这里,一般来说都是要大家自我介绍一下,但是我今天给每位准备了一个问题,在回答问题之前,你可以做一下自我介绍,我们先从 Celer 开始。我先提一下我的问题,祝贺 Layer2.finance 的主网今天早上上线了,能不能介绍一下你们的主网的情况,包括在之前的测试竞赛当中,竞赛的情况是怎么样的,有没有出现什么样的技术或者是产品上的一些问题,或者说你们的发现。Michael:大家好,我先介绍一下自己,我是 Michael,是 Celer 比较早期加入的开发者,我在 Celer 主要就是一直在做以太坊和支持 EVM 的所有链的这些扩容,我们最早做的是 State Channel,就是状态通道的技术。我们在 18 年在以太坊主网上已经上线了通用状态通道,不仅是转账,还可以支持链下的合约在链上进行仲裁这样的一个功能。之后我们就发现状态通道好像使用场景比较有限,而且对用户进出通道的体验并不是那么好,所以说我们也在看别的方向,正好那个时候就出了 Rollup 的技术方向,然后我们觉得这个可能是未来会比较有希望的一个方向。在 19 年的时候,我们首先提出了一个混合式 Rollup,把侧链和 Rollup 的安全性结合起来,用户可以选择是 Rollup 的安全性还是只用侧链的安全性,就有点像 zkPorter 和 zkSync 的概念。在 2020 年整个 DeFi 非常火的时候,我们在想怎么去解决 Layer2 的流动性的问题。在大家都在想 Layer2 之后会不会成为一个孤岛的时候,我们就想是不是有一种反过来的思路,把 DeFi 协议暂时还是留在 Layer1,我们在 Layer2 只是去聚合用户的操作,但是所有的流动性还是在 Layer1,所有的资金都还是在 Layer1 的原来的协议里面,至少短期或者说甚至中期都有可能是这样的。而且换一个角度, Layer2 必然会有一些安全性上的牺牲,即使没有安全性上牺牲,也会有一些资金利用率和资金可用性的问题。所以可能对于最大体量的资金,他们还是会比较倾向于把资金留在 Layer1 的协议,所以说我们会去反向兼容他们,这就是 Layer2.finance 的起源。其实当时也有像 StarkWare 提出了类似的概念,我们差不多是殊途同归,我们算是第一个把产品做上线的一个项目。我们在两周前上了测试网,还搞了一些活动,让大家来体验,其实数据还是不错的。差不多 10 多天有大概 1900 多个用户累计进行了 40 万笔左右的 Layer2 转账,具体的能省多少 gas 我没算过,但是大家稍微算一下,可以知道我们为用户省下了非常多的 gas。我们部署了大概二十多个模拟的 DeFi 协议,然后大家不断地将资产进入协议,再退出协议,一共发生了 40 多万笔 Layer2 上的转账。刚才姚翔问有什么问题,我们发现以太坊的 Ropsten 测试网实在是不好用,它作为唯一的 PoW 的测试网,但是出块非常不稳定,而且经常给你来一个八十几个区块的回滚 。所以说我们遇到了回滚的问题,但我们在遇到回滚后协议也是正确处理的,即把 Layer2 的 Rollup 的链暂时停下来了。我们 CTO 花了一天的时间将 Layer1 上所有 calldata 重放,再把 calldata 在 Layer2 上重新生成一遍,这样能保证它的安全性,我们算是第一个做到了这样的项目。这也是我们觉得把 Layer2 数据可用性在 Layer1 上得到保留是非常重要的一个原因。因为 Layer2 可能会出现各种各样的问题,如果 Layer1 有一个确定性的历史的话,你随时可以把它重放,再在 Layer2 上还原这个状态。我们确实也做了,这个也是非常有意思的一件事情。今天早上我们在以太坊主网上正式上线了,我们 Layer2.finance 的第一个版本我们叫它 v0.1,因为其实很多设计都还没有完全定下来,现在只是说让大家没有手续费地去体验一下。我们第一次兼容的是这三个 DeFi:Compound、AAVE 和 Curve,都是非常保守的策略,全是稳定币,所以收益不会太高,就可能在稳定币的一般的年化 10% 左右,大家有兴趣的可以体验一下。前 500 名会有一些奖励,而且我们会覆盖你的充进 Layer2 的手续费。我们的充值不是太贵,是一笔和 Uniswap 兑换差不多的手续费。一旦你进入这个 Layer2,你就可以在各个协议之间零手续费地进出。产品目前只支持 MetaMask 桌面,之后会出手机的适配,也会尽快上架各大钱包,这样大家都在手机上也可以体验 Layer2.Finance。除了等待时间会受限于 Optimistic Rollup 的等待时间以外,其他的体验还是不错的。现阶段是零手续费,之后的话手续费应该还是会非常低的。等下一版本的大的更新之后,我们会把它结合 Celer 代币的这一些经济模型,包括可能会有一些流动性挖矿的活动,到时候也会欢迎大家体验。姚翔:谢谢 Michael,也欢迎大家去体验 Celer 的产品,我也听到一个很有趣的点,其实 Ropsten 测试网的不稳定性反而帮助 Celer 去做了一个边界条件下的测试。接下来我想请问一下阿树:最近也是看到 imToken 集成了 zkSync,我想去了解一下在集成过程当中你们有没有遇到什么挑战。如果说别的钱包想去集成 zkSync,你会给出哪些建议。阿树:谢谢姚老师,我介绍一下我自己:我目前主要负责 imToken 钱包的产品,我叫阿树。像刚才姚老师提到的,我们在 17、18 年的时候就已经开始关注到以太坊的一个扩容工作发展,但为什么到我们才去开始去做集成和相关实施工作。是因为在过去的几年中以太坊扩容方案,它是一个不断演化的过程,从最早像 Celer 们做状态通道,或者像 OmiseGo、Plasma 到现在的 Rollup 方案,它有一个比较大的进展,然后 Rollup 方案应该是目前我们整个社区会认为它最具备可行性和落实的一个方案。另外,去年大家其实能感受到 DeFi 的一个发展。刚才像 Changwu 老师也说到了,整个的发展让以太坊网络拥堵,导致正常用户进行转账和 DeFi 操作的费用非常高昂,但这个事情其实是跟 imToken 的愿景是有冲突的。我们希望钱包可以服务到更多的用户,迎合以太坊普惠金融的愿景。现阶段这些网络只能服务到拥有几万美金以上的这些高净值的用户,所以我们开始关注到以太坊扩容的方案。关于方案的技术上其实选项有很多,我们现在主流看到有零知识证明的、乐观的。在这里我们的选择标准可能有几个,第一个,它是具备有社区共识的,也就是 Rollup 这一块,第二个它是经过时间,还有社区的一个实践的验证的。我们可以看到像 zkSync 方案,首先它已经在主网运行过了蛮长的一段时间。第二,它跟 Gitcoin 合作,也是经过一个实践验证的。最近比如说 Gitcoin,它的捐助 85% 的交易都是通过 zkSync 去完成的。第三,zkSync 团队除了工程能力之外,产品能力也很强,他们对于开发者去集成的话,已经提供了一套非常完善的一个 SDK。集成 zkSync 之后,在很短时间内我们发现这个方案受到对于有转账需求用户的一个青睐。imToken 集成 zkSync 半个月之后,数据显示整个 zkSync 网络上接近 51% 以上的转账都是来自于 imToken,所以短期是解决了我们的一个问题。第二个我们是更期待于说刚才 zkSync Alex 他们提到的,他们 5 月份会提供像 NFT 功能、swap 的功能,这个会不断地扩展 imToken 在 Layer2 的一个使用场景。当然我们更期待会有更多方案,我们可以以一种更具有开放性的方式去做适配。目前这个 zkSync 是在原生层面去做集成的。其次其实现在主流的 Layer2,我们都会以一个 DApp 的形式,无论是 Loopring、Celer 还是 Hermez 等等,这些 Layer2 方案都能这样通过 imToken 的浏览器访问。另外一个问题是姚老师问到的有什么技术难点。其实这里面的话对于钱包来说,它并不是一个工程上的问题,它更多是一个外围依赖遇到的挑战。举个例子,现在 Layer2 主流的做法是目前的节点都是单节点的形式,所以我们看到只要 Layer2 方案的服务挂了,那么就会导致整个网络不可转账。这对一个面向千万用户的实际使用的钱包来说是比较不能接受的一个点。当然我们看到社区(的节点运营)会往 PoS 方向去发展。第二个事情其实说 Layer2 网络它最重要一点就是要有资金的流转,目前我们遇到的问题是什么。用户的充值成本是非常高昂的。缺乏两块支持,一个是交易所支持,另外一块是 OTC 厂商的支持。目前在交易所这块我们没有看到比较新的进展,但是在 OTC 厂商这一块的话,海外几家服务商应该会在今年 5 月份或者年底都会提供相应的 Layer2 充值服务,这是我们目前作为钱包遇到的一些外围依赖的挑战。最后老师提到一个问题就是说对于同行钱包想做 Layer2,有哪些建议。对钱包最关键是一个私钥的问题。现在所有的 Layer2 方案都有比较明显的痛点,Layer2 的签名密钥一般是通过 personal sign 去做签名生成的,personal sign,在大家使用 DApp 的时候经常会遇到,它会给一个文本让你去做签名,但文本签名其实是非常容易去被伪造的,所以这是作为钱包服务商去集成 Layer2 要非常注意的一点。关于这一点,我们台北的 imToken Labs 团队会向社区去提供 Signer 的一个存储方案,减少钓鱼攻击的可能性。第二个事情钱包没法确定如此多的 Layer2 方案谁会在未来胜出,对钱包来说应该尽可能做到减少主观性。我们在 Layer2 方案里面尽可能找到他们的一个范式,尽可能支持这些早期的 Layer2 方案,让市场去做选择,谢谢姚老师。姚翔:谢谢阿树,听起来 Layer2 的集成不仅仅需要钱包的努力,还需要很多生态位的合作。接下来请问郭老师,郭老师在零知识证明领域的研究一直非常深入,非常前沿。最近我们也反复听到一个词叫递归零知识证明,也看到以太坊基金会跟 Mina 基金会发布了一个 grant ,关于能否让 EVM 去高效地验证一个叫 pickles 的这样一个零知识证明技术。我想问问郭老师的是,如果说递归零知识证明能够在 EVM 里面去高效地验证,对我们去设计 ZK Rollup 这个协议有没有什么启发?郭宇:我们团队在苏州,大概六七个人,从 18 年初创立起在智能合约安全底层,还有零知识证明底层,一直在做很偏底层的研究。我们很少直接面对终端用户,但是我们跟很多项目团队在合作,帮他们解决一些底层基础设施方面遇到的一些问题。我们的工作目前来说比较偏科研,陆续还会发布一些最新的研究成果,其中有一部分能够有希望极大地改善 ZK Rollup 的证明和证明大小,可能达到一到两个数量级的提升。接下来回答就是姚老师刚才这几个问题。递归零知识证明,我就给大家简单说一下历史,比较早研究递归零知识证明的是 Chiesa 与 Tromer,他们大概在 2010 年左右提出来一个概念叫 proof carrying data,能够把整个 proof 的验证也做到 proof 里面,这样的话一个 proof 可以跟随一个数据到处传播,这是非常前沿的一个概念。当然这里面它需要用到一个很 tricky 的技术,就是它要找到两条非常稀有的曲线,能够让这两条曲线相互嵌入,之前找到的两条曲线计算非常慢,难以实用。一个小突破大概发生在 2018 年,Zcash 团队的 Sean Bowe 和现在以太坊基金会的科学家 Mary Miller,他们合作了一篇文章叫 Sonic。他们在这篇文章中发现了一件非常神奇的事情,就是在传统的 Bulletproof 的后端里面有一部分运算可以被分摊,也就是说如果你有很多 proof 放在一起的话,可以用更有效的方式聚合在一起进行 verify。这个发现后来被 Sean Bowe 用来实现一种非常新颖的递归零知识证明算法 Halo,这个递归零知识证明不再需要找两条非常稀有而且性能差的曲线。这种递归证明技术可以用在很多的地方,只要能找到两条不需要支持 pairing 的普通曲线就可以做。这件事情直接打开了递归零知识证明的一个大门,研究成果非常激动人心,它可以让整个区块链上的应用充满各种新的想象力,Mina protocol 也努力在往这个方向拓展。以太坊由于传统的设计上的一些缺陷,所以说它只能通过支持预编译合约的方式来有限地支持零知识证明。但我们现在已经很欣喜地看见以太坊 2.0 其实已经在努力地做工作,特别是 EVM384 的改进也许在今年就能支持。那上面会支持更多的曲线,能够非常灵活地支持递归零知识证明。只不过在目前的以太坊 1.0 基础上做相对就会麻烦一些。现在 Mina 基金会和以太坊基金会共同联合,征集在 EVM 高效验证 pickles 算法的方案,但是经过我们仔细分析,发现这件事情没有那么容易,还是挺困难的,因为这里的核心问题是椭圆曲线里面有一些非常耗时的操作,目前在以太坊上如果没有预编译合约的支持的话,基本上还是举步维艰,可能会有一些效果,但优化程度非常有限。我们还是期待能够让以太坊早日支持 EVM384,然后能够释放递归零知识证明的威力。我最后谈一下,这对于 ZK Rollup 意味着什么?ZK Rollup 里面现在会面临一个问题,不管是 zkPorter 还是 zkSync,如果用同一个状态根来实现在二层上的可组合性,你需要把状态空间做得非常大,这样你才能支持很多的 DeFi 应用,支持更多的用户。包括 Loopring 团队做的非常棒的这种转换的方案,可以直接让一层合约代理二层的资产到一层上去做操作,这都需要一个非常巨大的状态。这个状态会引入一个巨大的默克尔树,巨大的默克尔树会带来问题,就是在上面产生 proof 会非常地耗性能耗算力。像 Loopring 用的是 O(1) 复杂度的算法,然后 PLONK 用的 O(log n) 的验证算法,当 n 很大时,gas 消耗会很大。如果我们期待以太坊捕获更大的价值,那 PLONK 算法就会遇到很大的瓶颈,而 StarkWare 的算法会更严重一些。递归零知识证明就完全开启了另外一道门,ZK Rollup 有希望在这条路上优化得更彻底,能够让整个的以太坊上做零知识证明验证的 gas 消耗降到一个非常低的等级。这是我觉得非常激动人心的一个新的方向,也希望感兴趣的小伙伴可以跟我们一起去探讨这方面,探索未来充满想象力的天地。谢谢大家。姚翔:谢谢郭宇老师,听起来如果递归零知识证明得到更广泛地应用,那么 ZK Rollup 可以发挥更大的功能,它的效率会有更大的提升。话筒又给到了 Steve。刚才 Steve 做了一个演讲。我也观察到 Loopring 在一季度有很大的进展,比如说增加了一个快速提款的功能,包括去提高了在 AMM 上 gas 的效率。我想问的是,请问在这个过程当中,在工程实现零知识证明上还有多少的效率可以去提升,这里面主要的难度是什么?Steve:其实 ZK Rollup 整个这套系统的搭建在工程角度来说还是蛮有挑战的。包括我演讲里面也说了,我们是 18 年下半年开始尝试这个方向,真正做出第一版原型系统是 19 年 3 月份,19 年底的时候才是真正的主网上线,这是第一个版本。第二个版本是在 20 年的六七月份上线,这也是半年多才迭代了一个大的版本,每前行一步,工程角度挑战都很大。这里面尤其我可以说几个点。比如说,我们 19 年底的版本本质上还是一个不太可以商用的版本,还有很多限制,毕竟我们是第一个去尝试这条道的。比如说刚刚郭宇所提到的,默克尔树不能太大,我们当时其实就限定最多 100 万个 Layer2 的账户,那也是为了我们的默克尔树的层次不能太高,否则你去生成证明的时间开销会特别大。第一版有很多这种工程上的权衡,但是我们后面会发现这些权衡应该要去掉。这只能从工程上去做,比如说我们在零知识证明的生成的优化上面有一篇论文,大概是提升了至少一个数量级,生成效率提高了十几倍。这之后我们就发现可以把默克尔树变得更大了,现在其实本质上是几亿个账户完全都能处理。做完这样的一件事情之后,我们发现原来认为通过 ZK Rollup 生成零知识证明的那部分成本会很高,但是相反,现在其实生成零知识证明的成本是很低的,只是数据上链和数据在链上做验证的成本是比较高的。这部分成本怎么来进一步降低?我们其实做了很多尝试。第一个我们上传 calldata 前都是做过压缩的,甚至做了一种压缩算法,然后在 EVM 里面再解压,这样的 gas 消耗反而能更低一点。第二,我们所有二层上的交易,能节省 calldata,我们都一个字节一个字节地去抠,基本上我认为已经抠到了极致了。所以同时就像郭宇说的,我们选了 O(1) 复杂度的 ZK-SNARK 的一个验证算法,它的验证时间不随着交易的大小增长而增长,这也是一个很大的好处。我们其实也很期待递归零知识证明最终在以太坊上能够得以实现,它能有效降低验证的时间。但是大家要记住一点,它其实不能提升整个 ZK Rollup 体系的 TPS,因为整个 ZK Rollup 最终的 TPS 限制是数据上链决定的,最大的 TPS 瓶颈就卡在这。除非你抛弃掉数据链上可用性,这是另外一条道。但我们觉得还是要保持数据上链,你的资产的安全性才得以保证。姚翔:谢谢 Steve,我们也听到 Loopring 在工程上做了非常多的努力,包括最后他提到了 Loopring 认为数据的链上可用性非常重要。但与此同时我也看到一个倾向,因为我们今天刚才听了 Matter Labs 他们说发布了 zkSync 2.0,这里面其实是有两个部分,包括 ZK Rollup 和一个更像 Validium 的一个部分;包括 StarkWare,也是有 ZK Rollup 和 Validium 这两个部分。同时我也看到像 Arbitrum 这样的团队,他们也在尝试把零知识证明引入到 Optimistic Rollup 体系里面来。我的问题是面向这四位嘉宾,这样一种混合的设计有没有可能成为将来的协议设计的趋势,因为混合本身可能给用户不同的选择的权利。Steve:这种混合模式我是这么来看的。路印协议从第一版支持 ZK Rollup 的时候,我们协议本身就支持两种模式,其实就对应数据可用性和不可用。本质上其实就是一个取舍,你要 TPS 还是要安全性,这就是协商妥协的一个过程。至于刚刚提到的比如说 Arbitrum,我们当时甚至都讨论过,路印是不是可以在别的 Layer2 上面再部署一套,把我们变成 Layer3。其实大家可以想象一下,我一直也提一个概念,就是盗梦空间,层层的梦,梦的叠加,就可以类似于无限的扩张 TPS,这也是有可能的。这是我对这种融合的一个看法。郭宇:首先我想表达一个观点,零知识证明实际上是更底层的非常基础的小工具,它到处可以用。ZK Rollup 和 Optimistic Rollup 的一个核心区别就是大家如何处理这个状态空间。像签名验签,像继续去挑战的动作的时候也可以生成证明,就是说这样的证明可以到处使用,只是我们平时说的 ZK Rollup 可能特指的就是零知识证明处理巨大的默克尔树。所以说我觉得所谓的混合方案,目前我看到 Optimistic Rollup 在大量地使用零知识证明,我相信未来很多的部件会逐步被零知识证明替换。反过来混的情况我现在还没看到,就说 ZK Rollup 是不是有必要引入 Optimistic Rollup 里面的一些组件,例如把挑战窗口这种基于经济学的方法拿过来用,我目前还没有看到有这个必要。我觉得必然很多的方案会逐步地用大量的零知识证明,因为马上以太坊会支持更先进更复杂的这样一个证明的应用场景。我觉得所谓的混合方案可能是一种更好的 Rollup 方案,我更喜欢用 Rollup 这个词。至于是不是强调基于零知识的,我觉得可能没那么特别重要,反正最后大家会共同往一个方向走。这里面有一个核心的问题是,基于密码经济学和零知识证明的占比会有些不同,可能跟不同场景有关系,DeFi 和游戏可能会采用不同的策略,这是我的一点看法。