Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

作者:Faust,极客web3

. G" x9 F5 L% U& c9 v8 j' q1 e

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

/ |7 V4 T/ J/ U1 a: K9 V

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

+ n( c8 C& Y5 V" X) ~" ?

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

9 q: h" G: ^0 C

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

' L4 a* @7 K$ b

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

. N/ D }+ K2 F' K2 |& T

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

. i. e: w; A/ X+ F& |* s5 |

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

4 S: i" D/ \' p, u D& U# n# A* y

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

$ O o+ J: i1 K& E" l" p) w

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

A) g @9 z4 }8 M

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

' w9 d4 a P5 Z8 u ^

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

; W8 I% T2 Z8 g5 b

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

5 g; I( D4 {9 l

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

1 e: Q4 z1 J+ i" k' Z3 l7 p K

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

: u$ @8 s- X3 u. u5 _

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

, R: |; @! A, c& J

DA概念的来源

* D' K P* S, e

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

' S- }3 S9 O9 A2 l% ~

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

8 m, b+ c! K* Y! L- Q! U, B- O

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

' @( e3 |6 b- C

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

8 _# \- o! \- E

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

; c7 N1 m; ^, t& E

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

; J K' A0 D1 B6 B* K

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

6 L% L8 ?9 e) x2 [. J& V$ e$ z7 U

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

2 E8 v& u: u$ D

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

2 \" C& g0 `# u' t+ i B8 B

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

, I, f& }& b4 l7 t0 U$ [

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

% o1 r6 ]/ q' m5 k

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

; {& F; m4 ?3 x/ M( y+ m

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

- a; i. j2 n% M; t5 [6 `

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

( I3 g# ~+ \7 A' v9 u/ l

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

4 L6 K9 K# v, }* R* s B

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

+ ]/ R3 W6 P' Y9 w4 e

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

! ~3 U, }% s- k) w0 d

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

# Q" J7 q' v8 b% _# q4 ?5 ~! F

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

7 Y5 q' r8 s1 F* \

数据可用性采样

9 {6 d: ~8 v0 K- c

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

' N" R- a, N: [( I7 ?% ?4 l

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

8 ^, f, a4 e+ ?4 F

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

+ h) i( ?! l* S, L, k0 e4 b/ A( H0 t+ V

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

" ] G7 j; a+ d2 r" E+ \

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

+ U+ g7 W! i, { y/ X2 ?

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

( G' V" s' I* w! @$ ]& b" t/ F6 }

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

- {% U* k) T9 E- j8 ? ?8 {

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

" f9 Y0 J/ }; b" T2 X% e8 }

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

: \ K& u$ v; E4 f' H8 P3 l

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

8 L2 `( E0 Q9 E& S

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

3 P( K9 A3 w. |5 W+ K8 u* N0 C

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

9 g$ n- u; D- v* @

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

1 ^# m0 j; d+ N

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

+ [: E9 @% W0 E- H4 v) Z" ]

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

8 T: c' _5 V2 u+ |% x0 ` ]: \

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

1 e6 C$ g' G+ T$ `

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

, a$ `$ u+ U3 s. N6 K% z

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

/ F5 n3 G3 o& j& u1 A! ]8 N

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

& e" q9 m/ S/ n! k0 L/ p

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

( T3 n, W t& }( F( x( P9 G

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

3 Q3 G; f4 p5 B* N/ M+ ^: Q

以太坊Rollup的DA怎么实现

+ G+ O4 z ~( M. R/ v

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

+ i; |6 G/ R/ C% X `

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

; Z5 i6 d! I2 M E1 z |* L

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

, M/ f$ p {! H+ E; e( e

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

1 l! u V `/ w

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

$ i, j2 O% |. S& i

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

1 r; n4 J. R4 H

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

5 X4 _! }' a; | ~ P) J

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

* T1 G, z8 o5 E2 u3 \4 |; t' C+ O! @

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

) R% x. q Z: A( }/ X5 Z7 h

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

3 U( C2 M" {4 W# j# R

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

4 @! Q! t! J) b

参考文献

) v+ e9 ^ o& i7 C

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

0 _, o( S/ k- K0 {! O

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

X6 c/ D+ E, b# a

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

$ O6 v3 K6 |. v3 n! O

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

1 e! G- h' O3 A7 P) X B/ v& I

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

- l0 k% ^$ E- `4 R/ O( p- c& F& q

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

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

本版积分规则

成为第一个吐槽的人

天然灵凡 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    33