# Celestia 模块化区块链范式

By [zoie](https://paragraph.com/@zoie) · 2022-04-12

---

### Celestia 基本介绍

Celestia负责共识层和数据可用层，执行层和结算层交给应用程序。

*   直白点来说，Celestia只负责交易排序和交易数据的可用性，并不执行交易。
    
*   交易的执行和验证，以及涉及到的状态维护，都归属于具体的应用程序。
    

利用Celestia部署自己的区块链就跟部署合约一样简单，可以大致包含以下几个步骤

*   将构造好的交易数据发送到celestia网络上，celestia将交易打包
    
*   拉取celestia的区块里，只属于自己账本的交易。（celestia完成交易的排序，并不执行交易
    
*   在自己的执行环境(EVM,WASM,Cosmos-sdk)里执行交易。
    

在模块化区块链中，Celestia负责数据可用层和共识层(交易排序)。执行层和结算层都解耦合给对应的应用程序来做。

![](https://storage.googleapis.com/papyrus_images/9affa5ee154858f8f1a8a8a2de2641ac3b656aa557033b133ea4d3a84f90ee8b.png)

Celestia这样的模块化设计不仅时部署区块链更加方便，也解决了传统区块链的吞吐量受到状态执行的瓶颈。

### 模块化区块链的范式

**传统区块链按照模块化分成，共识层，数据可用层，执行层，结算层**。

无论是通过共识算法的演化，还是像BSC这样的侧链+跨链形式的普及，还是模块化范式的出现，都是为了进一步提高性能。

#### 以太坊模块化堆栈

ETH上的L2，比如Optimtic/Arbitrum，他们定期地将数据提交到ETH上，并且通过欺诈证明等，可以在ETH上验证提交上来的数据。对应到模块化里，OP和ARB负责执行层，以太坊承担以下功能

*   作为Rollup的数据可用层（Rollup定期提交batch tx在以太上
    
*   结算层，在ETH上可以验证Rollup的数据，并提供Rollup之间或者Rollup与ETH上的结算功能
    

除此以外，Arbitrum推出的[AnyTrust](https://medium.com/offchainlabs/introducing-anytrust-chains-cheaper-faster-l2-chains-with-minimal-trust-assumptions-31def59eb8d7)，将数据可用层也从ETH中剥离出来。

#### Celestia模块化堆栈

在Celestia模块中，Celestia链将负责提供数据可用层和共识层。

这里是Celestia+Evmos+Cosmos构建的基于EVM的Rollup模块化堆栈。

![celestia evm rollup](https://storage.googleapis.com/papyrus_images/6e83c36618638c1f0354c129e0f9b5e420915c3ffa5f13f26ae533210fd206cd.png)

celestia evm rollup

*   Evmos Settlement Rollup，使用cosmos-sdk，底层使用 [optimint(ABCI-client implementation for Optimistic Rollup)](https://github.com/celestiaorg/optimint)，而不是Tendermint。optimint与celestia在一个p2p网络中，optimint负责把交易收集到块中发布到Celestis中。Evmos settle rollup支持的是受限可以进行单轮欺诈证明的EVM。
    
*   然后可以将Rollup部署到Evmos结算汇总上，每个Rollup都会有一个与结算Rollup的双向信任的最小化桥，类似于以太坊Rollup。目标是可以重新部署目前存在于以太坊上的相同Rollup合约，因此移植Rollup所需的工作量最少。这意味着Rollup使用结算Rollup上的 calldata，结算Rollup使用 Optimint 对数据进行批处理并将其发布到 Celestia。
    
*   如果要和非EVM Rollup进行通信的话，因为双向信任的最小化桥变得不可用了，就只能借助模块外的桥。
    
*   为了提高安全性，还可以在以太坊上验证Rollup的欺诈证明
    

在Celestia的结算汇总中，可以是EVM，也可以是WASM等。

Celestia提到的共享安全，指的便是例如上图里最底层的EVM Rollup之间共享安全。

#### ETH和Celestia模块化堆栈的对比

这里有一篇[文章](https://foresightnews.pro/article/detail/2036)讲述的是celestia和以太坊在现有模块化上的对比。

![](https://storage.googleapis.com/papyrus_images/d67eeaa63e8e911cde693ca00d1401e68982932bd8cc4bc5c42700f8cba52869.png)

#### 更多的模块化范式

内容比较长，这篇文章讲得比较详细。[http://www.yuanli24.com/news/11132](http://www.yuanli24.com/news/11132)

### devnet网络结构

目前是处于devnet环境。网络中的结构如下图

![](https://storage.googleapis.com/papyrus_images/064d1da8d2c4c24de4cb2466198f13e63fdd38eb9e3b48982b219b7a792798b7.png)

网络中包含以下几个部分

*   **Celestia Core**是状态交互、共识和区块生产层。Celestia Core 基于 [Tendermint Core](https://docs.tendermint.com/)构建，经过修改以存储纠删码块的数据根。
    
*   **Celestia App**基于cosmos-sdk构建，运行应用程序和Pos的逻辑。（用于application的交易不会被我们celestia执行）
    
*   **Celestia Node**通过一个单独的 libp2p 网络对上述内容进行了扩充，该网络服务于数据可用性采样请求和基于NMT的数据检索。
    
*   **Light Node**，采样验证数据可用性，检索Application交易，后续也可提交交易
    
*   目前将celestia blockchain node(绿色)和celestia node(橙色)部分都归于bridge节点的功能。
    

这部分内容以及在devnet启动节点的文档在[这里](https://docs.celestia.org/nodes/bridge-validator-node#install-celestia-node)。

### Celestia 中关键技术

在Celestia的设计中，有点比较关键的是应用程序如何有效&&快速验证/拉取只属于自己账本的交易，首先是使用纠删码(erasure codes)的数据可用性证明(data avalability proofs)。

*   把区块数据进行纠删码编码，只需少量随机块数据样本就足以让轻客户端以高概率验证块的其余部分是否已发布。如果任何全节点检测到可疑情况，他们可以通过数据可用性欺诈证明通知轻客户端。
    
*   实现了以命名空间构建的[merkle tree(NMT)](https://github.com/celestiaorg/celestia-core/blob/master/docs/celestia-architecture/adr-003-application-data-retrieval.md)，应用程序使用namespace可以快速拉取属于自己的交易。
    

其中，

> To make sampling possible over a peer-to-peer network, we made block producers commit to the data in a way that is easy to sample from. Specifically, we wrote an [IPLD](https://ipld.io/#what-is-ipld) plugin and modified IPFS with the goal to create an optimized network from which the light clients can sample data from. IPFS and particularly IPLD seem like a natural fit for this as all data is [content addressable](https://docs.ipfs.io/concepts/content-addressing/) via a (Namespaced) Merkle tree.

可以看到，无论是抽样检查还是NMT查找，都利用了IPLD的技术来实现(将ipfs节点内置到节点中)。内容出自[这篇博客](https://blog.celestia.org/celestia-mvp-release-data-availability-sampling-light-clients/)

[**IPLD**](https://medium.com/@kidinamoto/ipld-%E8%AF%A6%E8%A7%A3-d3068a7b5219)**是由merkle-links命名的，可以被遍历的JSON文件对象。**

---

*Originally published on [zoie](https://paragraph.com/@zoie/celestia)*
