去年下半年,各种Layer2概念受到大家广泛关注,时至今日,已经有不少项目和概念证明了自己的价值。其中ZkSync和Optimism 使用的Rollup方式,更是成了Layer2的标准模板。关于Layer2,相信大家看过的文章已经很多了,很多人看完同时也会有一个疑问,除了计算和执行,我们还可以从公链上分解出来哪些任务?如果你也这么想,请先为自己的“区块链原生思维”鼓个掌。

以太坊或者其它公链之所以会拥堵,会收如此高的gas费,通俗讲就是工作超负荷了。现实世界当中,一个人忙不过来了会去找帮手,一家公司忙不过来了会请外包。但无论用哪种方法,第一步都是厘清任务。

Celestia的出现就是为了填补这一空白,为扩容技术开辟出Layer2以外的新方向——数据可用性与底层公链的解耦,团队目前在官网上显示有17人,在GitHub上有11人,多数来自以太坊、Harmony和Cosmos。创始人Mustafa Al-Bassam更是在GitHub上非常活跃。

Layer2之后该怎么扩容,深度解读Celestia的数据可用性模块

Celestia在去年3月进行了一次种子轮融资,融资金额为150万美元,参与者有Maven 11 Capital、Interchain、Signature Venture、Cryptium Labs和Dokia Capital。目前没有发币,也没公布代币模型,所以本文将先从产品说起,首先补充一点背景知识。

一条公链的任务,可以被分成以下三类:

  • 安全层:在一些场景下也被称为共识层,但也许随着“隐私”概念的成长,我们在未来可以看到没有共识的安全层。目前,你可以把它理解成CAP理论中的分区容错性(Partition-tolerant), 因为说到底区块链得是去中心化的,而在一个去中心的系统中,节点彼此不信任,需要一个共识来决定谁来出块(哪个节点贡献的多)。尽管各大公链全部在这上面野心勃勃,但现在看起来还是只有比特币跟以太坊能承载安全层。未来谁想在共识上超过这两位是不太可能了,只能寄希望于技术突破,挑战二者的地位。
  • 数据可用层:当区块链上一笔交易被达成,交易结果会广播至全链进行确认,可有的节点不知道这个被广播出来的信息中是否包含了假消息,甚至不知道这个出块的矿工,有没有把所有出块需要的信息都发布出来,这个时候数据也就不可用了。节点数量越多,数据验证起来就越麻烦,所以在过去的公链中,链上扩容和数据可用性相矛盾。
  • 执行层:最后,交易和智能合约发生在执行层。所有智能合约、dApps 和用户也会在执行层面沟通。执行层应专注于处理尽可能多的计算任务,同时将安全性和数据可用性外包交给公链。 目前的Layer2,如 Arbitrum、Optimism、StarkWare 和 ZkSync,都在专注于开发更有效的执行层。

Celestia:解决数据可用性

Celestia首先解决的是数据可用性问题,而这个问题说白了,就是当某条链上生产出一个新的块时,新块里会包含之前已经被验证的一部分交易数据,以及其它一些开发者想塞进去的东西。其它的不重要,关键这个交易数据,容易被恶意造假。如果没有这些记录,其余节点就不能判断新块中是否包含了这些假数据。

那解决这件事的主流办法是什么呢?首先,节点被分成了轻节点和全节点:

  • 全节点——需要下载并验证新块被生成前的所有交易。属于用性能换安全。哪怕“51%”攻击来了,也别想糊弄过去。
  • 轻节点——也就是“不完整的节点”,只验证区块头,不验证区块里面的数据。因为它们假设其余节点没有作恶,所以是拿安全换性能。

那么问题来了,轻节点这个“大多数人都是善良的”的假设这么不靠谱,如果被骗了怎么办?于是以太坊又提出了欺诈证明。

  • 欺诈证明——说起来也和Celestia的创始人Mustafa Al-Bassam有些渊源,最早提到这个概念的论文作者便是Mustafa、Vitalik及Alberto Sonnino。作用是可以针对特定某笔交易,先让全节点来判断下真假,再把结果发给轻节点,由于欺诈证明很小,轻节点收到了之后便不用再花精力了解整条链的状态,不会牺牲太多性能,所以算是给轻节点打了个补丁。

可如果新块的数据不可用,让全节点也无法筛选无效交易了呢?那即便是全节点,也无法发出来欺诈证明。这就是数据可用性需要面对的问题了。

现在以太坊在处理这个问题的时候,仍然是让自己来验证,可众所周知以太坊这条“贵族链”备受诟病,于是Data Availability Sampling (DAS)出现了,它能把一个新块里的数据切分出若干样本,通过抽样,实现了数据可用性。

这样做的好处首先是解决了扩容问题。有了DAS,每次做数据可用性耗费的性能差不多,和区块本身的大小也没有关系,就和早年间的BT下载一样,Celestia甚至声称它的节点性能只要做到手机即可支持的程度就可以。如此一来,数据可用性问题就变成了一个只需要“无脑”增加节点就能解决的问题。打个比方,我是一个游泳爱好者,如果在游泳时拼命增加划水频率,会导致换气频率一起增加,到头来换气的阻力刚好抵消了划水的推力,我累得不行,却没能游的更快,区块链扩容也是一个类似的系统问题,单一调整其中一个变量,会按下葫芦起来瓢,妄想解决问题。除非能把系统分解开,就像Celestia所做的工作。

Layer2之后该怎么扩容,深度解读Celestia的数据可用性模块

