Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

作者:Faust,极客web3

( X8 O9 Z ]( w+ f' ?

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

8 t8 @9 \! [ ]( k5 i8 l

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

9 T6 b2 a" |% Z

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

5 O! H1 b: B: @5 I! m1 _) A; q% x

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

7 e# M3 J2 x8 V0 c

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

. `3 A$ X' y4 l$ e- u

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

! j5 Y# r: f; E. m

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

7 @- T( B2 A& n# p3 V. V

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

) C; p0 f, ~% F i4 @4 S" ?

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

- r4 q) N l+ q* u2 e( q

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

q W! ^" K; j% K

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

* O7 M: e* [. @3 \

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

$ l% Y" i9 u3 n; o p; m

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

- q0 ^+ p0 n4 k% x# K. d

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

& W* i) v- r. P

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

) U# D$ F+ n4 H) f

DA概念的来源

2 N5 S+ w* T! }; T( E" p5 @

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

' P# Z8 G) C/ o3 }

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

$ S! H1 h( b* I6 M1 F" c9 }; l

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

& f \& J m; R- _9 m

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

* u" n% B% A% Y" ~5 u

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

, y: @# U7 N1 `! M

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

9 s+ R5 S- E1 O- r. U/ g

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

7 s* C- V% ~% x0 P* _

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

+ E. c Q: z% _7 }! O2 t* {* t

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

' F/ ]6 w6 Q1 ]+ A3 ^5 y7 v

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

2 K/ s' b- p8 ^8 z+ k! l3 L

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

, f9 z. T, f7 _, Q+ z: q/ J

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

# A. ?2 j/ Y; U. ?

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

; ~ }: g# ~% K

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

6 D( X3 }' I4 ?% O! b# L( W( ^# e

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

( J! b2 W2 f( ]- |

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

( ?' v3 D' X5 c' ?3 T0 M' w

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

4 q+ h8 u/ L% Q" j+ w

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

9 p7 e" h5 f: |" m

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

: i, L, [) J6 O/ p

数据可用性采样

7 d& S6 e8 X4 l' M4 y/ h) [# S M

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

2 S$ l; X1 q ~( t( S9 |9 ]( d4 v

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

; v/ {* ^0 x8 z7 r& T" {% T: O' Z- v

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

% d# }8 E ~* o! V

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

- Z4 |5 _+ v/ r+ b

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

3 ]* d% z, e( w5 `1 M" d# y

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

3 ^' W" l1 s7 ]6 u& D* e

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

2 _. y0 A3 s, P# h/ h

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

% v% T. L9 h3 e* e6 B2 {. o1 j

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

1 ^: } W# }0 \' \- A$ R

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

- H. c# c7 ^+ F1 b* e

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

# S- |) j3 b, E( H! Z4 O5 g$ [2 S

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

6 Z l' f0 n7 x1 J! C

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

0 x( q |7 C7 @) U& ?/ I% c8 e* o

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

. D. g! |+ t9 d% o& Z" }

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

' F* o. t/ N, J1 i: Y3 r; @

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

' J; {! z T8 z( @4 f8 p/ P8 x

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

" H$ @( |7 m# S6 n% x2 J

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

/ v. _( u. I0 `1 `9 N( }

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

% P7 ]" C! t* r

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

* M( X- f: K& Q( K' i

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

+ W. Z& t' n9 g5 g3 h

以太坊Rollup的DA怎么实现

! j) p' F9 `3 `8 h$ l* J) y

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

! f3 Q: W3 }# d- ?

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

& e1 P. Y; y! k0 A8 `1 a' _. ?" p0 B

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

( F8 r3 Q- J w z0 P+ s

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

: C/ l+ Y7 F. N; O/ a2 j

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

& E1 Z; M* Y- b

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

7 L. @/ _" e; |% k' y! T

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

4 V' E8 X5 n# T" a0 Q; `

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

9 x: J$ G* p* P4 a

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

4 M |8 D- m/ }1 k) x

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

9 w5 O" m3 e+ j* z9 v

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

! H$ }8 |( \+ k8 `0 e" q" P" C7 K

参考文献

* C! d6 q* [7 I

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

+ p& G1 \' e& K% f/ H5 a8 Z

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

3 W' y- l* Y) d/ d0 e; h7 k

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

d" C4 O, V2 I+ S6 X2 _

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

& ^0 E* E* V T6 A, v M- y

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

- m7 M) ~3 |- O" [

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

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

本版积分规则

成为第一个吐槽的人

天然灵凡 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    33