1 of 17

数据可用性层

Rollup扩容的必要一步

@CyberOrange

2 of 17

为什么需要DA

  • 单链扩容与去中心化

  • 执行分片设计过于复杂

  • Rollup扩容遇到瓶颈

3 of 17

Plasma to Rollup

  • 基于欺诈证明,假如出块人扣留数据,则欺诈证明无法构造。
    • 这可以实施而已的状态转换。

  • 基于有效性证明,假如出块人扣留数据,则有效性证明无法构造。
    • 这可以使得某笔资金被永久锁定。

4 of 17

从P2P网络说起

  • 假如每个节点只存储一部分数据

  • 需要所有数据的节点按需检索数据

  • 设区块4MB,32Byte一个chunk,全网1000个节点,每个节点随机存2048个chunk即64KB,在无节点作恶时,每个chunk至少有一个节点存储的概率99.99998552644%

5 of 17

概率采样

  • 假如节点除了自己存数据,还可以抽查其他节点
  • 设一次抽取的chunk数为c,而不可用的chunk数量为t,令x表示t中被抽取到的数量,设t中至少有一个包含在被抽取块中的概率为P(X).
  • 则有
  • 由于
  • 设t=mn,令n趋于无穷,得
  • 则需要抽取460个块以99%的概率发现1%的数据丢失
  • 抽取92099个块,以99.99%的概率发现0.01%的数据丢失

6 of 17

从多副本到纠删码

  • 纠删码,如(6-3)纠删码,将3 chunk编码为6chunk,且任取3 chunk可恢复数据
  • 假设采取任取50%的纠删码对数据编码载采样,则只需保证50%以上数据可用即可,则随机抽34个块,可以以99.99999999%的概率发现50%以上的数据不可用。
  • 假如每个区块4MB,纠删码扩展到8MB,以32Byte为一个chunk,全网有1000个节点,每个节点存2048个chunk即64KB,足够随机时,至少有一半的chunk被全网存储的概率接近于1。

7 of 17

纠删码

  • 设数据长度为n,某种编码将数据扩展到 n/r ,且任意的 qn/r 都能恢复回原数据u,q被称为stopping rate,当q=r时,我们称这种编码是最大距离可分码(maximum distance separable,MDS),MDS码具有最佳容错能力。
  • Reed Solomon码具有MDS性质
  • 如两点确定一直线,三点确定二次曲线,n点确定(n-1)次曲线
  • 假设有n个数据片,则设一多项式f(i)=n_i,可以得n-1次多项式,再对i+1..2n进行取值,得到2n个数据片,任取n个点,都可以得到多项式,恢复回数据。

8 of 17

错误编码证明

  • 假如纠删码被错误编码,方案失效

  • 需要机制证明编码错误,类似Optimistic Rollup的欺诈证明

  • 对于一维RS码,需要原数据+一个错误编码的数据chunk

  • 最坏情况下,RS码的错误编码证明比原本的全副本模式还糟糕。

9 of 17

缩小错误编码证明

  • 多维纠删码
    • 需要存储的root过多

  • Code Merkle Tree
    • 编码效率低

10 of 17

多项式承诺

  • 纠删码基于多项式,若采样时绑定多项式,则无需错误编码证明
  • 即不仅返回被采样的数据,同时证明该数据在多项式给定的点上。
  • KZG commitment

11 of 17

多项式承诺

12 of 17

Celestia

  • Tendermint

  • 二维纠删码

  • 错误编码证明

  • Namespaced Merkle Tree

  • 网络层使用了IPFS的基础设施

13 of 17

Polygon Avail

  • Substrate

  • 二维纠删码

  • KZG commitment

  • 网络层使用了IPFS的基础设施

14 of 17

Danksharding

  • Danksharding
    • 一个超级builder,打包所有数据并分发,委员会节点采样。
    • 每个validator被分到32个column,负责采样并存储。

  • Proto(type)-Danksharding-aka eip4844
    • 一个blob 128Kib,最大16blob-2M,目标1M,类似eip1559。
    • Blob数据存储在beacon chain上,其格式与ds兼容,未实施任何分片功能
    • 保存约一个月后删除。
    • 没有DAS,PBS。
    • 预编译:blob verification precompile,point evaluation precompile.

15 of 17

可能的攻击

  • 对于轻节点,51%攻击+日蚀攻击
    • 轻节点通过采样来确保数据可用,但如果链的验证人合谋作恶,并在P2P层伪装海量节点包围该节点,该节点进行采样,但验证人仍有机会扣留数据。
  • 节点矿池化:多个验证人节点复用一个采样,降低安全性

16 of 17

为什么Ar和Fil不是DA

  • Ar
    • Ar在数据上传时进行做种以期获得更高的复制率,可只发交易不上传数据。
    • 故其数据存储状态是概率性的,难以获知数据是否已可靠存储。
    • 结算层即便可以获取某笔交易打包进区块,也不能以大概率认定其可用
    • P2P相关的攻击可能性在Ar上更为突出。
  • Fil
    • 数据存储由用户点对点发送给矿工,受邀存储的矿工可扣留数据。

  • 最后,Ar和Fil目前都是多副本冗余,难以建立采样机制。

17 of 17

开放问题

  • 长期数据可用性
    • Ar的SPoRA:计算PoW时,生成一段随机数据,并扫描已有的数据,找到某段数据包含该段随机数据,找不到就重试。
    • Fil的时空证明:封印数据与节点绑定并生成封印证明,同时节点定时生成证明保证数据一直存储。
  • DA 预言机
  • 抗矿池化
  • 抗P2P网络攻击
  • DA层的价值捕获思考:在DA层上面运行的应用,如果市值远超该DA链,那么协议安全么?协议应为数据可用安全付出多少成本?固定还是市值占比?