Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

作者:Faust,极客web3

6 A% M' g) {' e7 V- Z

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

% c8 b7 K' _ X* d/ Q

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

2 ?3 _9 a i) c T

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

- P! V/ A& @9 I! O

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

* F4 u% Z% G! ^% u/ u- j

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

- ]6 z8 t" a; r0 f

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

+ n; M, f l$ i9 m+ t% Z

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

9 B7 |, U' ~) z4 |/ J

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

1 Z3 u5 h0 w- d

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

6 r3 T( U! j, m; a! g9 }

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

, c& Z' \/ l/ ^5 P3 c( p9 t

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

- E4 l( _" E. U6 j d2 u9 {' Z5 D

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

z& C" Z* [7 |

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

0 x. @2 `% m' x% a# z4 ]

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

) n. k1 s& I# [& x% [' Y% X$ Q

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

5 Y& t0 h# Z# |2 ?+ y1 n

DA概念的来源

, B( F% E, |/ K) w

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

- q" L- `4 O0 Z' ?

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

% [$ t. x0 [$ r/ u

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

, s! D8 e+ A- j) w" |" ^- ^

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

) y3 P1 I( M/ q# t

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

/ p4 j& T* s: \ R4 o: @

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

7 d& j4 V) v' X% J( N; G

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

) d* d+ f) p9 s( W6 E. j! Y

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

0 ^: H6 \" K: ^8 Q: F

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

9 q' C* ?* m2 R. X$ a* I

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

! g8 J1 s5 Z& S/ c) J- W7 s2 U

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

) g+ R/ D! G8 T; @" p

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

# @7 V ?+ q) L$ a! s1 v

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

0 j$ y; s) q8 ]5 |1 L G

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

( w: }0 {# w$ F- h5 y Z8 s6 F

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

1 t8 j: I1 W0 ~6 M2 K, j* V. }- `6 Q1 d

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

( P* k x; \9 q1 f

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

4 v% E$ D2 ]9 Y0 f% y

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

( Z5 ~; l' [+ }9 T5 Q. ~. G

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

: j7 \) H5 i0 V3 g; u* b2 g

数据可用性采样

+ F" X+ e# n; k9 _

但显然,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.

- ]: P& M. z0 u. A" {* I: h0 ~1 a

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

! x8 ?+ z7 D$ `5 U

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

$ ^$ n$ e/ H# u" y& q

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

2 V# M3 a+ q4 r0 @- }1 z: @

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

. U; F" G) f4 {

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

" ]( l5 A5 ]# U& m

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

6 x4 L; u; m+ z

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

5 E1 S' Z5 F$ y+ T1 l

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

; q0 d7 l& R8 c8 J5 O

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

3 @! N9 ?# |! G' f5 Y @

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

, b$ h$ D1 S- l

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

/ B v+ @% J A- c# k

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

; [2 G1 ~# x1 _; ^) p" m' J

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

0 ^8 B) R3 f2 h5 U! @8 O. p

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

& t' N9 {. Q/ k

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

: P# I# i, p$ o# q

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

, y/ p& W8 R$ w0 v4 ^; c

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

8 Y1 ]& x6 d# q

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

4 l0 C. Q( T" {7 J& d

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

. `* C7 I2 u' J& u5 d! @

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

) F. u$ s& Z& n D( B

以太坊Rollup的DA怎么实现

5 j. G5 Z& Y4 u) H

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

4 g! ~& m1 ~# b! H# j; Z

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

! s9 w# \1 e' z- ]" Q) k% Z6 e

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

+ A7 w7 R% r" Q0 n5 E4 ^

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

+ c t' A B) G, A5 A: c

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

9 R- |, P9 H. I; M

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

5 d4 a) l# h4 H/ S8 z* A

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

; G, G% o8 ?# o/ j: s. s- S. h

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

6 N+ b+ i1 i) t* }/ ?/ d

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

/ `& ]' P% }/ d3 Q

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

0 K% E6 X, R# ` \4 V1 A" X

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

3 S* }# h$ Q4 I* u) ^% p

参考文献

# F5 u' S- q# i/ l# s

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

; Z- ^) `0 V! J! g: U) t: t

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

& @! s8 k" r' F

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

. }1 y7 A1 N8 |0 F) K$ K6 m

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

6 I- K, ^ q! I

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

# _4 H K" U" [- i: S

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

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

本版积分规则

成为第一个吐槽的人

天然灵凡 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    33