由于Celestia的节点既不运行智能合约,也不去验证区块内的数据,它只负责做数据可用证明。所以Celestia的形态就像是一个插件,即插即用,可以和现有的各种Rollup方案结合,让Layer2安心做好执行层(然而它们并不“安心”,反而想把数据可用层也做了)。

Celestia是如何和Rollup们合作的

Celestia把Rollup分成了自己原生的,和以太坊原生的。前者非常简单,Rollup可以直接和Celestia打交道,先上传数据,然后让Celestia查看数据可用性,最后Rollup在看到新状态之后再去自己做验证,整个过程里Celestia可以说十分清闲,它甚至连Rollup上传的数据代表了什么都不知道(因为只有切片样本),而Rollup找它来做数据可用性,也只是因为它更便宜,性能压榨地够狠。

而在以太坊当中,情况就复杂了一些,首先以太坊目前还没有分片和DAS,但Rollup们即便承受不住链上处理成本,也可以转战链下,让业内名气最大的第三方审计机构做数据可用性,这成本甚至可以低到忽略不计。事实上,ZK 2.0已经在这么做了,StarkEx和Plasma这类更不用提。当然在Celestia看来,链下验证毕竟是中心化的,不能排除作恶的可能。可即便是这些机构作恶,这些链下验证者能做的也仅仅是把交易冻结住一段时间。

ZK 2.0的计划是为用户提供更多选择,如果用户能忍受高成本,就是还是把数据可用性放到以太坊上做,如果用户能接受交易在最坏情况下被冻结的假设,那ZK 2.0可以给一个超低gas出来。

Layer2之后该怎么扩容,深度解读Celestia的数据可用性模块

而用户如果对这两个方案都不满意,Celestia就该闪亮登场了,它能作为一个插件,插到以太坊自己的验证器中,以太坊可以用Celestia发布的签名和默克尔树确认某个特定Rollup的数据已经在Celestia上可以用了,然后这个Rollup就可以从以太坊上读到自己的状态,接着做执行去。这样一来,数据可用性仍然是在以太坊上完成的,但Rollup却不必将与交易相关的完整数据上传到以太坊,同样可以实现极低成本。

尽管以太坊还不支持链下数据验证,但Celestia通过以太坊的Validium,还是能做到更低的成本,和更好的安全性。

关于未来会出现的结算层,以及它的竞争者Layer3

Celestia本身是采用Cosmos的SDK开发的,这项开发工具虽然具有天然跨链的属性,却也天然不能兼容任意种类的Rollup。另外得益于Cosmos的极简“哲学”,其生态中的应用需要独自对自己的安全性负责。于是Celestia迎来的第一个挑战,也是第一项用例,就是帮助Cosmos生态同时解决以上两个问题。

于是乎,Celestia终于迎来了与Cosmos以及Evmos合作的机会,它们将合作打造一个Cevmos环境,在这个环境中,所有应用是有选择自己执行环境的能力的,也就是“逃离”CosmosSDK,同时Celestia自己也在寻找更好的默认执行环境,比如Arbitrum VM。

另外Cevmos还能解决一个在以太坊上有些难缠的问题,就是以太坊上的Rollup要和其它应用竞争,导致Rollup的成本价并不那么优秀。而Cevmos就相当于Celestia的L1,替Celestia挡住一些和它无关的业务,把Rollup传过来的数据再Rollup一遍,并且只允许Rollup的智能合约,以及不同Rollup之间的一些简单交互存在。Polynya曾经质疑过这种受限的L1,但据Celestia创始人解释,L1受限并不会导致L2受限,依然可以运行dAMM或是DeFi Pooling。由于每一个为Rollup服务的层都可以是单独的一条链,Celestia在这个场景下可以提供由安全层提供的服务,结合Cevmos也就是人们所说的结算层了。Cermos作为L1的Rollup,被称为结算Rollup。由于Cevmos和Celestia的天然信任关系,日后这个层也可以朝隐私方向发展。

现在看起来是不是很像Rollup套娃,像Layer3?然而自称Layer3的另有其人,大家有兴趣可以关注一下StarkNet,以及它在隐私方面计划开发的Layer4,PANews会在之后的文章中再介绍。

最后来总结一下Celestia的优势:

可扩展性——通过将执行层与安全层和数据可用性解耦,Celestia让数据可用的扩容变得非常简单,从一个系统问题,变成了简单的加减法。性能不够了?加机器。

简洁——Celestia毕竟只是一个插件,功能简单且足够接近底层。就像云服务一样,人人都能用得到,人人所获得的的服务也都差不多。这点上Celestia配得上所有web3.0基础设施的榜样。

共享安全性——对于应用来说(尤其是Cosmos上的),大家现在有一个现成的安全层和数据可用层了,而且能跨链,能兼容EVM,还比那些链下委员会更安全。

自主性——原先被部署在以太坊或者其它公链上的应用,是没有独立选择硬分叉的能力的,每一次迭代都要跟着大环境走。因为这些应用要依赖L1做数据可用性和验证,所以要在以太坊上做智能合约桥。但Celestia这种扩容方式,虽然能确认数据可用性,却还是让Rollup自己做验证,智能合约就没必要在部署到L1上了。你可以理解成这是Cosmos和以太坊的优点集成,安全又自由。

模块化是我去年看到最激动人心的叙事,Celestia的测试网预计今年上半年上线,主网下半年,目前还没有一个有力的竞争对手。对公链功能的拆解不是一种哲学情怀,而是计算机发展的必要环节,模块化是将优秀应用从公链束缚中解救出来的必经之路。比起“改变公链叙事”的说法,我认为这更像是对公链叙事的延续,它们也许不像过去那么重要了,但它们所缔造的未来会变得更加精彩。