Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

作者:Faust,极客web3

( Z% q2 U) L1 K: S, @

导语:到底什么是数据可用性?可能绝大多数人第一印象是“可以获取某个时刻的历史数据”,但这其实是对DA概念最大的误解。近期L2BEAT联创与Danksharding提出者、Celestia创始人都对这一误区做出了澄清,他们指出,Data Avalibity实际上应该指“数据发布”,但大多数人把DA理解成了“历史数据可检索”,而后者实际上涉及到数据存储问题。

& O9 {. C+ o1 j. u

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

" e( r# y" t7 F% ~7 V4 L4 Z0 \ S

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

: B- R; i; a6 J* v5 V

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

?% c3 ]4 \! i @

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

/ K. l0 d, d4 [: r+ N; e) w

比如,前一阵子Dankrad曾提到了Layer2的强制提款/逃生舱机制,他指出,Validium的强制提款需要获取最新的L2状态来构造Merkle Proof,但Plasma只需要7天以前的(这和两者的合法Stateroot判定方式有关)。

- ?1 ^+ C, [/ m/ o0 Z3 ^. ?9 W6 B" \

借此,Dankrad明确指出,Validium需要DA保障用户资金安全,而Plasma不需要。在此处,Dankrad用案例指出了DA和历史数据可检索的不同之处,即DA往往只涉及新发布的数据。

2 {: ^' T: ?3 K* y( H5 r+ C# M

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

1 |* r. f6 h4 |, ?

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

; S- O& t$ k2 W e/ n0 B. i

在L2BEAT那里,数据可用性DA与数据存储DS的区别被进一步加强。L2BEAT的Bartek多次强调,DA和数据存储/历史数据可查是两码事,而用户能够获取到自己需要的L2数据,只是因为那些提供数据的节点“对你足够好”。此外,L2BEAT还计划把“是否有权限开放的数据存储节点”当做DA之外的一个测评Rollup的新指标。

+ h+ [8 A; l) L1 t

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

- k/ c1 `5 G; \7 R( A' W3 Z( W2 q

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

( P/ L4 s2 }0 F

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

3 r [8 }& N6 `" d s( U1 }

以太坊社区/以太坊基金会成员的上述言辞,表明了他们要在未来对Layer2相关概念进行规范化的梳理,并对Layer2本身进行更详实的定义。因为围绕着Rollup和L2的很多名词其实都没有被很好的解释清楚,比如多久前的数据算“历史数据”——有人认为,因为智能合约只能调用256个block内的过往区块数据,所以256个区块(50min)前的数据都算“历史数据”。

8 F% v. ~+ c$ [

而Celestia和以太坊基金会口中的“Rollup”,严格来说都是两种东西。本文旨在澄清DA概念和数据存储的区别,从DA的来源、数据可用性采样、Rollup的DA实现方式,来为大家解释到底什么才是数据可用性——数据发布。

% ]# W! u( W+ M- J" t; V5 U3 x

DA概念的来源

2 v; ?5 K& R% A: }5 ~2 n1 V

关于“数据可用性”问题到底指什么,Celestia创始人Mustafa如此解释:DA就是,当区块生成者提出新block时,如何确保区块里的所有数据都发布到了网络中?如果区块生成者不Release区块中的所有数据,就无法检测区块里是否包含错误交易。

( q6 k. G3 F6 q" F6 J) ^

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

, G) ~. ` w& G1 P& C

Mustafa还指出,以太坊Rollup简单地将L2区块数据发布到以太坊链上,并依赖ETH来保障数据可用性。

0 G ^% N4 j! j, f! H0 ] F

而在以太坊官网,有关于DA的如下概括:可以把数据可用性难题概括为一个问题:“我们如何验证一个新区块的数据是否可用?”......对于轻客户端来说,数据可用性问题是指在无需下载整个区块的情况下,验证区块的可用性。

3 U& C4 V& R2 P" ]6 @

以太坊官网还明确区分了数据可用性与可检索性的区别:数据可用性是指区块被提出时,节点下载区块数据的能力。换句话说,数据可用性与区块尚未达成共识时相关......数据可检索性是指节点从区块链中检索历史信息的能力......虽然存档可能需要区块链历史数据,但节点无需使用历史数据就可以验证区块并处理交易。

4 J% t* L5 g) P- l, O9 q8 V7 q

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

" S- z6 ?* d3 |4 e/ V

在Celestia中国贡献者——W3Hitchhiker合伙人任泓毅看来,Layer2事先假设Ethereum足够安全和去中心化,排序器可以放心大胆的把DA数据发到以太坊,这些数据会无阻碍的传播给所有以太坊全节点。而L2全节点本身就要运行Geth客户端,算是以太坊全节点的子集,所以可以接收到Layer2的DA数据。

* Z$ \$ T1 L$ s$ s8 L0 f, d

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

: s, n5 ~9 ^ x% \( g

而在EthStorage的创始人Qi Zhou博士眼里,DA的定义是没有人可以把用户提交到网络里的交易数据扣留住。对应的信任模型是,我们只需要信任L1的协议本身,不需要再引入其他信任假设。

( s9 B7 M4 k& L

Qi Zhou指出,现在以太坊的DA实现方式其实就是P2P广播(gossip流言协议),每个全节点都会下载并传播新block,并存储Rollup的数据。当然,以太坊全节点并不会永久存储历史区块,在4844上线后可能会自动删除一段时间前的数据(貌似是18天)。存放全部历史数据的档案节点,现在全世界也没有多少,EthStorage则打算填补以太坊体系的这一空白,并助力Layer2设置自己专属的数据永存节点。

7 E5 g+ D" I# o, C

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

! c& U: R y% Y n# R n E- o

以太坊基金会关于数据可用性Data availability的早期讨论,可见于Vitalik在2017年的推文与github文档。当时他认为,如果要保证区块链可拓展/高效率,就要抬高全节点的硬件配置(全节点就是下载完整block并验证其有效性的节点,做共识的Validator是全节点的子集)。但如果提高全节点硬件配置,就会提升运行成本,导致区块链变得中心化。

/ A2 e. Q) T. b* H

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

, c6 r2 {, Z6 W/ D3 K

关于这一点,Vitalik说,可以设计一种方案,解决高性能全节点趋于中心化带来的安全隐患。他打算引入纠删码和数据随机抽样来设计一套协议,使得低配硬件的轻节点即便不获知完整的block,也可以得知block没有问题。

' M3 P$ R: @) Q! W$ r$ T3 X2 q5 m

他最开始的想法其实和比特币白皮书里提到的idea有关。这个idea说,轻节点可以不接收完整block,而当block有问题时,诚实全节点会发出“警报”,通知轻节点。这个思路可以引申到后来的欺诈证明,但不能保证诚实全节点始终可以获得足够数据,也无法事后判断区块提议者是否扣留了某些数据没发布。

( t5 Q5 C7 w; T# ~2 B4 L" k

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

7 R2 S2 a1 G# s% V: T N; y( E

比如,某个节点A可以发布欺诈证明,声称从节点B那收到了不完整的block。但此时无法判断,这个不完整的block是A自己伪造的,还是B发出去的。Vitalik指出可以用数据可用性采样DAS解决这个问题(显然数据可用性实质涉及数据发布问题)。

( Q j; q! n. K4 e& t

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

0 a6 v& T# C4 ^2 E. q- d2 Z, g

Vitalik在"A note on data availability and erasure coding"一文中对这些问题及其解决方案进行了粗略讨论。他指出,DA证明实质是对欺诈证明的一种“补完”。

7 r) u6 B" L4 P: I" L

数据可用性采样

: o7 l" o4 G8 X& z

但显然,DA概念不是那么好解释的,因为Vitalik的这篇github文档前前后后进行了18次更正。记录显示,最后一次更正提交于2018.9.25。而就在前一天的2018.9.24,Celestia创始人Mustafa与Vitalik联名发表了日后声名大噪的论文——Fraud and Data Availability Proofs: Maximising Light Client Security and Scaling Blockchains with Dishonest Majorities.

8 S% x2 P1 ]: D J( v1 c( o4 O7 Y4 W; j

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

: f- n3 Z. x5 x0 H. V* J r2 f8 y$ w

有趣的是,这篇论文第一作者是Mustafa而不是Vitalik(另一名作者现在是Sui公链的研究员)。文中提到了欺诈证明Fraud Proof的概念,并解释了数据可用性采样DAS的原理,粗略设计了一套DAS +二维纠删码+欺诈证明的混搭协议。论文中则明确提到,DA证明系统实质是欺诈证明之上的必要补充。

7 T( a+ B& U Z# [( R* o0 v" K

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

" c5 Z9 @) _# ~ W. U6 h2 k

如果我们从Vitalik的视角出发的话,这套协议的作用可以概括如下:

7 _3 t& S7 D9 F( T% g, v+ e; K9 X

假设一条公链有N个高配硬件的共识节点Validator,它们的数据吞吐量很大,效率很高。这样的区块链虽然TPS高,但共识节点数量N比较少,是比较中心化的,节点串谋概率高。

6 @5 X! t; a* T; w- P5 \* P

但是,N个共识节点中起码会有1个是诚实的。只要至少1/N的Validator诚实,检查出block无效,并愿意在必要时刻广播欺诈证明,轻节点或诚实Validator都能知道网络出现了安全问题,并可以通过Slash恶意节点、社会共识分叉等方式让网络恢复正常。

/ v3 d! f! @$ z' ~, S

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

: {- Z4 B- e: h6 ]& M1 |

可是,就像之前Vitalik提到的,如果诚实全节点接收到一个block且发现它缺乏某些部分,并发布欺诈证明,此时不好判断出是block提议者没发布这部分数据,还是中途被其他节点扣留了,亦或是发布欺诈证明的节点自导自演。

2 [3 Y5 X7 Y& L+ N

此外,如果多数节点串谋,1/N的诚实Validator被孤立,可能无法获取新的block,这算是一种数据扣留攻击场景。需要注意的是,此时诚实节点不知道是网络状况不好,还是其他人串谋搞数据扣留,他也不知道其他节点是否也被孤立,不好判断多数人是否已经串谋搞数据扣留。

- h" W' A3 ^0 g1 W, G6 A# V

综上,要有一种办法,以极高概率保证诚实Validator能获取到验证block所需的数据;同时,要能判断出是谁在搞数据扣留攻击——是block提议者没发布足量数据,还是说被其他节点扣留了,亦或是多数节点在搞串谋。显然,这种安全模型比普通POS链的“诚实多数假设”多了很多保障,而数据可用性抽样DAS就是具体的实现方式。

+ ?( F P) u* o8 x) |

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

/ J, C# l4 _) A2 |% `4 }

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

