Hi Guest

More contents, please log on!

Bitmere.com 区块链技术 Content

以太坊分片:Overview and Finality

李悔之2015
16 0 0
在EthereumCasper101中,JonChoi对Casper做了一个很棒很清晰的综述,并解释了为什么显式最终确定性(explicitfinality)对于可扩展性(scalability)大有裨益。本文旨在给出一个以太坊分片的设计概览,并阐释显式最终确定性如何有助于区块链分片。为了完全理解以太坊分片机制提案的技术规范,我强烈推荐深入研究Vitalik写的shardingdoc.区块链可扩展性问题

    不断增长的交易。

    目前的块生成过程导致可扩展性受限。区块的gaslimit束缚了区块的计算容量。无论是提高区块的gas上限,还是大大降低区块时间,都会导致高陈腐率(highstalerate),并削弱网络对抗攻击的能力。

    并行不足。首先,现有的EVM按先后顺序依次处理交易。其次,出于安全和去中心化的考虑,每个全节点会执行每一笔交易,并存储整个(或修剪后)的状态树。

    进阶阅读:并行执行交易EIP648 — Easyparallelizability术语首先,让我们来看一下在主链(你可以理解为现在的Mainnetchain)和分片链(shardchain)上不同层次的对象区别:

    -表格1.术语-可以简单地这么认为,交易都会被装入“collation”。与区块类似,一个collation也会指向它在链(指的是分片链)上的parentcollation。成为一个“collator”,就意味着你有资格在POS分片链上提名一个新的collation。

    Collation基本数据结构一瞥-基本的二次分片分片链的共识依赖于主链与侧链类似,collation只有一小部分的证明必须记录在主链上—这也是我们如何扩展区块链的基本想法:

    分片链上的交易处于自己独立的空间中,分片验证人(shardvalidator)只需要验证他们所关注的分片。

    分片链也通过POS机制依附于主链,以获得更高层次的共识(higherlevelofconsensus)。

    验证人管理员合约(ValidatorManagerContract,VMC)为了将分片链加入到主链中,在主链上需要有一个叫做验证人管理员合约(VMC)的特殊合约。VMC是这个分片机制的核心。VMC的目的可以概括如下:

    权益证明系统。如果验证者表现不端,其权益将会被剥削。

    伪随机采样。通过将当前块哈希作为种子,采样出合格的collator。基本上,验证者将它们的保证金(stake)存入VMC,然后他们的验证代码地址(validationcodeaddress)将会被记录在一个VMC内部的全局验证人列表(aglobalvalidatorspoollist)。系统将会从验证人列表中采样出一个分片链的验证人,并将其指定为指定“时期(period,下面会解释什么是period)”内,指定分片的验证人。这种方式使得验证者无法提前预测他们何时会成为验证者,也无法预测会成为哪个分片的验证人。

    Collationheader验证。VMC有一个addHeader(bytescollationHeader)函数,该函数用=来验证collationheader,并记录有效的collationheaderhash。这个函数提供了即时的链上验证。

    跨分片通信(cross-shardcommunication)。利用UTXO模型,并通过在主链上进行交易和创建一个receipt(带有receiptID),用户可以将以太存入一个指定分片。分片链上的用户可以给定receiptID创建一个消费receipt(receipt-consuming)的交易,来花费该receipt。

    链上治理(on-chaingovernance)。将VMC作为议会,使得验证人可以在链上进行投票。

    如何在分片内提名Collation?在阶段1,VMC将会维护100个分片(SHARD_COUNT=100)。每个分片并行执行,分片i的客户端只需要验证分片i上的交易。“时期(period)”被定义为一个区块时间的准备窗口(aboundingawindowofblocktimes),比如PERIOD_LENGTH=5意味着每个周期有5个块。这表明在每个周期内,对于每个分片只有不超过1个有效的collation。

    二次分片。分片状态的证明将被记录在主链VMC上。-

    一旦验证人被采样为合格的collator来提案一个新的collation,collator必须对最近的collation进行验证,并发送一笔交易来调用addHeader函数。注意,如果collator周期10被采样到提交一个新的collation,这意味着addHeader交易必须被包含在周期10里面,也就是说,交易必须在区块号10*PERIOD_LENGTH到区块号(10+1)*PERIOD_LENGTH-1之间.-图片2(b).对于一个片来说,一个period只有一个collation;一个区块可以包含不同片的多个addHeader交易-collationheaderhash必须被记录在VMC上,以证明它的header全局有效。此外,分片的所有其他验证人必须时刻检测VMC以获得最新状态,然后验证交易是否也有效。分片链的分叉选择规则(forkchoicerule)在基本分片中,分叉选择规则依赖于最长主链。给定一个分片,它的有效headcollation不是简单的“最长有效分片链(longestvalidshardchain)”的headcollation,而是“在最长有效主链里面的最长有效分片链(thelongestvalidshardchainwithinthelongestvalidmainchain)”。Figure3(a)中有个例子,主链上有两个分叉,在下图中第二条链是最长有效主链。因为blockB3是headblock,很容易看出collationC3是headcollation。

    然后Figure3(b)中blockB3'到了。假设blockB3的得分(score)高于blockB3',那么上面的链仍然是最长主链:

    最后Figure3(c)到了block4。注意到,对于这个分片,虽然collationC3的得分比collationC2更高,但是下方的链是最长有效主链,所有现在collationC2是headcollation:

    更多内容:另一个设计—VladZamfir的shardedforkchoicerule

    -一个精巧的设计,保证区块链可以在它们被最终化(finalized)之前原子化-可扩展性与安全性之权衡对于去中心化,可扩展性和安全性这三个属性,区块链系统最多只能三选其二。—BlockchainTrilemmainShardingFAQ出于对系统安全的保证导致了可扩展性受限3。当为了提高TPS(每秒交易数)将交易分配到各分片的同时,我们随之也减少了每笔交易的计算资源。分片的其中一个重要机制就是,如何在链上生成随机数。

    collator被选中的几率,应该仅与验证者的保证金相关,且成比例。

    如果验证人能够预测,或是任意选择他们想要参与的分片,那么不诚实的验证人既可以相互共谋,展开一个适应性攻击(adaptiveattack)。

    如果采样不能以较高的随机性进行选择,那么攻击者很可能在分片中展开1%攻击:如果有100个分片,攻击者可以专注于攻击某一个分片,他们只需要1%的hashrate(POW)/deposit(POS)就可以控制分片.

    传统的多数攻击(51%攻击)-

   分片上的1%攻击-分片的区块链显式最终确定性隐式最终确定性v.s.显式最终确定性首先,我必须声明,分片机制应该同时能够应用于POW与POS的链。即使如此,显式最终确定性这个小物件也跟Casper一样,可以使得分片更加健壮。在一般的POW链中,最终确定性是概率性,隐式的。简单来说,即使区块获得了数以千次的确认,仍有可能对链进行重写。相反,将CaspertheFriendlyFinalityGadget(“FFG”)加密经济机制应用于POS,显式地在协议内(in-protocol)强制保证对我们来说,是否是最终确定(we-can-check-if-its-finalized-for-us)。[来自Vlad]协议内显式最终确定性阈值有个经济风险:它在2/3+1和1/3+1之间创造了一个理想的卡特尔大小(cartelsize)。相应地,任何不在2/3+1同盟节点(coalition),其最终确定性的边际贡献就将为0。主链最终确定性依赖在基本分片中,分片链锚定与主链之上。对于分片验证人,我们希望分片,区块链容量在阶段1扩容100倍,因此这100个分片的所有验证人,都将需要监测VMC状态来获得正确有效的headcollation。对于验证人来说,重要的一点是,要尽快确信他们是否是collator。对于普通用户而言,如果我们在阶段2应用跨分片交易,普通用户也将需要在VMC上检索他们的保证金信息(receiptID)。显式最终确定性,将会有助于缓解主链与大量分片链之间同步的不确定性。显式最终确定性有助于无状态客户端无状态客户端的基本原则是,它不存储整个状态树,相反,无状态客户端只存储状态树根。归档客户端(archivalclients)存储整个状态树,并提供给定collation所需的Merkle分支。有了这些Merkle分支,无状态客户端就能够构建部分的状态树,并验证collation。一旦完成验证人采样并再混洗(reshuffle),就会立刻触发同步。有了无状态客户端机制,再混洗(也就是改变验证者检测的分片,并同步分片链)的成本低至(接近)0,因为它们只需要验证最新的collation(也就是有着最高得分的collation)来同步分片。

   无状态客户端模型Figure6.Statelessclientmodel-因为同步过程可能非常快,无状态客户端模型就可能在每个collation之间再混洗成。这不仅会减轻存储压力和开销,也会使系统更安全,因为频繁采样能够获得适应性攻击的抵抗能力。CasperFFG将会提供显式最终确定性阈值afterabout2.5“epochtimes”,也就是说,125个区块时间。如果在再混洗期间,验证人能够验证超过125/PERIOD_LENGTH=25collation,分片系统能够从显式最终确定性中受益,确信从现在起的前25个collation可以最终确定。当然了,如果在同步时有更多collation得到验证,就会更加安全。结束语希望我已经对当前以太坊的分片设计概念作出了简单介绍,以及显式最终确定性如何有益于分片机制。
BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
You have to log in before you can reply Login | 立即注册

Points Rules

Write the first review

李悔之2015 初中生
  • Follow

    1

  • Following

    0

  • Articles

    13

59600
Promoted