# Celestia MVP 发布：数据可用性采样轻客户端

By [W3.Hitchhiker](https://paragraph.com/@w3hitchhiker) · 2022-04-22

---

原文链接：

[https://blog.celestia.org/celestia-mvp-release-data-availability-sampling-light-clients/](https://blog.celestia.org/celestia-mvp-release-data-availability-sampling-light-clients/)

原文作者：[Ismail Khoffi](https://blog.celestia.org/author/ismail/)

译者：Evelyn｜W3.Hitchhiker

今天，我们很高兴地宣布，我们已经发布了我们的最小可行产品（MVP）——一个数据可用性采样轻客户端。这标志着我们的路线图中的第一个重要里程碑，即建立一个通用的共识网络，允许任何人在几分钟内部署自己的定制区块链。

TL;DR
-----

*   数据可用性采样轻客户端在Celestia生态系统的安全性、可扩展性和互操作性方面都发挥了重要作用。
    
*   Celestia轻客户端享有与全节点几乎相同的安全性，并且不依赖诚实的多数共识（honest consensus majority）来保证状态的有效性。
    
*   我们的执行是将二维里德—所罗门（2D Reed-Solomon）纠删编码与Tendermint共识和IPFS的组件整合在一起，以实现数据可用性采样。
    
*   关于如何使用我们的轻客户端的说明可以在文章的末尾找到。
    

什么是数据可用性采样轻客户端？
---------------

与大多数其他区块链不同，Celestia的设计严格，是为了提供共识和数据可用性，而不是交易执行。同样，Celestia轻客户端也不验证交易，他们只检查每个区块是否有共识，以及区块数据对网络是否可用。这意味着他们不依靠诚实的多数共识来保证状态的有效性，而这一属性通常只由全节点享有。

由于巧妙的区块编码方案，只需要有区块数据的一个小的随机样本就足以让轻客户端以高概率来验证区块的其余部分是否已经发布。如果任何全节点检测到可疑的东西，他们可以用数据可用性欺诈证明来通知轻客户端。

增加轻客户端安全性的想法可以追溯到[最初的比特币白皮书](https://bitcoin.org/bitcoin.pdf)。在该文件中，中本聪提到，如果全节点在发布一个无效区块时向他们发出 "警报"，就可以使轻客户端更加安全。在收到警报后，轻客户端将下载完整的区块，以验证自己的不一致之处。

尽管其起源较早，但这一想法在很大程度上仍未得到探索，直到2018年左右，[新的研究](https://arxiv.org/abs/1809.09044)为最大化轻客户端安全性提出了一个理论上的解决方案——即使面对不诚实的多数派——也提出了[数据可用性问题](https://coinmarketcap.com/alexandria/article/what-is-data-availability)的第一个实际解决方案。

我们的数据可用性采样轻客户端是上述研究在经过了实际测试的Tendermint共识引擎中的首次实施。

### 但等等，还有更多

除了安全方面的优势，Celestia 轻客户端在整个网络的安全性和可扩展性方面也发挥着基本作用。Celestia轻客户端依靠的是数量上的安全。必须有最低数量的轻客户端，用以确保原始区块数据可以从他们单独抽取的所有样本中恢复。

另一方面，随着轻客户端数量的增加，那么每个区块的大小也可以增加，而不影响网络的安全性或去中心化。更大的区块意味着更多的数据吞吐量和更多的扩展性。

数据采样轻客户端是建立在Celestia之上的所有[基于rollup的侧链](https://medium.com/dragonfly-research/the-life-and-death-of-plasma-b72c6a59c5ad)的一个关键组成部分，因为rollups的安全性依赖于数据的可用性。[Optimistic rollup](https://coinmarketcap.com/alexandria/article/optimistic-rollups-for-the-rest-of-us)需要数据的可用性，这样才能发现欺诈行为，而zkrollup需要数据的可用性，这样用户才能知道链的状态。

最后但同样重要的是，轻客户端是[IBC](https://ibcprotocol.org/)等区块链互操作性标准的关键组成部分。Celestia轻客户端安全性的提高意味着建立在Celestia上的链对互操作性有更强的安全保障。

关键技术特征
------

这个MVP结合了我们的工程团队在过去几个月里一直在努力攻克的几个核心组件。

我们实现了一个命名空间Merkle树（Namespaced Merkle tree、[NMT](https://github.com/celestiaorg/nmt)）数据库。这是一个按命名空间排序的二进制Merkle树数据库，它使Celestia上的任何rollup只下载与其链相关的数据，而忽略了其他rollup的数据。树中的节点被标记为其子节点（children）的最小和最大命名空间。我们用我们的NMT取代了Tendermint的常规Merkle树。你可以把它看作是一个多租户的（multi-tenant）Tendermint，每个应用程序只需要关心他们的那部分树。

我们还实现了一种特殊的编码方案，称为二维里德-所罗门Merkle树（[rsmt2d](https://github.com/celestiaorg/rsmt2d)）。我们使用这个方案将区块数据编码成一个正方形，这个正方形被纠删码编成一个带有奇偶校验数据的大正方形。然后，我们将这种编码机制与NMT结合起来，从纠删码编码的区块中计算出行和列的Merkle根，我们称之为扩展区块或扩展方块。我们修改了Tendermint区块的区块头，以承诺这些行根和列根。

这些变化的目的是使在统计学的意义上，区块生产者隐藏或扣留数据的可能性非常小。要么所有的区块数据都是可用的，要么数据可用性采样是失败的。

为了使点对点网络上的采样成为可能，我们让区块生产者以一种易于采样的方式来对数据进行承诺。具体来说，我们编写了一个[IPLD](https://ipld.io/#what-is-ipld)插件，并修改了IPFS，目的是创建一个优化的网络，让轻客户端可以从中获取数据样本。IPFS，特别是IPLD，似乎是一个自然的选择，因为所有的数据都可以通过一个（命名空间）Merkle树进行[内容寻址](https://docs.ipfs.io/concepts/content-addressing/)。

我们将所有这些结合到一个数据库中，可以被轻客户端和其他[节点类型](https://github.com/celestiaorg/celestia-specs/blob/fc1da81fc3799e4da1041ec8dc237fa391047333/src/specs/node_types.md#node-types)用来验证一个区块是否可用。在不深入了解代码的情况下，为获得这与vanilla Tendermint轻客户端相比较的概述，你应该看一下[这个ADR](https://github.com/celestiaorg/lazyledger-core/blob/66dd73241e508bc439679afd49683282f8d47b5c/docs/lazy-adr/adr-004-mvp-light-client.md)。

### 兜兜转转

现在，让我们深入研究一些代码。按照这个演示，你可以尝试一下我们的轻客户端。

[![]({{DOMAIN}}/editor/youtube/play.png)](https://www.youtube.com/watch?v=X8lxtJJfnQk)

下一步是什么？
-------

虽然MVP是一个重要的里程碑，但为了使IPFS点对点层的内容发现在大型网络中得到执行，仍有很多工作要做。更多细节见[GitHub问题](https://github.com/celestiaorg/lazyledger-core/issues/395)。上面的演示是基于直接连接的节点的内容。

我们下一个近期的里程碑是完全实现其他[节点类型](https://github.com/celestiaorg/celestia-specs/blob/fc1da81fc3799e4da1041ec8dc237fa391047333/src/specs/node_types.md)。请查看这个[GitHub问题](https://github.com/celestiaorg/lazyledger-core/issues/381)以了解更多细节。之后，我们将完成下一个更大的里程碑，即Devnet。我们的Devnet将使任何人都能在本地运行一个Celestia全节点，并生成和验证数据可用性的欺诈证明。

如果你有兴趣关注Celestia的发展或参与我们的社区，请加入我们的[Telegram频道](https://t.me/CelestiaCommunity)，访问我们的[Discord服务器](https://discord.com/invite/YsnTPcSfWQ)，关注我们的[GitHub存储库](https://github.com/celestiaorg)，并关注我们的[Twitter简讯](https://twitter.com/CelestiaOrg)。

---

*Originally published on [W3.Hitchhiker](https://paragraph.com/@w3hitchhiker/celestia-mvp)*
