以太坊 2.0:信标链如何进行状态转换?

以太坊 2.0:信标链如何进行状态转换?

免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。

小编:记得关注哦

来源:以太坊爱好者

原文标题:《科普 | 以太坊 2.0 信标链中的状态转换》(Eth 2.0 sta! V W m : N _ ( Ste transition)

撰文:Sly Gryphon

译校:IAN LIU &am! ` 8 + t | @p; 阿剑z o ` (

信标链由区块5 $ b和不断递进的状态组成;区块被产出、签名、传遍网络,然后用于更新状态。下图展示了主要的相互关系:

以太坊 2.0:信标链如何进行状态转换?

- 实线表示聚合关系,虚线表示依赖关系。即发出箭头的部分是 聚合/依赖 于箭头所指向的内容的 -

此图基于以太坊 2.0 详述的 0.10.1 版所绘。与刚发布的 0.11.0 版本相比,上图描述的内容在计算 D_ t G p pomain 的部分有些微区别,但整体关系与前R 1 M N J 3一版本一致。

创建一个新的区块

创建区块,要从当前的区块链顶部开始。

如果当前存在一条短的分叉链(例如,某个时隙因为其中的区块传播速度太慢而被跳过,导致不同验证者获得的最新区块有所区M S z %别),则由分叉选择算法,帮你选出 “最合适”(获得的验证者见证消息权重越大则越 “合适”)的区块链3 } 0 . w M @头。

此外,即使某些 slot 被跳过(没有产n ) I生区块)[ h ` L # 9 _ d,状态仍会推进(但不执行任何操作)。

Beac6 i /onBlockBody (“信标链区块区块C w : L z S ^ 6 D体”)会包含+ ( / - O .所有需要被执j J d * { d + O k行的操作(保证金存1 B +入、见证消息、验证者退出,等等)。这些操作会被用于改变状态、生成新的 BeaconStat( 3 } E d p x Ve(“信标链状态”)。

时隙、父区块根、操作的根哈希(body rootb M l $ K ^ 0 ;,区o R C ^ t k G i块体根)会作为 BeaconBlockHeaW l r D | ? Bder(“信标链区块: 3 @ + ~ f 9区块头”)的组成元素被添加进状态。要注意的是,BeaconBlockHeader 组成元素之一的状态根是零(0x000…),因为状态不能递归包含自己的哈希,否则会出现死循环E - ) i W

最终状态(带有上述 0x000… 值的状态)的根哈希被算出并加入区块,然后区块哈希得到 Block root(B P , `“区块根”)并跟链的 Domain 放在一起,经过签名后在网络中传播。Domain 的意义是防止区块被传播到其他主网或测试网上发生碰撞(collision)。

执行状态转换

节点收到 SignedBeh N ] P [ OaconBlock (“经过签名的信标链区块”)后,要执行一些l + # ~ f 2 ` J验证,包含:确认签名的有效性,及是否有对应父区块的状态(父区块由 parent root “父区块根” 指出)。

通过将状态时隙推进到区块所在时隙(可以是被跳过的时隙O 6 b D ~ S d),然后执行t V s I H { q 5 1 BeaconBlockBody 所包含的操作(比如保证金存入、见证消息、验证者退出等等),我们便E J % G p a y ) M可以Z l U T更新状态。

要注意的是,出现被跳过的时隙时,也会产生新的内部状态,D b ? 5 9并推进当前状态至K y 8下一个时隙,区别只是不会有其他附带的执行动作。

结果状态应该与区块生产者得到的状态相同,因此我们能通过计算新的 BeaconState(包含 0x000...)的哈希值,与收到的区块所记载的状态根进行校验。

BeaconBlockHeader*

信标链状态包含了四个区块基础组成信息中的三种 —— 时隙、父区块根哈希,和 BeaconBlockBody (即要执行的操作)的根哈希。

在计算内部状态时,最新的区块时隙要和最新的状态时隙要有所区别,因为如果出现被跳过的时隙,会使得最新的区块时隙和状态时隙不一致。比如,如果时隙 7 被跳过,则我们仍会以时隙 6 作为最新区块,父区块根和区块体根哈希都仍将指向时隙 6 的区块。

这几个元素作为一个集群,使用和 BeaconBlockHeader 相同的结构,不过使用的区块根状态永远为零(0x000...),因为状态不能递归包含自己的哈希;在图中表示为 “BeaconBl/ o . 2ockHe- * e & n j Eader”。

这么做的好处是,我们可以轻易的计算出区块根的状态——通过计算状态的根哈希,n e y o 3 0 d 4然后创建区块头的副本N s z ` H P m G *并插入正确的根状态,最后计算整个区块头的哈希(这个值会与收到的区块的哈希值相同)。

链接的区块能增加信任

区块链的重要特征就是,它以系统性信任(经由算法达成的处理器多数)取代了原来个体间的信任(交易对手或第三方)。

系统性信任又可以通过以下几个特征描述:

  • 大量处理器(例如,公有链)—— 这些处理器去s , % Y n 中心化程度越高,可信程度也越高。
  • 客户端多样性(例如,开发团队)—— 如果有多种客户端供使用者选择,就越能避免算法被集中掌控。
  • 开源 —— 既可以让公众检查算法,又可以进行分叉t ? y Z T(如果大) T 5 L * W多数c ] ~ * { ?人都希望改变系统方向h = a s)。

将区块链接在一起也# ; F A v # ` C i可以增强系统信任 —— 因为越早产出的区块,它具有的权重就越大。在一般的 分布式账本/分布式数据库 中,因为不需要系统性信任,所以不* [ [ d需要这种链接。仅对最新区块发动 51% 攻击也许会成功,但是如果你想改动 100 个时隙之前的一个区块,则攻击者必须在这V H / q ~ 100 个时隙都拥有控制着绝对多数的处理器(因此非常困难)。对于短程的分叉攻击W % c j,整个网络可能会对 “哪条链才W W I 5 ^是主链” 产生疑惑 —— 例如,两个竞争的区块以不同的速度在网络q D F中传播。但好消息是,由于区块被链接在一起,因此9 9 U J c X Y真正的主链会更快被确认,而其他分叉链都不再有机会反客为主。如此一来,安全性可以得到保证,系统也可从容允许验证者撤出自己的资金,不必担心 “无利害关系(nothing at stake)” 攻击。

上一篇

王一博越来越红,王义博越来越尴尬,网友:喜欢王义博拍的王一博

下一篇

明星成名前华晨宇判若两人,baby像洋娃娃,沈腾帅到认不出

你也可能喜欢

  • 暂无相关文章!

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
返回顶部