" D/ A# P, J; D: T+ z; Z% ~; {

我们现在假设,网络中轻节点很多,可能是10 N,每个轻节点都连接了多个Validator(为了方便分析,假设每个轻节点都连接了全部N个Validator)。这些轻节点会向Validator多次发动数据抽样,每次随机请求一小部分数据(假设只占一个block的1%)。随后,它们会把抽到的碎片传播给没有这些数据的Validator。只要轻节点足够多,且数据抽样次数足够频繁,即便某些请求可能被拒绝,但只要大部分被响应,就可以保证所有Validator最终都能获取到验证block所需的足量数据。这样可以抵消掉Block提议者以外的其他节点扣留数据的影响。

" `- U8 |# ]0 m8 g0 q2 P

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

* F, d& W# A0 J. i4 d8 }

而如果多数Validator搞串谋,拒绝响应大多数轻节点的请求,此时人们很容易意识到链出了问题(因为就算一部分人的网速不好,也不至于差到大部分轻节点的请求都被拒绝)。所以前述方案可以极高概率判断出多数串谋行为,当然这种情况本身极少发生。

! K9 y G3 S; A* z' ]

到了这里,我们可以解决掉来自Block提议者之外的不确定性因素。如果Block提议者搞数据扣留,比如他没有在block里发布验证区块所需要的足量数据(引入二维纠删码后,一个区块里包含2k*2k个片段,而还原出区块的原始数据至少需要约k*k个片段,占1/4。提议者想让其他人不能还原出原始数据,最少需要扣留k+1*k+1个片段),最终肯定会被诚实Validator检测出来,而后者会广播欺诈证明警告其他人。

