作者:E2M 研究员,Steven
以太坊 VS Celestia + Cosmos,大概取舍的就是以下这几项: 正统性+安全性高+去中心化程度高 VS 可扩展性高(成本低+性能好+迭代容易)+可交互性好 为什么后者能够被很多用户认可,早期主要是体量较小、发展时间较短的项目方和用户的双边需求决定的:
用户:在很多用户的认知当中,因为很多泛用户对于产品是否好用、价格是否实惠的需求大于安全性(无论是Web2还是Web3);
早期项目方:需要好的扩展性以随时进行战略调整,更低的成本来使项目有更长久的生命力。 因此很难直接说 Celestia 等模块化区块链是“以太坊杀手”,而是有很大一部分人群对于高性能、性价比高、可扩展性好的Web3公链有需求。以太坊的正统性、安全性、头部效应等依旧是不可撼动的,但不妨碍用户在一些特定场景会有其他的选择。
马上要坎昆升级了,EIP-4844 Proto Danksharding 后预期进一步降低 Layer 2 的 Gas Fee。
以太坊在未来几年将会完成分片方案 DankSharding(坎昆升级、EIP-4844 只是其中一个)。
然而,随着 23 年 10 月 31 日 2 点 Celestia 主网上线,以及今年第一季度大概率能够看到 Avail(原 Polygon Avail,目前已经分离成为一个单独的项目),第三方的共识层+DA 层完全了超车,提前实现了以太坊未来几年才能实现的模块化目标,在坎昆升级前先一步大幅度降低了 Layer 2 的成本,成为很多 Layer 2 DA 层的选择,蚕食属于以太坊 DA 层的蛋糕。
此外,模块化区块链为未来公链的提供了更加多元的服务,Altlayer、Caldera 等 Raas 服务商成为了其中的受益者,希望借此能够有更多垂类公链(应用链)涌现出来,为 Web 3.0 应用创造更好的土壤。
本文主要对区块链进行拆解,初步学习一下模块化区块链项目 Celestia,同时对于以太坊坎昆升级中 Blob 有更深刻的一个认知。
模块化区块链最早的概念是由 Celestia 联合创始人 Mustafa Albasan 和 Vitalik 于 2018 年共同撰写的《数据可用性采样和欺诈证明》(Data Availability Sampling and Fraud Proofs)。这篇论文主要讨论如何在不牺牲以太坊安全性和去中心化的情况下解决可扩展性问题。令人没想到的是,不光为以太坊,同时为其他第三方 DA 层提供了技术方案。
大体逻辑就是全节点负责生产区块,而轻节点负责验证。
什么是数据可用性采样(Data Availability Sampling,DAS)?
PS:该技术是 Celestia 技术的核心,无意间为第三方 DA 层提供了解决方案。
内容翻译并改编自:Paradigm-joachimneu 撰写的《Data Availability Sampling: From Basics to Open Problems》
参考以下小黑屋模型:
暗室中有一个公告板(请参见下面的漫画)。首先,区块生产者进入房间并有机会在公告板上写一些信息。当区块生产者退出时,它可以为验证者提供一小段信息(其大小不与原始数据线性缩放)。你带着手电筒进入房间,手电筒的光束非常窄,而且电池电量很低,所以你只能阅读布告栏上极少数不同位置上的文字。你的目标是让自己相信区块生产者确实在公告牌上留下了足够的信息,这样如果你打开灯并阅读完整的公告牌,你就能够恢复该文件。
这个模型对于以太坊来说是天然适合且不需要进行太多优化的,因为以太坊的验证者(验证节点)足够多。但是对于其他验证节点相对较少的公链而言则需要以更高的费用和更复杂的验证方法来进行安全性的保障。
那么对于验证节点较少的项目方而言,会面临两种情况要么生产者表现诚实并写下完整的文件,要么生产者行为不当并遗漏了一小部分信息,导致整个文件不可用。通过仅检查少数位置的公告板,无法可靠地区分这两种情况。
其中一个解决方案是:Erasure Correcting Reed-Solomon codes(纠删里德所罗门码)
纠删码的工作原理如下: k 信息块被编码成一个更长的向量 n 编码块。比率 r=k/n 代码的冗余度衡量代码引入的冗余度。随后,从编码块的某些子集,我们可以解码原始信息块。
简单来讲,就像两点确定一条直线,在最初的 r、k、n 都确定的情况下,这条直线就确定了,而后想要复原这条直线,就只需要知道直线上的两点。
里德-所罗门码就是根据这种逻辑上进一步复杂化的,一旦知道多项式的评估不同的位置,可以在任何其他位置获得其评估(通过首先恢复多项式,然后评估它)。
回到我们的数据可用性问题:不再要求区块生产者在公告板上写下原始文件,而是要求它将文件切入块,使用里德所罗门代码对它们进行编码,例如速率,并写出将编码块发布到公告板上。现在让我们假设区块生产者至少诚实地遵循编码——稍后我们将看到如何消除这个假设。再次考虑两种情况:要么生产者行为诚实并写下所有块,要么生产者行为不当并希望保持文件不可用。回想一下,我们可以从任何在......之外编码块。因此,为了保持文件不可用,区块生产者最多可以写入大块。换句话说,至少现在,超过一半的编码块,将会丢失!
但现在这两种情况,一个写满了的公告牌,和一个半空的公告牌,很容易区分:你检查公告牌上的数字很小随机采样位置,如果每个采样位置都有其各自的块,则认为该文件可用,如果任何采样位置为空,则认为该文件不可用。
什么是欺诈证明(Fraud Proofs)?
排除无效编码的方法之一。这种方法依赖于这样一个事实:一些采样节点足够强大,可以采样如此多的块,以至于它们可以发现块编码中的不一致,并发出无效的编码欺诈证明,以将有问题的文件标记为不可用。这方面的工作旨在最大限度地减少节点必须检查(并作为欺诈证明的一部分转发)以检测欺诈的块数量
该方案最终还是牺牲了很小一部分安全性,极端情况下数据会丢失。
有意思的是,该方案为第三方 DA 层项目 Celestia、Avail 的诞生奠定了基础,以太坊给自己创造了竞争对手。
2019 年,Mustafa Albasan 撰写了《LazyLegder》将区块链的职责进行了简化,只需要排序和确保数据可用性,由其他模块来负责执行和验证(当时并没有分成不同的层),从而使得区块链的可扩展性问题得以解决。这篇白皮书应该算是模块化区块链的雏形。Mustafa Albasan 也是 Celestia 的联合创始人之一。
Celestia 属于第一个模块化区块链的解决方案,早期是作为一个执行层公链的存在,让智能合约在其上面执行。Rollup 的扩容解决方案进一步明确了执行层的概念,链下执行智能合约,将执行结果批量压缩成证明上传到执行层。
关于 Rollup 证明的小补充
欺诈证明 (fraud proof) 是一个接受计算结果的系统,你可以要求有质押存款的人签署以下形式的消息:“我证明,如果使用输入 X 进行计算 C,则会得到输出 Y”。你会默认信任该消息,但其他有质押存款的人会有挑战计算结果的机会,他们可以签名一条消息,称“我不同意,输出结果应该为 Z,而不是 Y。”仅发起挑战后,所有节点才会进行运算。这两方中任何一方出错都会失去保证金,并且所有基于错误计算的运算都会重新进行。
ZK-SNARKs 是一种密码学证明形式,可以直接验证“输入 X 后,执行计算 C,会输出 Y”。在密码学层面,该验证机制是“可靠”的,因为如果输入 X 后,进行计算 C,结果不等于 Y,则无法通过计算生成有效性证明。即使运行计算 C 本身花费大量时间,该证明也可以很快得到验证。 ZK 意味着可以更加具有效率的完成证明和验证,所以 Vitalik 对于 ZK-Rollup 也是十分推崇,但是和分片一样,技术难度远远大于欺诈证明,也需要多年的时间实现,同时更具有效率或许会带来额外的成本。
区块块链不可能三角:可扩展性、去中心化、安全性。
简单定义一个衡量标准的话,
可扩展性:可扩展性(好) = TPS(高)+Gas fee(低)+验证难度(低)
去中心化、安全性:去中心化程度(高)+安全性(好) = 节点数量(多)+单个节点硬件要求(低)
这两者一般只能选择满足一个条件,一定程度上牺牲另外一个,这也是为什么以太坊在可扩展性上的发展,是极为缓慢的;Vitalik 及以太坊基金会对于安全性和去中心化两个特点有着最高优先级。
像一些传统的高性能 Layer 1 ,例如:Solana(验证者 1, 777)、Aptos(验证者 127),在验证者都不如以太坊节点数量(5, 000+)的情况下就开始追求可扩展性,代价就是对于节点的门槛要求高、运营成本贵;反观以太坊在大几十万验证者(目前 900 k+),确保了绝对的去中心化和安全性的情况下,才开始追求可扩展性,足以看出以太坊基金会对这两个特性的重视程度。
Solana 验证者数量:
数据来源:https://solanabeach.io/validators
以太坊验证者数量:
数据来源:https://www.validatorqueue.com/
此外,相对于高性能 Layer 1 对于节点的严苛要求以及中心化的验证者,以太坊未来的升级,还会进一步减少验证者的验证难度,从而使对于用户成为验证者的要求进一步降低。
通常,交易提交到链上,首先会进入 Mempool,由矿工“挑选”,打包成区块,将该区块拼接到区块链上。包含这笔交易的区块,会向网络内全体节点广播。其他全节点将下载这个新区块,执行复杂计算,验证其中每一笔交易,确保交易真实有效。复杂计算和冗余,是以太坊安全基础,也带来了问题。
1.3.1 数据可用性
节点通常有两种:
全节点——下载并验证所有区块信息及交易数据。
轻节点——非完全验证节点,易部署,只验证区块头(数据摘要)。 首先,确保新区块产生时,该区块中的所有数据确实已发布,使得其他节点可校验。若全节点未发布区块中所有数据,则其他节点无法检测,该区块是否隐藏恶意交易。
节点需要获取一定时间内的所有交易数据,并验证,不存在已经确认但未验证的交易数据。这便是通常意义上的数据可用性。若某个全节点隐瞒一些交易数据,其他全节点在校验后,会拒绝跟随此区块,但仅下载区块头信息的轻节点则无法校验,会继续跟随这条分叉区块,影响安全。尽管通常区块链会罚没该全节点保证金,但这同样会使质押给该节点的用户受到损失。且当隐瞒数据的收益,超过罚没成本,节点有动机隐瞒,届时实际受损的,只会是质押用户和该链其他使用者。
另一方面,若全节点部署逐渐中心化,节点间存在串通可能,会危及整条链的安全。
数据可用越来越受到关注,一方面因为以太坊 PoS 合并,另一方面则是 Rollup 发展。当前 Rollup 会运行中心化定序器(Sequencer)。用户在 Rollup 上交易,定序器为交易排序、打包、压缩,发布到以太坊主网,由主网全节点通过欺诈证明(Optimistic)或有效性证明(ZK)验证数据。只要定序器提交的区块所有数据真实可用,以太坊主网才可据此跟踪、校验、重建 Rollup 状态,保证数据真实和用户财产安全。
1.3.2 状态爆炸与中心化
状态爆炸是指,以太坊全节点积累的历史和状态数据越来越多,运行全节点需要的存储资源越来越大,运行门槛提高,致使网络节点中心化。
因此,需要某种方式,使全节点在同步以及验证区块数据时,无需下载所有数据,只需要下载区块的部分冗余片段即可。
至此,我们明白了数据可用性很重要。那么,如何避免“公地悲剧”产生?即大家都清楚数据可用的重要性,但仍需要一些切实的利益驱动,让大家使用单独数据可用层。
就像每个人都知道保护环境很重要,但看到路边的垃圾,“我”为什么要把它捡起来?为什么不是别人?“我”把垃圾捡起来,能得到什么好处?
当发生链上行为时(例如:Swap、Stake、Transactions...)都要经过以下 4 个步骤
执行:开始交易
结算:验证数据,处理问题
共识:全都节点同意
数据可用性:将数据同步到链上
以此为基础,《LazyLedger》提出将区块链模块化,Celestia 则是将模块化区块链标准化:
执行层,Execution Layer
职责:负责执行智能合约和处理事务所需,将执行结果以证明的形式交给结算层;同时也是面向用户的各种应用部署的地方
对应项目:各种 Stack,Op stack、ZK Stack、Cosmos Stack、以太坊上的 Layer 2
结算层,Settlement Layer
职责:负责提供全局共识和安全性,验证L2执行结果的正确性,更新用户状态;例如:用户账户的资产情况变动;链本身状态状态的更新(Token 转账、新合约部署)
对应项目:Ethereum、BTC
PS:节点越多,安全性越高
共识层,Consensus Layer
职责:负责全节点的一致性,确保将新添加的区块有效以及确定 memepool 里的交易顺序
对应项目:Ethereum(信标链)、Dymension
数据可用性层,Data Availability Layer
职责:负责保证数据的可用性,使得执行层和结算层能够分别运行;执行层的所有原始交易确保在这里进行存储,结算层通过 DA 层验证
对应项目:Celestia、Polygon Avail、EigenDA(Eigenlayer 做的 DA)、Eth Blob+未来的 Danksharding、Near、中心化 DA
像 Celestia 是专注于数据可用性和共识层的 Layer 1 区块链;Optimism 和 Arbitrum 是专注于执行层的 Layer 2 区块链;Dymension 是专注于结算层。
一图概括,不多赘述。
以太坊从巴黎升级(及 Merge)开始,就在将自身逐步模块化。
共识层/结算层:信标链
执行层:(完全外包给)Rollup
DA 层:Calldata(现在)/Blob(坎昆升级后)/Danksharding(未来/终局)
Vitalik 当下对于未来以太坊扩容方案核心之一就是 Rollup-Centric,潜在的终局可以参考以下这个图:
分片成多个不同擅长的工作链,共识、安全性和结算层都继承以太坊,每个链有对应的 Rollup 负责执行层。
目前研究下来,对于分片的技术难度这一部分公开资料较少,以太坊基金会认为需要未来几年的时间完成完全的分片。
Dencun 硬分叉已经确定将在 2024 年 3 月 13 日,具体对于 Gas fee 的降低和 TPS 的提升大致就可以有了结论。
坎昆升级最重要的就是加入了一种新的交易模式 Blob。
Blob 的一些特点:
一个交易 2 个 Blob, 258 kb
一个 block 最大可以有 16 个 blob, 2 mb,但是以太坊有一个 gas fee 基准线,大于 1 mb 的时候,这会导致下一个区块链费率上升;理想状态是 8 个 blob,即 1 mb
Blob 安全性等同于L1,因为也是全节点存储和更新
30 天后会自动删除
Blob 用 KZG Hashmmitment 作为 Hash,用于数据验证,类似 Merkle。理解为就是一个下载证明状态的
缓存空间占据网络资源相对较少,通过以太坊基金会通过 EIP-1559 (对不同类型的交易分开 gas fee)为 blob 设了一个相对较低的 Gas fee Blob 可以理解为在以太坊每个区块上外挂几个缓存包,交易数据都存到里面供全节点验证和挑战,然后 30 天后就会消失,最后传一个 KSG 证明它被验证并达成共识了。
数据来源:https://etherscan.io/chart/blocksize
如何理解?
一个区块现在是 150 kb 左右,一个 Blob 128 kb, 8 个 blob 大概 1 M 的空间,扩大了 6、 7 倍,此外 gas fee 通过 EIP-1559 降低;单笔交易要上传的交易数据变少,单个区块承载交易数量变多,最终达成了 TPS 上升和 gas fee 降低。
KZG 证明(KZG Commitments)
KZG 证明和默克尔树(记录以太坊的状态)有点像,是记录交易数据的状态。
KZG 多项式承诺(KZG Polynomial Commitment)也被称为卡特多项式承诺方案,是 Kate,Zaverucha 和 Goldberg 一起发表的。在一个多项式方案中,证明者计算一个多项式的承诺,并可以在多项式的任意一点进行打开,该承诺方案能证明多项式在特定位置的值与指定的值一致。
FRI 是 Starkware 采用的多项式承诺方案,可以实现量子级别的安全,但证明的数据量却是最大;IPA 是 Bulletproof 和 Halo 2 零知识算法默认的多项式承诺方案,验证时间相对较长,采用的项目有门罗币,zcash 等,前两者是不需要初始可信设置的。
在证明大小与验证时间上,KZG 多项式承诺的优势比较大,KZG 承诺也是目前应用最广的一种多项式承诺方式。
流程前后的变化 Rollup 原本要将打包压缩好的交易:最重要的就是原本占空间比较大的交易数据,变成了一个空间占比很小、验证时间很快的 KSG 证明。
以下引自:https://twitter.com/0x Ning 0x/status/1758473103930482783
坎昆升级之后 以太坊L2的 Gas 费真的会降低 10 倍以上吗?
如今的市场有一个共识:在坎昆升级之后,以太坊L2的平均 Gas 费将降低 10 倍甚至更高。
在坎昆升级的核心协议 EIP 4844 的部署之后,以太坊主网将新增 3 个专门保存L2交易和状态数据的 Blob 空间,且这些 Blob 拥有独立的 Gas Fee 市场。预计 1 个 Blob 空间存储的状态数据最大规模约等于 1 个主网区块,即~ 1.77 M。
目前以太坊主网每日 Gas 消耗为 107.9 b,其 Rollup L2们的 Gas 消耗占比~ 10% 。
根据经济学的供需曲线:
价格=需求总量/供给总量,
假设坎昆升级之后 Rollup L2们 Gas 需求总量不变,而以太坊可以出售给L2的区块空间从现在 1 个区块的~ 10% 变成 3 个完整的 Blob 区块,这相当于区块空间的供应总量扩展了 30 倍,那么 Gas 的价格将降低为原来的 1/30 。
但这个结论并不靠谱,因为其预设太多线性关系假设,并且抽象掉了太多应该纳入计算和考量的细节因素,特别是 Rollup L2们之间对 Blob 空间的竞争与博弈策略对 Gas 价格的影响。
Rollup L2们的 Gas 费消耗,主要由数据可用性保存费用(状态数据保存费)+数据可用性验证费用两部分组成。其中数据可用性保存费用,目前占比高达~ 90% 。
坎昆升级之后,对于 Rollup L2们来说,新增的 3 个 Blob 区块,相当于新增的 3 块公地。按照科斯的公地理论,在以太坊 Blob 空间完全自由竞争的市场环境下,大概率会出现目前处于领先地位的头部 Rollup L2们滥用 Blob 空间的现象。这样可以一方面确保他们的市场地位,另一个方面可以挤压竞争对手的生存空间。
下图是 5 家 Rollup L2 1 年的利润统计情况,可以发现他们月度利润规模呈现明显季节性变化特征,而没有明显的整体增长趋势。
在这样一个有天花板限制的内卷市场,Rollup L2们处于一直高度紧张的零和博弈状态,对开发者、资金、用户和 Dapp 进行着激烈竞争。坎昆升级之后,他们激烈竞争的对象,又多了 3 块新增的 Blob 空间。
在“肉就这么多,别人多吃一口,你就少吃一口”的市场情况,Rollup L2们之间很难帕累托最优的理想局面。
那处于领先地位的头部 Rollup L2们,将如何滥用 Blob 空间呢?
个人猜测,头部 Rollup L2们将修改序列器(Sequencer)的 Batch 频次,将现在几分钟 1 次的 Batch 缩短到~ 12 秒 1 次,与以太坊主网出块速度保持同步。这样既可以提升自家L2上交易的快速确认性,还可以占据更多的 Blob 空间以压制竞争对手。
在这种竞争策略下,Rollup L2们的 Gas 费消耗结构中验证费用和 Batch 费用将激增。这将限制新增的 Blob 空间对L2 Gas 费降低的积极影响。
结果如上图所示,当 Blob 空间增加对L2 Gas 费降低的积极影响,会边际递减。而且达到某个阈值之后,将几乎失效。
基于以上分析,个人判断坎昆升级之后以太坊L2的 Gas 费将有所下降,但下降幅度会不及市场预期。
以上。抛砖引玉,期待更多讨论。
Celestia 为其他 Layer 1、Layer 2 提供可接入的数据可用层和共识,基于 Cosmos Tendermint 共识及 Cosmos SDK 构建。
Celestia 是 Layer 1 协议,兼容 EVM 链及 Cosmos 应用链,未来将支持所有类型的 Rollup,这些链可直接使用 Celestia 作为数据可用层,区块数据将通过 Celestia 存储、调用、校验,再回到自有协议清算。
Celestia 也支持原生 Rollup,可直接在其上构建 Layer 2 ,但不支持智能合约,所以无法直接构建 dApp。
Mustafa Al-Bassam — 联合创始人兼 CEO,伦敦国王学院计算机科学学士学位,伦敦大学学院计算机科学博士学位。Al-Bassam 16 时就是著名黑客组织 LulzSec 的创始人兼核心成员,并且长期从事黑客活动。2018 年 8 月,Al-Bassam 参与创办了区块链拓展研究团队 Chainspace, 2019 年该团队被 Facebook 收购。
19 年 5 月,发表了《LazyLedger》论文,并于同年 9 月创办了 LazyLedger(后改名 Celestia),担任 CEO 至今。
2021 年 3 月 3 日种子轮融资 150 万美元,资方包括 Binance Labs 等。
2021 年 6 月 15 日更新为 Celestia,并发布最小可行性产品,一个数据可用性采样轻客户端;2021 年 12 月 14 日开发网上线;2022 年 5 月 25 日,Mamaki 测试网上线
2022 年 8 月 3 日推出 Sovereign rollup 方案 Optimint
2022 年 10 月 19 日融资 5, 500 万美元,Bain Capital 和 Polychain Capital 领投,Placeholder、Galaxy、Delphi Digital、Blockchain Capital、Spartan Group、Jump Crypto 等参投。
2022 年 12 月 15 日推出新开发测试网 Arabica 和测试网 Mocha。
2023 年 2 月 21 日推出模块化 Rollup 框架 Rolkit。
2023 年 2 月 28 日推出激励测试网嘉华 Blockspace Race;7 月 5 日推出新测试网 Oolong。
2023 年 9 月 26 日发布治理代币 TIA。
Celestia 主要包含三个组件; Optimint、Celestia-app 和 Celestia-node。
Celestia-node 组件的任务是为此区块链达成共识和联网。 该组件确定轻节点和完整节点如何生成新区块、从区块中采样数据以及同步新区块和区块头。
使用 Optimint,Cosmos Zone 作为 Rollup 直接部署在 Celestia 上。Rollup 将交易收集到区块中,然后将它们发布到 Celestia 以获得数据可用性和共识,链的状态机位于 Celestia 应用程序中,它是处理交易处理和质押的应用程序。
在 Optimint 上,将在同步区块、数据可用性层集成、通用工具和索引事务方面进行改进。 在 Celestia 应用程序中,团队将致力于交易费用的实施,并评估对 ABCI++ 的升级。 最后,该团队希望使其网络服务在 Celestia 节点上更加健壮,并完善轻节点和不良编码欺诈证明。
如何与 Rollup 交互?
Celestia 把 Rollup 分成了自己原生的,和以太坊原生的。前者非常简单,Rollup 可以直接和 Celestia 打交道,先上传数据,然后让 Celestia 查看数据可用性,最后 Rollup 在看到新状态之后再去自己做验证,整个过程里 Celestia 可以说十分清闲,它甚至连 Rollup 上传的数据代表了什么都不知道(因为只有切片样本),而 Rollup 找它来做数据可用性,也只是因为它更便宜,性能更好。
交互案例:
有一个堆栈,其中执行层不直接将块数据发布到结算层,而是直接发布到 Celestia。在这种情况下,执行层只需将其块头发布到结算层,然后结算层将检查某个块的所有数据是否包含在 DA 层中。这是通过结算层上的合约完成的,该合约从 Celestia 接收交易数据的 Merkle 树。这就是我们所说的数据证明。
而在以太坊当中,情况就复杂了一些,首先以太坊目前还没有分片和 DAS,但 Rollup 们即便承受不住链上处理成本,也可以转战链下,让业内名气最大的第三方审计机构做数据可用性,这成本甚至可以低到忽略不计。事实上,ZK 2.0 已经在这么做了,StarkEx 和 Plasma 这类更不用提。当然在 Celestia 看来,链下验证毕竟是中心化的,不能排除作恶的可能。可即便是这些机构作恶,这些链下验证者能做的也仅仅是把交易冻结住一段时间。
ZK 2.0 的计划是为用户提供更多选择,如果用户能忍受高成本,就是还是把数据可用性放到以太坊上做,如果用户能接受交易在最坏情况下被冻结的假设,那 ZK 2.0 可以给一个超低 gas 出来。
整体架构
Celestia 将作为模块化堆栈中运行的所有各种类型的 rollup 之间的共享共识和数据可用性层。结算层的存在是为了促进其上各个 rollup 之间的桥接和流动性。还可能会看到主权汇总独立运作,没有结算层。
其 DA 层的两个关键功能是数据可用性采样(data availability sampling ,DAS) 和命名空间默克尔树(Namespaced Merkle trees,NMT)。
DAS 使轻节点无需下载整个区块的情况下能够验证数据可用性。轻节点因仅下载区块头无法验证数据可用性,Celestia 使用二维 RS 纠删码编码方案(2-dimensional Reed-Solomon encoding scheme)对区块数据进行重新编码以实现轻节点的 DAS。数据可用性采样(DAS)的工作原理是让轻节点对小部分块数据进行多轮随机采样。随着轻节点完成更多轮的块数据采样增加数据可用的信心。一旦轻节点成功达到预定的置信水平(例如 99 %)就认为数据可用。
NMT 使 Celestia 上的执行层和结算层仅下载与其相关的交易。Celestia 将区块当中的数据划分为多个命名空间,每个命名空间都对应构建在 Celestia 上的 rollup 等应用,每个应用仅需下载和自己相关的数据从而提高网络效率。
Celestia 可以轻节点进行验证,我们都知道节点越多,网络越安全;轻节点还有优势就是节点越多,网络速度越快,成本越低等好处。
Celestia 通过主要通过数据可用性和纠删码识别隐瞒交易数据的区块,同时也是 Celestia 能够降低成本的关键。
3.3.1 数据可用性采样(Data Availability Sampling,DAS)和纠删码(Erasure Coding)
该技术方案解决数据可用性的验证问题,使得 Celestia 可以轻节点验证。
同时使得 Celestia 的成本是亚线性的。
一般来讲,区块链网络中的轻节点仅会下载包含区块数据(即交易列表)承诺(即默克尔根)的区块头,这使得轻节点无法知晓区块数据的实际内容,从而无法验证数据可用性。
但是在应用**二维 RS 纠删码编码方案(2-dimensional Reed-Solomon encoding scheme)**之后,利用轻节点进行数据可用性抽样成为了可能:
首先每个块的数据将被分成 kk 的块,排列在 kk 的矩阵当中,然后通过多次应用 RS 纠删码就可以将这样一个包含区块数据的 kk 的矩阵扩展成为一个 2 k 2 k 的矩阵。
然后 Celestia 将为这个 2 k* 2 k 的矩阵的行和列计算出 4 k 个单独的默克尔根作为区块头当中的区块数据承诺。
最后在验证数据可用性的过程当中,Celestia 的轻节点将对 2 k* 2 k 的数据块进行采样,每个轻节点会在这个矩阵当中随机选择一组唯一坐标,并在全节点中查询该数据块内容以及坐标处对应的默克尔证明,若节点收到了每个采样查询的有效响应,则证明了该区块大概率具备数据可用性。
此外,每个收到正确默克尔根证明的数据块都会被传播到网络当中,因此只要轻节点能够一起采样足够的数据块(即至少 k*k 个独特的数据块),完整的区块数据就可以由诚实的全节点来进行恢复。
二维 RS 纠删码编码方案
数据可用性抽样的实现,保证了 Celestia 作为数据可用性层的可拓展性。因为每个轻节点将仅需采样区块数据的一部分,这降低了轻节点和整个网络运行的成本。同时参与采样的轻节点越多,他们可以共同下载和存储的数据就越多,而这意味着整个网络的 TPS 也将随着轻节点数量的增加而提高。
通过轻节点实现可扩展性
更多轻节点参与数据可用性采样,网络可以处理的数据就越多。这种可扩展性特征对于网络增长时保持效率至关重要。
可扩展性的决定性因素有两个:集中采样的数据量(可以采样的数据量)和轻节点目标块头大小(轻节点的块头大小直接影响整体网络的性能和可扩展性)。
针对以上两个因素,Celestia 利用集体采样的原理,即通过许多节点参与数据的部分采样,可以支持更大的数据块(即更高的每秒交易处理量,tps)。这种方法可以在不牺牲安全性的情况下扩展网络容量。此外,在 Celestia 系统中,轻节点的块头大小与块的大小的平方根成正比增长。这意味着,如果要保持与全节点几乎相同的安全性,轻节点将面临与块大小的平方根成比例的带宽成本。
Rollup 验证区块的成本增长为线性,成本会随以太坊交互需求情况,上升会下降。
而 Celestia 的成本则是亚线性,成本最终会趋近于一个值,一个远低于以太坊现有成本的值。在 EIP-4844 升级部署后,Rollup 数据存储会从 Calldata 变为 Blob,费用降低,但仍旧比 Celestia 贵。
此外,纠删码的特性,使得万一 Celestia 全节点发生大规模故障,轻节点们手中的若干枝干数据,可恢复交易数据,确保数据仍可访问。
3.3.2 命名空间默克尔树(Name-Spaced Merkle Tree)
该技术方案降低执行层和结算层的成本。
简单理解 Celestia 通过命名空间默克尔树排序,可以使得使得 Celestia 上的任何 rollup 都只能下载与其链相关的数据,而忽略其他 rollup 的数据。
命名空间默克尔树 (NMT) 使汇总节点能够检索它们查询的所有汇总数据,而无需解析整个 Celestia 或汇总链。此外,它们还允许验证节点证明所有数据已正确包含在 Celestia 中。
Celestia 将区块当中的数据划分为了多个命名空间,每个命名空间都对应着正在使用 Celestia 作为数据可用性层的执行层和结算层,这样每个执行层和结算层仅需下载和自己相关的数据就能够实现网络的功能。形象点说,就是 Celestia 为每个使用它作为底层的用户都建了一个单独文件夹,然后使用默克尔树来为这些用户做文件夹索引来帮助这些用户找到并且使用自己的文件。
而这种能够返回给定命名空间所有数据的默克尔树就被称作命名空间默克尔树。这株默克尔树的叶子将按照命名空间标识符来进行排序,并且修改了哈希函数,以便树上的每一个节点都包含着其所有后代的命名空间范围。
命名空间默克尔树示例
当中的命名空间默克尔树示例来看,包含八个数据块的默克尔树被划分为了 3 个命名空间。
当命名空间 2 的数据被请求时,数据可用性层,也就是 Celestia 将会把 D 3 ,D 4 ,D5和 D 6 数据块提交给他,并且让节点 N 2 ,N 7 和 N 8 来提交相应的证明,从而来保证所请求数据的数据可用性。此外应用程序也可以来验证是否收到了命名空间 2 的所有数据,因为数据块必须和节点的证明相对应,其可以通过检查对应节点的命名空间范围来识别数据的完整性。 当中的命名空间默克尔树示例来看,包含八个数据块的默克尔树被划分为了 3 个命名空间。
当命名空间 2 的数据被请求时,数据可用性层,也就是 Celestia 将会把 D 3 ,D 4 ,D5和 D 6 数据块提交给他,并且让节点 N 2 ,N 7 和 N 8 来提交相应的证明,从而来保证所请求数据的数据可用性。此外应用程序也可以来验证是否收到了命名空间 2 的所有数据,因为数据块必须和节点的证明相对应,其可以通过检查对应节点的命名空间范围来识别数据的完整性。
3.3.3 Sovereign Rollup
基于 Celestia 的 Rollup 基本都算是 Sovereign Rollup。
定义:只把材料上传到L1(把L1当作数据库)的 Rollup 叫做 Sovereign Rollup。换句话说,传统 Rollup 是只负责执行,结算、共识、数据可用性都交给L1,Sovereign Rollup 是组分执行、结算,将共识、数据可用性将给L1。
优势——升级自由
由于和 Layer 1 没有互通讯息或者资产,所以 Rollup 不会受L1的影响(例如L1的升级或者被攻击),同时自身的拓展和升级也不再用顾虑L1(例如,硬分叉)
劣势——安全成本
有更高的安全风险,例如 DA 层偷懒
此外,Sovereign Rollup 的成本更低,采纳轻节点验证(上一部分刚讲)
以下部分具体参考:An introduction to sovereign rollups,一文了解 Rollup 的分类
智能合约 rollup
像 Arbitrum、Optimism、StarkNet 等 Layer 2 我们称之为智能合约 rollup,他们将所有的区块数据都发布到结算层(像以太坊),把L2的状态(L2各地址的余额)写到L1上。结算层的任务就是给区块排序、检查数据可用性、验证交易正确性。
例如以太坊:模块化栈、智能合约 rollup 的职责是执行,然后将其他的工作卸给以太坊(包括共识、数据可用性、结算)。
这样做的目的是L2 和 L1 就能互通讯息、互通资产:L1/L2 的 dApp 能同步讯息并合作、L1 的 ETH 能安全地在 L1/L2 之间流转、L2 的 ARB/OP 也能安全地在 L1/L2 之间流转。
智能合约 rollup 依赖于在结算层的合约从而验。结算层上的智能合约成为了验证 smart contrct rollup 上新交易正确性的依据。
因此智能合约 rollup 与结算层有最小程度的信任。
Sovereign rollup
Sovereign Rollup 便是拿掉 Settlement Layer(或是说将自己变成 Settlement Layer),单纯将 L1 作为 Data Availability Layer 使用。
Sovereign rollup 将交易发布另一条公链上,这条链负责 DA 和排序,然后自己掌握结算层。
所以 sovereign rollup 取决于链本身的正确性,而不是 DA 层,因此需要有更强的信任。
对比
验证方式不同:智能合约 rollup 的交易是通过结算层的智能合约进行验证;Sovereign rollup 的交易是通过自身的节点进行验证。
具有升级的主权:智能合约 rollup 的升级取决于结算层的智能合约,升级 Rollup 需要更改智能合约(Arbitrium 的升级需要依赖于以太坊智能合约的迭代),团队用多签控制升级是很常见,因此束缚很多。
L1本身能力有限:可能 L1 本身不支援复杂的运算来做到纪录 Rollup 状态并利用这个状态进行讯息资产的互通等功能,例如像是在 Celestia 上只能单纯放资料上去,或像是在 Bitcoin 上只能进行能力有限的运算,这样的 L1 也就没办法成为 Settlement Layer;或许该 Rollup 本身就不需要另外一条链来作为 Settlement Layer,它有自己的原生代币、生态,不需和 L1 互通资产。
拓展-Sovereign Rollup 运作方式,为什么硬分叉等升级更加便利
Sovereign Rollup 单纯将 L1 作为 Data Availability Layer,把资料上传到 L1,仰赖 L1 确保资料可得且资料排序不会改变。
图片来源:https://www.maven11.com/publication/the-modular-world
Sovereign Rollup 的节点则靠著读取 L1 上的资料并进行解读,来算出该 Sovereign Rollup 当前的最新状态(智能合约 Rollup 可以直接获得状态)。「解读、算出」代表的其实就是 Sovereign Rollup 的共识规则。(State Transition Function:怎么从 L1 资料中筛选出符合该 Sovereign Rollup 格式、规则的区块和交易、筛选后怎么验证这些区块和交易、验证后怎么执行这些交易来算出最新的状态。)
Sovereign Rollup 节点从 L1 资料中筛选出自己的区块,并解读、算出最新状态
如果两个 Sovereign Rollup 的节点是不同版本,就可能会解读出不同资料、或是算出不同的最新状态,也因此这两个节点就不会在同一条链上,它们各自所看到的其实就是两条分岔的链的其中一条。(例如:以太坊硬分叉前和后成为了 ETC 和 ETH)
不同版本的节点可能会得到不同的状态,也就分岔到不同的链上
这其实就和你跑不同版本的 Ethereum 节点一样,两个版本有可能不会是同一条链。例如硬分叉后,忘记更新节点版本、不愿意更新节点版本的人就会自然地留在原本的链上(例如 ETC、ETHPoW),而更新节点版本的人就会在新的链上(ETH)。
因此,Sovereign Rollup 中大家可以各自按照自己群体的(社会)共识,去选择节点版本、去解读资料。如果今天该 Sovereign Rollup 社群出现像是 ETHPoW v.s. ETH 的分歧,那就是大家各走各的,选择不同的节点版本去解读资料,但资料还是原本那一份,没有改变过。
当然分叉后,各自版本的节点就会上传符合自己规则的资料到 L1,届时两边都会直接过滤掉对方上传的资料。
在中间的时间点下面的节点分岔到了 v1.1.2 版,之后彼此的区块就完全区分开来。
3.3.4 节点要求
受益于 Celestia 的网络架构,Celestia 的轻节点运营硬件要求较低,最低仅需配置一个 2 GB RAM 的内存,单核的 CPU,超过 25 GB 的 SSD 硬盘以及上传下载 56 Kbps 的带宽。除了轻节点以外,Celestia 的桥节点,全节点,验证节点以及共识节点的要求相较于其他公链来讲也不算高。因此未来 Celestia 主网上线后,预计网络的各类型节点数量将进一步上升,网络的去中心化程度也将得到进一步的提升。
从代币经济学来看,Celestia 的代币分配投资人和团队将分得超过一半的代币,且这些代币当中的 33% 将在一年以后得以解锁。
Celestia 的代币需求基本符合一个正常的公链代币的设计思路,TIA 将承担共识,费用和治理的职能,同时以通胀的形式增发。
目前看起来这种代币的设计较为中性,代币本身无法为网络提供更多的赋能。
Celestia 主要通过两种方式获得收入:
支付 blob space 费用:Rollup 使用$TIA 付费,将数据发布到 Celestia 的 blob space。
支付 gas 费用:开发人员使用 TIA 作为 Rollup 的 gas 代币,类似于基于以太坊 Rollup 的 ETH。
Numia Data 最近发布了一篇名为《The impact of Celestia’s modular DA layer on Ethereum L2s: a first look》的报告,其中比较了过去六个月内,不同 Layer 2 (L2) 解决方案在以太坊上发布 CallData 所产生的成本,以及假如它们使用 Celestia 作为数据可用性(DA)层可能产生的成本(在此计算中,将 TIA 价格假设为 12 美元)。这份报告通过比较这两种情况下的成本差异,明显展示了像 Celestia 这样的专用 DA 层对于降低 L2 Gas 费用的巨大经济效益。
Rollup 成本拆解:
固定成本
证明成本(在 zk rollups 的情况下)= Gas 范围,通常基于 rollup 提供商
状态写入成本 = 20, 000 Gas
以太坊基础交易成本 = 21, 000 Gas
可变成本
将 calldata 发布到以太坊的每笔交易的 Gas 费用 =(每字节数据 16 Gas)*(平均交易大小(以字节为单位))
L2 Gas 费=通常相当便宜,在 Gas 单位的一小部分范围内。
数据来源:https://medium.com/@numia.data/the-impact-of-celestias-modular-da-layer-on-ethereum-l2s-a-first-look-8321 bd 41 ff 25
Celestia = Tendermint (cosmos) + 2d 纠删码 + 欺诈证明 + Namespace merkle tree + IPFS 基础设施(数据存储用的 IPFS Blockstore,传输网络用的 IPFS 的 Lib p2p 与 bitswap,数据模型用的 IPFS 的 Ipld)
Polygon Avail = Substrate(Polkadot) + 2d 纠删码 + KZG 多项式承诺 + IPFS 基础设施
ETHprotoDankSharding = Blobs 数据(数据可用性的存储,替换现有的 calldata)+ 2d 纠删码 + KZG 多项式承诺(未定,方案目前仍在讨论)+ ETH 基础设施
整体看下来 Celestia 非常注重可扩展性、可交互性和灵活性。以太坊像一家庞大的上市公司,无法做到像 Celestia 这种初创企业的随心所欲,只能如履薄冰,缓慢的迭代;而模块化区块链给了很多垂类项目后来者居上的机会。
但是和很多公链一样,目前加密世界的创新属于停滞的一种状态,绝大多数项目方都依赖于经济模型,或许对于产品底层的性能如何需求不够,导致大家对于 Celestia 没有足够需要,自身经济模型无法正向循环也是潜在的风险,最终成为个鬼链。
附录
https://mirror.xyz/0x1c4ff7B151009a2C2B92BF60F91b5b836d1586A6/_VqqbsalP4lg3VSIsAnCnxmJy7yWXZvfp4TbfTPCC-c
https://celestia.org/learn/sovereign-rollups/an-introduction/
From the Earth to the Moon
E2M Research 聚焦投资和数字货币领域的研究与学习。
文章合集 :https://mirror.xyz/0x80894DE3D9110De7fd55885C83DeB3622503D13B
关注推特 :https://twitter.com/E2mResearch️
音频播客:https://e2m-research.castos.com/
小宇宙链接:https://www.xiaoyuzhoufm.com/podcast/6499969a932f350aae20ec6d
DC链接:https://discord.gg/WSQBFmP772