# Smooth 模块化区块链系列教程(三): 数据可用性采样 **Published by:** [wiger.eth](https://paragraph.com/@wiger/) **Published on:** 2022-10-13 **URL:** https://paragraph.com/@wiger/smooth-3 ## Content 概括Celestia 是一个数据可用性层 DA Layer。 Celestia 的 2 个特性是数据可用性采样 (DAS) 和命名空间默克尔树(NMT)。 DAS:轻节点无需下载完整的区块数据,即可验证区块的数据可用性。 NMT:使得 Celestia 上的执行和结算层,只能够下载与它们相关的交易。2D Reed-Solomon(RS) EncodingRS 编码定义:在原始数据中取多个点求冗余进行扩充,当接收器收到足够多正确的数据点后,即使数据中存在部分缺失和损坏,也可以恢复原始数据。 RS 编码在 DAS 中的应用:轻节点只下载,包含交易列表默克尔根(commitment)的区块头部,即可验证数据可用性。2D Reed-Solomon(RS) Encoding原始区块数据 Block Data:Header:交易列表的 Merkle root。Data:交易原始数据。对原始区块数据 Block Data 进行二维 R-S 扩展编码:将 Block Data 划分为 k x k 矩阵。保留奇偶校验数据,将 k x k 矩阵,多次通过 R-S 编码,扩展为 2k x 2k 矩阵。提取 2k 行的 Merkle Roots 和 2k 列 Merkle Roots,合并构成 4k 个单独的 Merkle Roots,并将合并后的 Merkle Roots 称作:Merkle Root of Merkle Roots,这就是扩展后区块头部中的数据承诺 Commitment。数据可用性采样 Data Availability SamplingCelestia 轻节点对 2k × 2k 的扩展后数据块进行采样:每个轻节点,在 2k x 2k 的扩展矩阵中随机选择一组坐标。向这些坐标对应的全节点发起请求:请求数据块,和相应的 Merkle Root。如果轻节点的每一个采样请求,都可以接收到有效的响应,则整个区块的数据是大概率可用的。由于 R-S 编码的特性,只要 Celestia 轻节点采样足够多的数据块,全节点就可以恢复原始的块数据。可扩展性 Scalability虽然单个轻节点计算资源有限,但也正因此,轻节点的硬件门槛没有那么高,网络中可以有很多的轻节点,每个轻节点只需对块数据的一小部分进行采样。 所以网络中的轻节点越多,它们可以下载和存储的数据就越多。 所以网络中的轻节点越多,区块容量也可以更大,即可以包含更多的交易。 为了验证区块头部,Celestia 轻节点需要下载 4k 个 Merkle Root。所以轻节点的吞吐量,也决定了 Celestia DA 层的吞吐量。不正确扩展数据的错误性证明 Fraud Proofs of Incorrectly Extended Data1D Reed-Solomon(RS) Encoding:将数据分为 k 份,从而进行扩容,扩容后得到 2k 的 Merkle Root,这时轻节点不再需要下载 O(n) 字节来验证块头。 但 1D 缺点在于,不容易处理恶意生成扩展数据的区块生产者。 因为 Celestia 不需要大多数诚实来保证数据可用性。 因此,如果扩展数据无效,原始数据可能无法恢复。 这时,采用 Fraud Proofs 可以拒绝具有无效扩展的区块,Fraud Proof 需要重建编码并验证是否匹配。 采用 1D R-S 编码的 Fraud Proofs,需要下载完整的原始数据来进行验证,复杂度为 O(n)。 而采用 2D R-S 编码,无需上述的 Fraud Proofs,只需对扩展矩阵中的一列,或一行进行计算,即可验证,复杂度为 O(n)。 所以通常采用 2D R-S 编码。引用Celestia's Data Availability Layer: https://docs.celestia.org/concepts/how-celestia-works/data-availability-layer ## Publication Information - [wiger.eth](https://paragraph.com/@wiger/): Publication homepage - [All Posts](https://paragraph.com/@wiger/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@wiger): Subscribe to updates - [Twitter](https://twitter.com/JizhouW): Follow on Twitter