- H: }, v1 P |1 S

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

7 }, W% z) g, y4 |

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

! Y0 h) R# F8 v* L" S, @5 n3 I5 S

按照vitalik和mustafa的说法,他们其实是把此前就有人提出的想法结合了起来,并在此之上做出了一定的创新。而从整个构思的出发点与实现方式来看,显然所谓的“数据可用性”指的是验证最新block所需的那些数据,是否都有被区块提议者发布出去,且能不能被验证者们接收到。这关乎“数据是否完整发布”而不是“历史数据是否可以被检索到”。

& b$ j. A; N6 I( z, @! S

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

5 I1 ?7 |9 ]5 u; X8 t# u8 |

以太坊Rollup的DA怎么实现

! k- I* Q% v2 k; v

有了前面的论断,我们再来看以太坊Rollup的DA实现方式,其实就比较清晰了:Rollup里的区块提议者就是排序器Sequencer,它每隔一段时间就会在以太坊上发布验证Layer2状态转换所需要的数据。准确的说,是向指定的合约发起一笔Transaction,在自定义的输入参数里塞进DA所涉及的数据,并最终被记录进以太坊区块里。由于以太坊足够去中心化,可以确信定序器提交的数据会被“验证者”顺利接收到。但不同Rollup网络中充当“验证者”角色的东西是不同的。

