6 月 23 日,HashKey Capital 投资经理 Rui 在万向区块链 B 站直播间蜂巢研习社,对话 Nervos 首席架构师 Jan 和其他区块链项目的负责人,基于各自在行业内多年来的积累,从技术、管理、生态等多个角度,围绕区块链的可扩展性,探索 Layer 2 的破局路径。以下是 Jan 的问答部分(根据速记整理,略有不影响原意的删改):Rui(主持人):先请 Nervos 的首席架构师 Jan 跟我们讲讲您跟 Nervos 的故事。Jan:大家好!我是 Nervos 的架构师 Jan。大家可能听说过,Nervos 是一个比较有想法的项目。它是一个公链,但是当大部分公链项目在做 PoS 的时候,我们在做 PoW;大部分人在走账户模型路线的时候,我们在做 UTXO;大部分链在做 Sharding 和 Layer 1 扩容的时候,我们说分层才是正确的道路。很高兴今天能参加 Panel,聊一聊分层 Layer 2 的东西。今年 Nervos 有几个比较重要的里程碑。这个月月底 Nervos 上 Rollup 项目 Godwoken 会上线新版本 V1,和 EVM 完全兼容,有很好的互操作性,对用户来说使用的感觉会非常像以太坊的 Rollup,甚至你就感觉它是以太坊上的 Rollup,你感觉不到它的 Layer 1 是 Nervos CKB。在 Q3 的时候,计划会发布另外一个 Layer 2 框架 Axon,其实是一个 Sidechain 或者说 Appchain,这是今年的一些计划。Rui(主持人):无论是跨链桥、公链还是 Layer 2,请问一下大家怎么理解?像 Nervos 一层用 PoW 机制,二层也是用类似于证明的方式保护用户的数据安全。想请大家聊一下关于安全的部分,通过什么样的机制保护用户安全,以及这其中潜在的风险点。从 Jan 开始。Jan:说到安全这个事儿,Layer 2 基本上可以分成两个思路,一个是我们说的欺诈证明(Fraud Proof)。一般情况下我假设没有问题,但是有问题的时候我可以寻求 Layer 1 的帮助,把作恶的证据提交到 Layer 1 上。无论是 Channel Network 还是 Optimistic Rollup 里,都有挑战的机制。另外一种是零知识证明。ZKP 发展起来以后,我们可以利用零知识证明的技术验证 Layer 2 上的计算执行过程结果是对的。所以,基本上所有的 Layer 2 都是利用到 Layer 1 的基本性质,利用 Layer 1 来做最后的仲裁角色,就很像我们日常生活里的法院,日常活动发生在日常的地方,但是出问题的时候就找法院,Layer 1 就是那个法院。Rui(主持人):我们刚才聊到一些比较偏密码学的机制,我了解中你们也是 Optimistic Rollup 的方式,但是可能会加入密码学的机制,因为我确实没有看过 CKB 上的 Layer 2 架构。Jan:如果具体到 Nervos 的话,Godwoken 是一个 Rollup 框架,我们其实想做的是框架,所谓框架就是说它可以通过定制变成一个 Optimistic Rollup,或者说变成 ZK Rollup,我们希望它都可以做。但是现在第一步是从 Optimistic Rollup 做起,6 月底会上线的版本是 Optimistic Rollup。Nina:我想问一下 Jan,所以咱们开放出来的架构一层只支持 Nervos 的网络吗?还是也可以在别的网络作为一层?Jan:Godwoken 一层只支持 CKB,因为以太坊已经有 Arbitrum 这么好的项目在做了,我们就另外走一条路。Rui(主持人):Nervos 毕竟是异构链,又是 UTXO,又是各种不同的架构,其实对于开发者来说,一个是开发者对链的理解能力,再一个是相关配套能让开发者更好用的模块。您应该是特别有发言权,想请您聊一下您是怎么看待这件事,以及您觉得这些东西现在在 Nervos 上是什么样的情况。Jan:工具链对于平台来说是非常非常重要的,尤其对于新平台来说,这点上我们踩了非常多的坑,吃了很多苦头。就像刚才 Rui 说的,Nervos 从底层就是和以太坊异构的东西,所以在工具链层面是从零开始,从头到尾都要自己重新搭一套,这个感觉好像之前已经有 iOS,现在我们要做安卓,光有安卓内核是不够的。不知道听众里有没有做移动开发的,Android 有 ADB、IDE 各种各样的帮助你开发、帮助你 Debug 的工具。成熟的工具链是以太坊最强大的优势所在,因为以太坊从 2016 年开始发展到现在积累了七八年的工具链。以太坊一开始做开发也非常难受,因为我是做过的。在以太坊上线之前我就用过 Solidity,那时候用 Solidity 非常困难,和现在很多新的平台是一样的,其实比现在还要差,因为现在大部分公链比较重视开发者有资源投入,但是以太坊刚出来的时候以太坊非常小,更类似普通的开源项目,连文档也没有,你根本不知道 Solidity 的函数只能传 16 个参数,超过 16 个就爆掉,报错等各种都非常痛苦。但是经过了这么多年的发展,大家已经觉得它挺好用的,大家现在进入以太坊,进入 Solidity,进入 dApp 开发相对来说已经比较容易了。但是如果你要重新做一个平台的话,你要把以太坊做过的事情全部做一遍,而且可能要把更短的时间内做一遍才能追上它。这点是 Nervos 在发展中遇到的最大困难,缺乏这些工具链。所以一开始我们是自己做了非常非常多的工具,包括 Mercury、Lumos、SDK等 等。但后来发现这里面不光是工具本身的问题,还有用户习惯的问题或者开发者习惯的问题。如果对于一个新人来说可能是差不多好用的东西,但是对于已经接受以太坊,接受 Solidity、dApp 这套思维设计模式,已经学习了这套东西的人来说,你让他转变过来,仅仅是一样好用还是不够,这点是新平台发展中最困难的。对于 Layer 2 来说,一部分以太坊的 Layer 2 没有这个问题,因为以太坊的 Layer 2 肯定都是用 EVM。对于 ZK Rollup 可能会有这个问题,因为 ZK Rollup 可能会改虚拟机,可能会在 Layer 2 上有不同的开发体验。其实我觉得这可能也是很大的问题,现在 ZK Rollup 如果要做 General 的 Rollup 的话,对开发者来说是很困难的,那一点点差异就很困难。对于 ZK EVM 来说,可能有 80%、90% 都一样,但可能有 5% 甚至 1% 不一样,大家不要小看这一点点不一样,很多开发者、开发团队都会因为这一点点不一样就不来开发了。这个坑是 Optimistic 踩过,我们自己也踩过,因为我们去年就已经上过一个 V0 版本的 Rollup,在 Nervos 上,这个版本可以认为 95% 和 EVM 兼容,就是因为剩下的 5% 导致很多开发者不愿意把他的代码迁移过来,因为他迁移过来可能需要花一些工作改现有的代码。这个月底会上 Godwoken V1 的版本,做到了基本上百分之百的 EVM 兼容。其实花了很多精力去保证和 EVM 的兼容性,让开发者迁移的成本更低,剩下的那 5% 的兼容性可能花了 80% 的工作,所以它其实也是挺费力气的一件事情。但是总体来看,对于 Nervos 来说,我们会觉得与其花更多时间去等待 Layer 1 工具链慢慢成熟,还不如先在 Layer 2 做一层 EVM 的兼容层,这样可以让开发者更快地 onboarding,可以让开发者更快的上路。
所以,Layer 2 对于 Nervos 来说,不仅仅是一个扩容层,可能性能会更好。对于 Nervos 来说,更大的意义在于它是一个 EVM 的兼容层,可以让开发者更容易地进入到 Nervos 的生态里。总而言之一句话,工具链其实非常重要。如果你在做一个和以太坊异构的平台,除了自己把自己平台的工具链慢慢补齐以外,另外可以考虑要不要做一层和以太坊兼容的东西,这也是一个选项。Rui(主持人):下一个问题会比较偏哲学,偏意识形态的问题,公链在应用主导的生态体系下应该扮演什么样的位置?刚刚大家也说开发者很重要,但开发者做大了可能不给链交税了,这时候公链该如何自处呢?它可能想坐在和你平行的位置,这个问题也是我最近一直在思考的,公链未来无论是价值端还是用户端,跟 dApp 究竟是什么样的关系?这个问题 Jan 是最有这方面的回答权,像 .bit 也是基于 CKB 密码学原语后面扩展到其他链。CKB 密码学原语的灵活性有很多可能性会出来,想请 Jan 先聊一下你怎么看待这个问题,未来更多的 App 链对于公链是什么样的冲击?Jan:之所以有 Nervos 这个项目,这个问题其实是一部分的原因。首先我觉得对于公链肯定会有冲击的,所以公链应该尽早为这个时代的来临做好准备。“这个时代”是什么时代?这个时代是区块链技术真正流行起来被普遍应用的时代,很多 dApp 已经进入了全世界 80 亿人的日常生活,大家可能像平常在用滴滴打车和支付宝、微信一样在用这些 dApp,大家不会再特别把它作为一个特殊的分类,这个是 dApp,那个是网页,那个是普通互联网应用,而是说它已经融为一体了。这个时代一定会来的,至少今天参加 Panel 的所有嘉宾肯定相信这个时代一定会来。这个时代的特征是大家已经不在乎自己用的公链是什么了,或者已经没有意识到自己在用区块链的应用了,这个就像我们今天在做直播,没有人会关心我下面用的是 TCP 还是 UDP,那不重要,不仅不重要,而且对于普通用户来说也搞不懂,对用户来说不了解 TCP 也不了解 UDP 是什么,他也不关心。今天用户之所以关心区块链、Layer 1、Layer 2、PoW、PoS、UTXO 这些名词,是因为我们还在非常早期,这其实不是正常的现象。这是只有在早期才会出现的现象,因为在早期这个行业的人还太少。在这个行业的人依然可以说是最狂热的一帮人,他们愿意比较各个技术之间的不同,我就是想用 DeFi 的应用,或者我就是想用一个随便什么应用,我还愿意去研究它下面用的是共识还是什么,我就想发一个 NFT 我还要关心它下面究竟是 PoW 还是 PoS,它是不是环保。这些问题本身其实就很像我们买小米手机要研究小米手机的材质是不是不锈钢一样,它是一小撮人才会去做的事情。如果往未来看,公链一定是最下面那一层,不被大家关心的那一层,大家用就好。这时候的核心问题是公链如何捕获价值。这时候大家首先就不关心你了,你已经没有眼球的溢价了。其次很多活动已经转移到了 Layer 2、Layer 3、Layer 4,whatever,反正不在 Layer 1,Layer 1 上的交易也许没有那么多,这是一种推论。这时候 Layer 1 的经济模型应该怎样才能捕获整个生态的价值?这是所有公链需要考虑的问题,包括比特币网络,包括以太坊,都会遇到现在的问题。以太坊之前面临的问题是状态膨胀、全节点开销越来越大,以太坊手续费能不能支撑全节点的成本。现在因为已经要往2.0转,那么以太坊的问题可能会是经济活动都往 Layer 2 更上层转,Layer 1 的手续费能不能支撑以太坊的节点成本,这个我们把它叫做 Security Budget 安全成本。这和一个国家维护自己的安全是很像的,你必须收税来维持自己的军队,这是最基本的道理。你的税收从什么地方来?现在以太坊上收的是交易税,交易越多收的税越多。但是当交易不再增加的时候,上层生态越来越繁荣,上层的经济体规模在增加的时候,你怎么办?是这个问题。Nervos 在这一块儿是有自己的想法的,Nervos 的经济模型其实是土地税的模型,就好像一个城市。比如说,以太坊是一个城市,这个城市的经济活动越繁荣,那么这个城市的交通就会越繁荣,我们给所有的车辆收过路费,是这样一种经济模型。Nervos 是说这个城市越繁荣,想要在这个城市拥有土地开展商业活动的企业就会越多,我们征收土地税,每年都要交税,是这样一种模型。这种模型的好处是,即使未来这座城市大家都建高楼大厦,都往上层发展,在路上走的人已经很少了,大家都在天上开飞机,路上其实没有人了,但是你还会占用土地。这两种不同的经济模型,一种经济模型只考虑平房,一种经济模型是为高楼大厦设计的,简单来说就是这样。现在很多新的公链也吸收了这个事物,比如说 Near 以及一些其他的链,当时 Near 他们也来我们团队办公室聊,大家交流过这个问题,我觉得以太坊最后也会面临这个问题,即使有了 ERP-1559,它还是消费税的模型,不是土地税的模型。这是我们觉得未来 Crypto 也好、Web3 也好,整个生态成熟以后公链要考虑的问题。再回到 Nervos 另外一点,Nervos 一直在提互操作 2.0 的概念,其实想说的也是用户是不需要知道 CKB 的。如果大家用过 .bit 这样的应用,或者尝试过 Nervos 上的 NFT 产品,是能够感觉到你在使用的时候不需要知道 CKB,你可能没有意识到你在付手续费,你可能没有意识到你在用 CKB。甚至像我刚才说的,你在用 Godwoken 的时候,你可能会觉得你在用 Ethereum。这些对于 Nervos 来说都是非常正常的现象,这是我们希望达到的目的,我们希望用户不需要知道 CKB,但是在这个情况下 CKB 依然可以捕获价值。我觉得未来一定是这样。Rui(主持人):接下来问一下 Jan,Jan 也做了 CKB VM 服务器,最近也上了,我知道您对于 ZK VM、ZK EVM 一直有研究,看它们怎么做,包括你们怎么做的。我还蛮好奇关于 ZK EVM 的一些事儿,包括您说的百分之百兼容,也想请教一下您怎么看待以太坊最近在推的 ZK EVM、ZK VM,其实是以太坊最主流的一帮人在推的。您之前也是以太坊的核心开发,想问一下您是怎么看待这件事的。Jan:首先我们也觉得 ZKP 是非常重要的方向,从我们自己的判断来说,可能还是有挺长的路要走吧,因为 ZKP 之前研究历史很长,但是蓬勃发展也就是近两年,肯定是受了很大的 Crypto 力量的推动,最近在蓬勃发展。这两年 ZKP 方向的论文,各个环节的论文都在爆发,像 zk-STARK 就是 Starkware 这个团队比较著名的方向,但其实也有很多其他的,包括 Nervos 自己也有研究员做 ZKP 研究,但是我们在做的 ZKP 研究还比较偏理论层,更加偏数学,我们还没有走到能够把理论和工程实践相结合的地步。这可能和路印这样的前辈项目相比,还是有比较大的差距。但是现在我们也不是那么着急做结合,感觉还想再观望一下理论的发展,理论这块儿还是有非常多的可能性的。从 VM 本身来说,CKB-VM 是 Layer 1 的 VM,它和 ZK VM、ZK EVM 有角度的不同,因为 ZK VM 想要实现的目标是方便 Proof 的生产,Layer 1 的 VM 目标是尽可能支持更多的 Proof 的验证,因为一个在 Layer 1,一个在 Layer 2,Layer 1 和 Layer 2 的关系一个是生存,一个是验证,一个是阴,一个是阳。对于 CKB-VM 来说,它关心的不是我们要怎么调整 VM 的结构和设计更方便地生产零知识证明,而是我们怎么样可以更好地支持密码学的原语,可以验证各种零知识证明算法产生的证明。甚至说,有可能理想中的零知识证明的算法现在还不存在,因为这个领域在蓬勃发展,这个算法可能是五年之后、十年之后才出来。我们怎么样能够在今天做一个设计,能够很好的向未来兼容?这是 CKB-VM 的角度。在这点上,CKB-VM 和同样作为 Layer 1 虚拟机的 EVM 或者 WASM 的想法是不同的。包括 EVM 在内,想要向未来兼容的方法实际上没有的,兼容的方法就是硬分叉,不停地加 precompile。以太坊是直接加入了做零知识证明的 precompile 去支持上层的 ZKP 应用,这也是为什么在以太坊上很多 ZK Rollup的 路线已经可以做了,但是它的问题是,如果我们需要兼容一些新的算法,不是 zkSNARK 或者 zk-STARK 的话,我需要再做硬分叉加新的 precompile。CKB 的思路是尽可能保持虚拟机的抽象,不要依赖人为的硬编码去增加 ZKP 原语的支持,而是说希望可以做到大家用写智能合约的方式去写 ZKP verification 的合约,它不需要底层任何特殊的支持。CKB-VM 做到这点的方式也是我们选择 RISC-V,而不是选择直接用 EVM 的原因。选择 RISC-V 是因为 RISC-V 是为硬件设计的指令集,在工业界有非常成熟的工具链,TCC、LLV、VM、C、Rust 的语言都可以直接编译在 RISC-V 上跑。之前大部分密码学算法都是 C 实现的,现在很多新的密码学算法都是 Rust 实现的,这些都可以在 CKB-VM 上很好地运行。但有这里边也有非常大的技术挑战,虽然能够运行,但是效率可能不高,这是为什么 CKB-VM 会去尝试加入新的指令集,比如说向量指令集,比如说大数指令集,希望通过这些指令集配合编译器优化的技术,让所有的密码学算法在编译之后能够高效运行在 VM 上。这个思路和 EVM 支持 ZKP 的思路是完全不一样的,一个是更加通用的思路,一个是更加 practical 的思路。也不是说 EVM 不好,大家的思路不一样,EVM 想的是我现在只能做这个,那我就加一条 precompile 进去,我也不管那么多了。能够看到,以太坊是在走这些路。但我觉得,可能到某个时间点,如果确实有必要的话,CKB-VM 可能也会有 precompile 这样的东西加入,前提是如果我们自己对 VM 的优化速度赶不上行业发展的话,那也没办法。但是现在来看 CKB-VM 还有时间去优化,这是为什么我们现在在做向量指令集,计划明年把向量指令集加进去,看能够给密码学原语带来多大的计算空间,这里面还需要有不少的工作来做。总的来说,大家的思路非常不一样,EVM、CKB VM、ZK VM,大家的角度都是不一样的。
Nervos 网址:https://www.nervos.org/
中文电报群:https://t.me/NervosNetworkcn
中文推特:https://twitter.com/CKBMeta
中文Discord:https://discord.gg/f2qa52tJnz
《Nervos 入门手册》:ckborg.bit.host