本文是Web3公链DA扩展方向 的下半部分,关于DA的概念, DA扩展的叙事方向整体, 请看 Web3公链DA扩展方向(1)
公链模块化由Celestia的创始人Mustafa Al-Bassam提出并推动,他在2018年和V神共同发表了论文《Fraud and Data Availability Proofs》, 提出了DA的概念, 可以将DA层单独拿出来独立维护, 后来Mustafa继续在该方向上坚持,希望将区块链架构进行细化分割,各个模块之间可以拼接组合, 并基于此推出了自己的项目 Celestia.
基于Mustafa的理念,目前一般把链的模块分成:
https://www.aicoin.com/article/296934.html 上图的一个拆分解释
关于共识和结算层为什么要分开,却可能看起来一起完成的理解:
现在的业务形态确认一个rollup高度需要两个东西,一个是状态有效被以太坊共识,经过了去中心化验证,第二个是数据已记录被以太坊共识了,数据存了下来可用(DA)。 模块化中这两个部分被分开来看了,看起来二者都是需要的才可以成立。 如果只是数据放链下,状态根放以太坊,那状态还是可以保证正确的,只是丢了数据恢复不了,这是validium; 在celestia场景下,共识看起来下层到DA去了,基于一个前提就是rollup这种数据被DA共识了,实际上状态也被共识了,因为状态都可以根据数据恢复出来(事实上所有公链的共识和DA都是同步一起的)。 至于状态正不正确,就是结算层的事情了,可以在结算层在组织欺诈挑战或zk验证等。 而现有的以太坊上的rollup模式,共识层和结算层实际上一起做了。 所以看起来要么共识和DA在一起,以DA为主, 要么共识和结算在一起,以结算为主。 但实际上DA可以单独拿出来放到链下某个地方,所以DA和共识得分开。 结算可以自己做而不和共识一起做, 比如只把状态根发布到以太坊, 但对不对由业务节点自己去验证结算,如果不对就通过某种方式去以太坊回滚状态(如polygon),当以太坊上的合约不具有欺诈挑战和验证ZKproof的能力时,结算层就在上面一层,而共识层仍然保持在以太坊中,同时DA可以在其他别的地方, 所以共识和结算也得分开。
结算,DA,共识的意义简单区别:
可扩展性为什么原本存在问题,模块化(DA)解决了一个什么问题?
区块链领域的可扩展性瓶颈被称为状态膨胀(state bloat)。在原有的验证方式下,轻节点只能部分跟踪区块头,无法完整地验证链的正确性,只有性能更好的全节点拥有这个能力。
随着更多交易的发生,区块链的状态(执行交易所需的信息)会增长,对带宽以及计算力要求也越大,对节点性能要求增加,也就导致符合条件的节点越来越少,少数全节点成了网络的中心,全节点串通作恶的可能性变大,给网络带来中心化风险,安全性变差。
欺诈证明和有效性证明(包括merkle root,rollup的proof等)降低了可扩展性瓶颈, 让轻节点可以验证部分交易的存在,但没有解决验证交易“不存在”, 共识节点恶意不提供部分交易数据等问题。这里就指向了“数据可用性”。
数据可用性是轻节点可以利用欺诈证明和有效性证明等加入网络并完全验证已保证网络安全的前提条件。
(1) 智能合约Rollup (Smart contract rollup)
是当前Rollup的组织形态,即DA和共识在以太坊交易和信标链共识上完成, 数据的验证和挑战(结算)在合约里完成。
智能合约rollup的升级(或分叉)权限归属于智能合约本身的升级。
(2) 主权Rollup(Sovereign Rollup)
在模块化堆栈的背景下,主权rollup负责执行和结算,而 DA 层处理共识和数据可用性。DA 层不验证主权rollup的交易是否正确,而是由外部验证主权Rollup的节点负责验证新交易是否正确。
这样一来,rollup只是一来数据存放在DA,其他的行为都可以自己控制,就好像获得了"国家主权",基于此,主权rollup的升级和L1链的分叉升级一样,对于主权rollup,通过分叉升级是标准的,并允许用户(节点)选择加入或退出升级。
主权rollup的另一个核心点在于,可以由轻客户端来进行自主验证全节点的数据。(即我自己可以决定状态对不对,至于我怎么决定,可以让客户端自己验证决定,也可以再交给一个团体等,总之我拥有决定最后验证和确定状态的主权,而不是以太坊, 更多理解看下文)
关于主权rollup的形态和流程,下文Celestia项目介绍中可以更深刻理解。
(3) 结算Rollup(Settlement Rollup)
有专门结算层的rollup, 这样rollup不需要直接和DA层(Celestia)发生接触。结算Rollup如果对于结算层可控,也可以算成主权rollup的一种。
如果rollup希望更加轻量级一些,就让结算逻辑给一些通用结算项目来做, 因为ZK验证和OP挑战的逻辑都是通用的, 多个Rollup的结算逻辑放在一个地方也可以更好地节省成本。
(1) Celestia概念
首先Celestia是一个Tendermint-Based PoS公链, 有自己的节点和代币。 其次它提供模块化区块链服务,主要提供 “与执行解耦的共识服务” 和 “数据可用性服务” 两种服务给其他rollup使用。
Celestia提出了一个关键的概念:
L1不需要验证交易数据和ZK证明等来证明来保证rollup的安全。
这是本部分最关键的概念,只有理解才能区分模块化设计的意义。
客户端结算: 现在ZK和OP的状态确认和挑战,都在Rollup合约里完成,即在链上合约结算。 但不在合约里挑战行不行? 可以, 因为数据DA已经保证了, 不需要合约里确认,客户端也可以去确认,不管谁确认,确认的结果都是一致的, 那谁用rollup,谁就根据DA的数据去确认rollup状态和高度, 然后决定是否继续使用他,发现错了怎么挑战他等等。比如ZK rollup一直发数据到以太坊,但是合约没验证, 某一个高度H的ZK proof错了,那么这个ZK继续发数据到以太坊也没用, 因为使用者都发现H的数据错了,不会认可后面的数据。
第三方结算: 让rollup质押一些资产到一个单独链, 专门高速地做结算(下文CEVMOS方案),相当于把当前以太坊上rollup合约的验证和挑战部分搬到了另一个链,可以在这个链做惩罚Slush等。
由此可以理解,结算层为什么可以分开来运行。同时DA确实可以放链下, 而链上的共识就只需要做一件事,去中心化共识一下最新DA的根。而执行一直是Rollup独立做的,自然可以灵活改变。
这样,DA,共识, 结算, 执行都明确的分开了, 且逻辑上可以分开, 这才是模块化生态的项目认可的他们的创业切入的机会。
只要L1能够提供交易的顺序和数据可用性,rollup节点(或者是客户端)本身就可以确定哪些交易是有效的。 这就是模块化区块链概念中的主权rollup(Sovereign Rollup)模式
(2)怎么使用Celestia, 以ZK Rollup为例:
假设产生了一笔交易改变状态,rollup排序器执行该交易,并将更新的状态根和ZK Proof一起发布到Celestia。
Celestia并不执行或验证这个证明(也没有智能合约)。它只是把证明放到Celestia区块链的一个区块中。
Rollup节点或客户端从Celestia读取数据,并看到一个新的状态根和已发布的证明。
Rollup节点或客户端验证ZK证明,然后更新自己的状态,如果ZK证明不正确,就忽略这一笔数据不更新自己的状态。
以太坊和Celestia上的ZK rollup都会向L1发布状态根、ZK证明和个别交易(为了数据可用性)。在以太坊,L1验证zk证明。
在Celestia,L1将证明验证留给rollup的节点。
Celestia提供了发布数据以及给rollup数据提供安全性的能力。
(3)Celestia的模式和服务带来什么好处、优势?
模块化的优势,提供主权rollup能力, 低价的rollup数据空间;
不做执行,不感知数据有效性,提供执行层的自主创新;
提供稳定的DA空间价格,L1上的网络峰谷,不影响不同行业领域rollup的实时价格,而是由该rollup本身的业务热度决定;
由于rollup共享DA, rollup之间可以建立最小信任的桥;
轻节点+Cosmos SDK高效部署 ;
CEO Mustafa 是伦敦大学计算机科学的博士,专业研究区块链扩容问题。他曾联合创立了区块链扩容平台 Chainspace,后被 Facebook 收购。他也是欺诈证明的发明者,曾于 2018 年作为第一作者与 Vitalik 发表论文《欺诈与数据可用性证明》。
CTO Ismail 曾在 Tendermint(Cosmos 母公司)、Interchain Foundation、Google 等公司担任软件工程师,具有丰富的区块链技术经验。CRO John 是多伦多大学计算机工程的博士,曾担任 ConsenSys 的研究员和工程师,后来联合创立了 Optimistic Rollup 解决方案 Fuel Labs。COO Nick 拥有斯坦福大学的硕士学位,此前曾是公链 Harmony 的联合创始人。
时间节点:
2019.05 LazyLedger白皮书发布 2021.03.04 LazyLedger Labs完成150万美元种子轮融资,计划年底启动测试网 2021.06.15 LazyLedger更名Celestia 2022.05.25 Celestia启动其首个测试网Mamaki 2022.10.20 Celestia完成5500万美元融资,Polychain Capital等领投 2023.03.15 Celestia测试网Blockspace Race上线,区块浏览器已启动 2023.05.12 Celestia:Quantum Gravity Bridge初期版本已上线Blockspace Race测试网 官网预计2023主网上线,目前还未发行代币
Celestia 的激励测试网计划Blockspace Race, 2023 年 3 月启动,有超过 700 个主动采样轻节点,在支持数据可用性采样方面取得了重大进展, 活动有拥有 1000 名参与者。
生态建设, celestia同样孵化和合作了一些列生态项目,显示在 https://celestia.org/ecosystem/ , 大多数的(除了Fuel?)模块化项目都处于celestia的生态体系内。
https://www.chaincatcher.com/article/2080466 Celestia:模块化区块链的星辰大海
Celestia实现数据可用性层的关键特性有2个,两都是新颖的区块链扩展解决方案:
(1) 数据可用性采样:
一般来说,轻节点只下载包含区块数据(即交易列表)承诺(即 Merkle 根)的区块头。
和Danksharding类似,Celestia也是使用了二维的Reed-Solomon纠删码,对于扩展后每行每列都计算Merkle Root, 然后对于各个Merkle Root又计算一个总的Merkle Root.
为了验证数据是否可用,Celestia 轻节点就对 2k × 2k 数据块进行采样。在数据确实已不可用时(超过(k+1)^2, 或简单理解为1/4),采样到不可用数据对应概率如下:
只要有足够采样次数,就可以保证概率足够低。
此外,每个采样收到的具有正确 Merkle 证明的数据块都会被广播到网络中。因此,只要 Celestia 轻节点一起采样足够的数据块(即至少 k × k 个独特的块),完整的块就可以由诚实的完整节点恢复。
使用DAS的缺点是什么? 1. 恶意节点可以不按照RS编码的方式来生成数据, 2. 生产的块中的数据不是多个共识节点重复保存和生成数据编码而验证的,而是采样验证的(完整数据一开始只在生产数据的节点手上)。 ---> 所以要有Fraud Proof机制, 而采用二维编码的好处是,做证明的时候,只需要下载行或者一列的数据就可以证明。
(2) 命名空间Merkle树(NMT):
Celestia 将块数据划分为多个命名空间,每个命名空间对应使用 DA 层的每个应用程序(主要是Rollup)。这样,每个应用程序只需要下载自己的数据,而可以忽略其他应用程序的数据。
因此使用NMT作为数据组织的结构, NMT 是一棵 Merkle 树,其叶子按名称空间的标识符排序,且其hash算法经过了修改,使树中的每个节点都包含其所有后代的名称空间范围。
理解:
https://github.com/celestiaorg/nmt , 代码中对于hash的修改在于:把每一个节点的 minNamespace和maxNameSpace放入到生成好的hash的前面, 所以每次可以读取出来。
(3) Celestia App 链:
Celestia提供的服务称为Celestia App, 是由Cosmos SDK开发的PoS链,所有的DA交易都是和Celestia App进行交互的, 模块示意如下图:
celestia-core 是Tendermint 共识算法的修改版本,在tendermint的基础上进行了如下变化:
更进一步分析看: https://arxiv.org/abs/1905.09274 2019年Mustafa发表的LazyLedger的论文
(1)提交 PayForBlob
交易。
交易包含包含发送者的身份、可用的数据(也称为message)、数据大小、namespace ID 和签名。
这些交易提交后会被拆分为e-Tx和blob,然后被Celestia虚拟机执行,执行完成后,区块的commitment会被计算并添加到区块头中。(就是上文说的二维RS编码后4K行列的Merkle根的Merkle根)且是按照上文的NMT方式来计算的,方便单个Namespace的读取。
(2) 验证数据可用性
为了方便验证Celestia划分了2个网络:
(1) 共识网络:通过Tendermint P2P链接,执行TBFT协议,节点有限。
(2)DA网络: 通过Libp2p连接(DHT), 里面又分为全节点(Celestia Node)和轻节点(Celestia Light Node), 全节点同步全部数据,轻节点负责同步最新的区块头,然后对数据进行DAS抽样验证。轻节点也可以提交 payForBlob
交易。
如果轻节点出现验证失败,就会忽略当前的区块头,之后再重试(Slash机制未说明)。 只要调整好每个区块的data chunks数量和抽样检验的数量, 就可以充分降低错误确认的可能性,使得区块生产者没有保留区块数据的利益空间。
终极的主权链需要新的rollup在Celestia网络上启动, 这个过程是冷启动的, 所以第一步计划是继续沿用以太坊的安全性来过渡,因此提出类似Validium的Celestium方案,对应开发的具体项目叫 “量子引力桥”(Quantum Gravity Bridge project), 他并不是一个实际意义上的资产跨链桥,主要是开发了去以太坊上验证Celestia上的状态根的能力。
Celestium让rollup状态的验证和确认仍然保持在以太坊上,如上图所示,DA Bridge Contract会验证来自Celestia验证者提供的merkle根和签名,L2 Contract(也就是Rollup Contract),接受rollup的有效性证明,并检查证明对应的数据原文已被DA Bridge Contract所确认。
小结:
这种模式只解耦了DA,最接近当前的Rollup模式,同时保留了以太坊的安全性, 让Rollup开发者可以初步接受DA分离的模式。(或者说提供了一种标准化实现一个自己的Validium的方式)
https://blog.celestia.org/celestiums/
Cevmos 是 Cosmos EVM 应用链 Evmos 与 Celestia 合作共同开发的 rollup 堆栈,旨在成为 Celestia 上基于 EVM rollup 构建的结算层服务。
Cevmos将通过使用Rollkit(以前又叫Opmint, Optimistic Tendermint 的缩写)而不是现有 Cosmos 链上使用的 Tendermint Core 共识引擎来实现为 Celestia rollup。
目前,rollups 使用以太坊主链进行结算。然而,以太坊链并不是 Rollup 的理想结算层,因为它与直接使用该链进行智能合约交易的非 Rollup 应用程序共享。因此,与专门的结算层相比,以太坊链是非专业化的,并且规模较小。
里面又衍生了一个概念叫Recursive rollup (a rollup within a rollup) ,即Cevmos本身也是一个相对于DA层Celestia的Rollup,也就是结算Rollup, 即这个rollup作为其上面的递归rollup的结算层。
Cevmos 上的 rollups 会将他们的数据发布到 Cevmos,然后再将其发布到 Celestia。就像今天的以太坊一样,Cevmos 将作为结算层执行 rollups 证明。Cevmos 的目标是允许以太坊 rollups 在 Celestia 上直接发布,而无需更改其代码库。
另外的恶一个好处就是Cevmos和各种Recursive Rollup之间可以建立最小信任桥,不同rollup之间也可以很方便地互操作一些Proof数据等。
上图中Al-bassem的设计中还包括了从CEVMOS到Cosmos Hub的联通,希望可以打通cosmos生态,这边暂时只是设计,实现以及意义还没有明确。
CEVMOS项目21年开始提出,到目前23年仍然没有很明确的落地消息,进展存疑。
小结:
CEVMOS模式是结算Rollup, 但为了保留以太坊安全性, 成为Recursive-Rollup,即自己做完的结算验证,把一些根再保存在以太坊上, 这样做独立了结算机制,使之可以灵活调整,节约了在以太坊结算的gas成本。 同时对于上级的Rollup开发者来说, 这个结算服务包装了到Celestia的数据DA和到以太坊状态根DA, 结算的问题也解决了, rollup只需要关心出块执行生成证明就好了。
https://forum.celestia.org/t/an-open-modular-stack-for-evm-based-applications-using-celestia-evmos-and-cosmos/89/5 Al-bassem对CEVMOS说明的文章
Celestia基于模块化的思想,提出了关键的概念假设 - Rollup的状态不需要在L1验证。 从而构建了一个提供DA服务的链, 特性包括:
https://celestiachinese.substack.com/p/ff3?utm_source=profile&utm_medium=reader2 Celestia阅读清单
https://www.rootdata.com/zh/Projects/detail/Celestia?k=MTk4NA%3D%3D Celestia 项目数据
模块化概念热火之后,各个层次都出现了模块化探索的项目,我类比开发组件,模块化赛道简单分为两个方向:
由于独立做共识层的价值不大,当前的模块化组件创新主要集中在DA,结算,和执行层。
简单地理解一下每一层做的事:
如果仅论本文讨论的DA赛道而言,当下未来的主要选项为:
主流项目:(KM搬迁表格较难调整格式,故采用Iwiki的截图,下同)
次级、孵化项目:
Optimism没有跟进Validum,而是直接2022年提出了更进一步的OP Stack,。
2023年Coinbase 及 a16z 分贝加入 Optimism 生态,通过OP Stack分别发行了Base链和Magi, 同时2023 年 6 月 6 日的 Bedrock 升级是 OP-Stack 的初始主网版本。。此后还有opBNB、Zora、Worldcoin等众多公链都给予了OP Stack很好的品牌背书。
2023年6 月以来至今,OP Stack 生态扩张势头明显提速——两个半月的时间内,已有 11 个项目新宣布基于 OP Stack 推出相关 L2 网络,占目前 OP Stack 生态全部 19 个项目(不完全统计)的 57%。
作为 Optimism 推出的开源模块化工具包,OP Stack 允许开发者根据自己的需求场景利用 OP Stack 工具包组装一个定制的 Layer2 网络,从而接入以太坊网络并共享资源,也成为今年以来「一键发链 + 模块化」的最大黑马。
为了与OP Stack抗衡, zkSync 团队在2023年06月23发布了zk Credo初版,其中解释了去中心化区块链网路的重要性,更重要的是,推出ZK Stack,其特色与OP Stack 雷同,有着模组化且开源的特性,ZK Stack 也希望可以帮助开发者能够更加弹性的打造自己的“Hyperchain”
每个Hyperchain 都能汇集到zkSync 的生态系当中,从而形成更加完整的网路。zkSync团队也表示将持续优化程式码,目标是要能够让开发者无负担的一键部署Hyperchain。
关键字: 标准化API, Bedrock升级, 超级链概念
OP Stack 可理解为一组开源的软件组件,使任何人都可以使用Optimistic rollups 在以太坊之上构建自己的Layer2 区块链。它将大部分计算和存储移至链外,同时依赖以太坊来确保安全性和最终性,从技术层面来讲,Optimism 主要体现在它切实地为用户节省了大量链上费用。OP Stack由四个主要组件组成:
OP Stack 的最终愿景是构建一个 Optimism Superchain ,将彼此分离的L2整合成一个可互操作的组合系统。OP Stack 也许会使L2的发布像今天在以太坊上部署智能合约一样简单,将 “一键发链”变得像现在“一键发币”一样简单,也许在不久后我们仅仅只需要一键点击就可以发布区块链。
OP Stack 整体是一个六层的结构,每个层级都由一个明确定义的API描述,该API将由该层级对应的模块来填充。
数据可用层
排序层
派生层
执行层
结算层
治理层
理解: 在统一而且开源的开发框架下,各个层级的组件接入都是标准化的形式,可以自由的选择插件,同时由于通信和数据格式的基本统一,还可以享受到方便的跨链通信机制。
下图是Celestia集成进OPStack DA层的示意
https://blog.celestia.org/modular-data-availability-for-the-op-stack/
刚完成的Bedrock升级: 将模块化OP Stack的执行层和证明系统,使其兼容未来的欺诈和有效性证明。
ZK Stack 是一个免费的模块化开源框架,旨在基于zkSync Era 的代码构建定制的 ZK 支持的 L2 和 L3(称为超链)。
ZK Stack 的核心提供了两个关键功能:主权和无缝连接。创建者(您)拥有代码的完整权利,并享有不受限制的自主权来定制和塑造链的各个方面。超链独立运行,仅依赖以太坊 L1 来保证其活跃性和安全性,而超桥网络则促进每个超链的互连,从而实现无需信任、快速(几分钟内)和廉价(单笔交易成本)的互操作性。
特点:
整个DA赛道的核心逻辑:
纠删码+数据可用性采样 → 轻节点、客户端就能够验证数据 → rollup数据DA可以脱离L1 → Rollup的DA扩容,主权机制创新
模块化框架的核心逻辑:
从多链组合(Cosmos等)转向rollup组合;rollup自由选择模块化下的各层组件; 核心与利益回归以太坊;终局形式可能是Rollup全家桶框架的形式(XX Stack)
不可逃避的问题:
Danksharding部分:
https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum The Hitchhiker's Guide to Ethereum - Delphi的重要长篇观点
https://dailyclipper.net/dc/2022/06/06/318944/ 上文的中文翻译
https://medium.com/taipei-ethereum-meetup/rollup-and-the-boost-from-proto-danksharding-85d2fe0566b6 本文引用的Danksharding的一些图来源,但不是很准确
https://medium.com/taipei-ethereum-meetup/rollup-proto-danksharding-implementation-detail-913a3c61fde8 本文引用的Danksharding的一些图来源,但不是很准确
https://notes.ethereum.org/ @hww/workshop_feb_2022 V神等讨论danksharding的材料, 包括dank本身的slice,多数网图出自那个ppt
https://zhuanlan.zhihu.com/p/610737860 解读以太坊路线图
https://cn.cointelegraph.com/news/understanding-the-merge-surge-verge-purge-and-splurge 以太坊合并成功完成,重温以太坊路线图
https://learnblockchain.cn/article/4334 一文读懂以太坊新升级方案Danksharding, 比较简练准确,是对The Hitchhiker's Guide to Ethereum的提炼和补充
https://www.chaincatcher.com/article/2086654 深度解读 EIP-4844:Sharding 的一小步,以太坊扩容的一大步
https://km.woa.com/articles/show/567634 Donner对于Danksharding的总结
KZG数学原理:
https://www.defidaonews.com/article/6784542 详解 KZG 如何应用于 zk-rollup 以及以太坊 DA 方案
rollup's DA部分:
https://www.bitpush.news/articles/2990522 IOSG Weekly Brief |拆解数据可用性层:模块化未来中被忽视的乐高积木
模块化部分:
https://coinmarketcap.com/alexandria/article/what-is-data-availability Mustafa写的关于模块化DA概念的文章
https://volt.capital/blog/modular-blockchains Modular Blockchains: A Deep Dive
https://www.chaincatcher.com/article/2080466 Celestia:模块化区块链的星辰大海
https://www.panewslab.com/zh/articledetails/8903p3w6.html 详解中间件EigenLayer:如何为以太坊提供二次安全保障?
rollup 本身资料:
https://foresightnews.pro/article/detail/11105 rollup完全指南中文翻译版. (原版:)
https://mirror.xyz/0xb9e749FD3802D4A2162320ea7dB5AB8bf66a0AEA/fPdRxx4pFaL7I55scSbctxI7M_nogxJVsSjPS4zm6Zs StarkNet 技术架构和特色生态
OP Stack & ZK Stack
https://www.panewslab.com/zh/articledetails/pe39pb87.html Layer2模块化战争打响:OP Stack VS ZK Stack,谁能成为最后赢家?
https://www.theblockbeats.info/news/44546 Optimism盛宴将至?OP Stack生态项目全览
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。