* P+ p, \0 z0 e7 ?! R7 G: r( D

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

% W# t; X, e T, W8 G3 j0 d* i+ `

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

& S6 n7 |. w# m" J: ]7 B, c' c

具体而言,ZK Rollup采用以太坊上的Verifier合约充当“验证者”。ZKR最少只需要发布State Diff + Validity Proof,也就是状态变化情况+有效性证明,Verifier合约会检测有效性证明,判断它能否和State Diff对上号。验证通过后,定序器发布的L2 Block/Batch就被认作有效。

2 ?# H' X5 i% s+ P8 \

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

) o) X4 m7 ?( R! F! r, S! M

而乐观Rollup要在以太坊发布更多数据,因为它只能靠L2全节点去下载数据并验证Block有效性。这样的话,至少要披露 每笔L2交易的数字签名(现在一般用聚合签名)、如果有调用合约的话,还要披露输入参数,此外还要披露交易转账地址、防重放攻击的Nonce值等。但相较于完整的Transaction data,还是有一些修剪。

# }5 j8 j+ P, P9 J

相比于ZK Rollup,乐观Rollup的DA成本更高,因为ZK Rollup只需要披露一批交易执行后的最终状态变化,附带一个有效性证明,利用到了ZK SNARK/STARK的简洁性;而乐观Rollup只能采用最笨重的方式,让所有交易都在其他L2全节点身上重新执行一遍。

, K5 p9 x* G4 d0 A' Q3 g& w

此前W3hitchhiker曾粗略估算过,不考虑未来的4844和blob,ZKR的扩容效应可以达到OPR的数倍,而如果考虑到4337相关的智能钱包(用指纹、虹膜数据取代私钥签名),ZKR的优势会更明显,因为它不需要把指纹、虹膜的二进制化数据post上以太坊,而乐观Rollup需要)。

' h( I7 m- U; i2 h4 v8 X9 S

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

+ \. d n- ]! \, i% d g+ G2 m

至于Validium和Plasma/Optimium,其实是用以太坊链下的DA层来实现DA。比如,采用了有效性证明系统的ImmutableX自己搭建了一组DAC节点(数据可用性委员会),专门发布DA涉及的数据;Metis则在Memlabs上发布DA数据,Rooch 和Manta则采用Celestia。而目前看来,由于有DAS和欺诈证明系统的存在,Celestia是以太坊之外可信度最高的DA层项目之一。

4 A+ ~' S- j/ {

DA=数据发布≠历史数据检索?一文探讨数据可用性的真实含义

& T+ r+ [( ?6 R/ ?5 o, L( @

参考文献

. ~+ C9 |) U6 M: I. O. C- X

1.https://coinmarketcap.com/alexandria/article/what-is-data-availability

* d% H4 O/ x% x" a9 Z

2.https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding

% w' g* i( ~1 {; D6 p* Q' _7 ^$ _

3.https://www.youtube.com/watch?v=xV2XVCtQIGw&t=2977s

, U; L! a: a+ O) C- d8 E3 `, s

4.https://www.chainfeeds.xyz/feed/detail/45ca8444-113b-4d81-b3eb-cd90a1297f8d

$ r5 C2 ?, j/ q. p" }$ i: B

5.https://arxiv.org/abs/1809.09044

9 D. p/ N% V% }

6.https://ethereum.org/zh/developers/docs/data-availability/

BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

天然灵凡 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    33