Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

以太坊的分片与Casper

wxf2017
64 0 0
纵观区块链发展历程,以太坊以图灵完备的EVM,引领了区块链2.0的发展,这是不争的事实,当然,以太坊不是完美的,但是V神和他的团队在区块链技术领域的权威有着高度共识,文章想聊聊v神以及他的团队如何操刀以太坊2.0版本。
6 K) H* O7 ^' _7 K% a分片; F8 V! ~0 \( \" Y
交易拥堵一直是每个主链致力解决的问题,虽然以太坊的TPS对比比特币有了很大的提升,但是在技术快速更迭的区块链世界,依然面临着巨大的竞争压力,于是以太坊2.0希望在当前主链上扩容,不依赖超级节点,希望能达到数千级别TPS以提高以太坊基础公链底层竞争力。
4 L0 Y+ ]) l3 I9 Z+ `8 b分片后会有哪些问题呢,当然会有很多问题,分片后世界账本如何保持一致?每个分片采用什么共识?5 h) ~- H  [& Y, D2 u* h9 g* N0 e
1、一次性分片提案2 m+ a1 n6 L4 Y9 l: f
假设1个节点能处理N个交易,那么主链能追踪N个分片,每个分片都能处理N个交易 ,所以系统一共能处理N^2个交易。因此这个提案叫做一次性分片。: ^; h' f+ g! i( P/ e4 _
假设变量 c 表示一个节点的有效计算能力,那么在1个普通的区块链里,交易容量就被限定为 O©,因为每个节点都必须处理所有的交易。二次方分片的目的,就是通过一种双层的设计来增加交易容量。第一层不需要硬分叉,主链就保持原样。不过,校验器管理合约(validator manager contract,VMC)需要被发布到主链上,它维持分片系统。这个合约中会存在 O© 个分片(目前为 100),每个分片都像是一个独立的“银河”:它具有自己的账户空间,交易需要指定它们应该被发布到哪个分片中,并且分片间的通信是受限的(事实上,在第一阶段,不存在这种通信能力)。# x4 I6 T4 l( q) H) G
2、世界状态如何保持一致性
6 _" r) j) R! ^- t1 _' A分片后,首先要解决的问题是,如何将不同片区的交易导致的账本状态收敛到唯一的世界账本中,以太的账本基础数据结构是MPT(前缀树结合默克尔树的优化),如图:/ _* u( F8 I# m! y3 ~% T, Y
% C0 i! _& g1 e( g/ [
我们知道,树这种数据结构是可以拼接的,如上图中,假如我们把第一层,一个块的stateroot作为另一颗树的子节点,那么这整条链降到了第二层,而这并不影响这棵树的任何属性,只是这时候第二层的块要换个名字,以太坊2.0叫它Collation:/ r/ p! f% d, A' N( N7 K

( m5 L9 n. r& P2 e4 z我们来看看V神的账本结构图:
; b$ v4 B/ F, m) ], p# P3 c0 |8 q9 H  n: ?: a8 f" E: j9 n
当然,同一个用户在同一个时间段内,只能分配到同一个片区内,交易需要指定它们⾃⼰应该被发布到哪个分⽚中。* Y1 H9 z. J$ ?, B* N4 d! M
而如前文所说,第一层中依然使用pow共识不变,只是这时块中的state_root是有众多的shard state root 收敛而来。块中不同片区的交易的执行,验证,世界账本的演化得到并发的执行,TPS 得到提高。0 c( w; ^' Q/ g( Y$ C
当然这里仅仅是从账本的数据结构来分析,分片后,世界账本如何既保证一致性,又能够很好的支持并发。保证世界账本的一致性,还有很多重要的问题要考虑,例如最长链选择策略等。% o6 r: y. s! F
3 casper
" U% V2 x1 E2 X3.1每个分片要用什么样的共识?  \2 s  o8 M2 L+ H9 y1 n; K2 A$ t# v
我们知道以太坊当前使用pow共识,抛去算力挖矿导致的电力浪费,温室气体排放,继而让大家觉得世界都不太美好了,那么pow除了排放温室气体,它能够用作分片片区中的共识算法吗?2 `0 g7 o2 x5 Q: v5 C. d1 Q3 d- A
7 j2 Q$ A% K/ }; V3 h5 q( f% f
分片意味着每个片区的节点数变少了,这让原来控制全网51%的算力几乎不可能变的没那么难了。显然不合适,就像大家知道的,pos成为了候选者。
& r( b; v4 D: C当然在pos一开始被提出后,国内外很多项目一拥而上,但是现在存活下来的不多了,为什么呢,我们举两个导致使用pos系统性死亡的充分非必要例子:: @( o( B$ O' y
无厉害攻击问题。% X; R. r4 P3 |: z, q: @
远程攻击问题。
3 \6 m9 m4 Z/ A' n2 G0 l" ]我们来看一下无厉害攻击问题。1 a/ r; t- O* H5 c  D! ~4 |, V# L3 ~
⽆利害关系; v9 H; V; h" {0 [$ B: i6 Z
早期的Pos机制下,只考虑到奖励,没有对应的惩罚机制,产块者倾向于两个分支都添加,因为它不用付出额外的代价,但是增加了收益概率:1 `% m; [7 J4 H8 O( D7 i
) P4 T$ U: l. X, y! j" f
在工作量证明中,这么做需要将算力一分为二,因此会影响收益:* V9 G6 a& m0 d9 ~1 v: o  c1 a* l9 K/ P
' C- }, S& l7 p/ |% L3 Z, ^
引入惩罚机制后:
1 O) E9 X# F" {) P' A远程攻击问题:9 `$ e7 E3 l; \  O# |/ n; [/ O* L

6 @% T" B, ^) ?+ v7 F/ ^如果某个时刻,网络中的大多数人从一个“历史久远的块”开始分叉怎么办?& ?& b( C6 h" y% y
所以我们需要一个协议去解决这些问题,这个协议就是casper,casper中定义了两个重要的惩罚消减条件:# Q3 Y4 |2 t. d5 ]" r& A

+ o0 |7 j$ p8 B& a' I+ p$ j
6 K  G8 A: w# V9 g( RCasper的白皮书对相关的安全性证明给出了详细的解释,这里不做累述,当然使用pos,还有很多问题需要考虑,例如大多数节点的生命周期管理,casper也提出了动态验证集概念,去解决对应的问题。+ R0 D; D" d. z# S1 n7 a3 t% E1 W
概括来说,在pow世界里,高昂的算力成本付出,让矿工自觉地向最长链收敛,那么在去算力的世界(pos)里,如何让产块者遵循统一的最长链选择策略?我们需要制定规则,以太坊2.0采用pos+BFT类共识,对相关的规则(casper)达成最终共识,解决这些致命的问题,而BFT类共识有需要N^2的通信代价,节点扩展性受到制约,这也是为什么分片(每个片区节点数有限)被选择作为以太坊2.0的扩容方案。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

wxf2017 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    27