Ethereum 2.0 (也称为“Serenity”) 指的是以太坊核心协议的下一次重大升级,也就是“第一层”(Layer 1) 的几项改进。它试图通过引入分片(Sharding)、PoS共识(CasperFFG)、信标链(Beacon Chain)和新型虚拟机(eWASM)等改进和维护自身。此外,第二层(Layer 2)扩展性解决方案已有Plasma、State Channels、Payment Channels和ZK-STARKs等。

目前,共有9个独立开发团队建设ETH 2.0客户端:Prysmatic Labs、ChainSafe、PegaSys、Harmony、ParityTechnologies、Sigma Prime、Status、Ethereum Foundation、Yeeth。以太坊Github主代码库贡献者数量超过400人。在一定程度上,几乎可以说以太坊代表了基础公链甚至行业的最高技术水平。它的发展阶段、面临困境和探索方向同样是整个行业共同面临的。

风起于青萍之末,我们应见微知著。大风是自小风发展而来,大影响、大思潮、大趋势也都是从微细不易察觉之处源发。一叶落而知秋,我们决定推出Ethereum2.0一系列解读文章。本文为第二篇,以太坊/加密行业分片篇。

1.分片的提出

区块链系统中有一个三难困境,可以用一个称为DCS三角形的三角形来表示,它所表达的意思是不可能同时实现去中心化、一致性和可扩展性,权衡是必要的(你可以选择任何两个,但不是全部)”。

图片12.png

资料来源:EthHub;数链评级

目前,在所有区块链协议中,每个节点存储整个状态(帐户余额、契约代码和存储等)并处理所有事务。这提供了大量的一致性,但极大地限制了可扩展性:区块链不能处理比单个节点更多的事务。正因为如此,比特币被限制在每秒3-7笔交易,以太币被限制在7-15笔交易,等等。
 
是否能创建一种新的机制,其中只有一小部分节点验证每个事务?只要有足够多的节点验证每个事务,那么系统仍然是高度安全的。但是,在整个验证器集中只占足够小的百分比,系统就可以并行处理许多事务,难道我们不能将事务处理划分到更小的节点组中,从而大大提高区块链的总吞吐量吗?
 
分片(shard)就是解决这一挑战的一种尝试。它意味着将大型链(数据库)划分为更小、更快的链,从而使整个系统更具可扩展性。为了解决可扩展性问题,我们将存储在主链上的状态和历史分割为碎片。每个分片都管理自己,有自己的事务历史,并且某些分片中的事务的效果仅限于该分片。
 
分片是区块链扩容的链上解决方案之一,市场上众多项目都采用了分片技术。

图片13.png

资料来源:数链评级
2.分片的基本思想是什么
把状态分成 K=O(n/c) 分区,我们称之为“分片”。以太坊的创始人Vitalik Buterin称其为“通过1000山寨币增加扩展性”。例如,Ethereum上的分片方案可能将以0x00开头的所有地址放到一个分片中,将以0x01开头的所有地址放到另一个分片中,等等。在最简单的分片形式中,每个分片也有自己的事务历史,并且某些分片中的事务的效果仅限于同一分片中。一个简单的例子是多资产区块链,其中有许多分片,每个分片存储余额并处理与一个特定资产关联的事务。在更高级的分片形式中,存在某种形式的跨分片通信功能,其中一个分片上的事务可以触发其他分片上的事件。
3.分片的基本设计是什么

在特定分片上被称为校对器(Collator)的节点的任务是创建校对块(Collation),校对块是一种包含关于所涉及分片的重要信息的特定结构。这些校对块就像对特定分片的状态和交易的简短描述,每个校对块都有一个校验头(Collation Header),是包含以下信息的数据片:

1).关于校对块所对应的分片信息(比如分片10)
2).在所有交易生效前,相关分片的最新状态信息
3).在应用所有交易后,分片将变成的状态
4).来自分片上占所有校对器数量 2/3 的校对器数字签名,确认校对块是合法的。

然后,超级节点将把所有分片中的校对块放到以太坊区块链中将要添加的区块中。他们的职责是处理所有校对块中的交易,并通过汇总他们的校验头来维护所有分片的状态。在这种新的区块链中,满足以下条件时,区块是有效的:

1).在所有校对块中的交易有效
2).校对块的状态与交易前校验块的最新状态一致
3).校对块交易后的状态与校验头所指定的状态一致
4).校对块被所有校对器的2/3签名

4.分片技术面临的挑战

1).跨分片通信 - 上述设计不支持跨分片通信。我们如何安全地增加跨分片通信。
2).单分片接管攻击 - 如果在一个分片中攻击者接管了大多数协调者,要么获取足够的签名来阻止任何排序规则,要么更糟糕的,提交无效的排序?
3).欺诈检测 - 如果得到一个无效的排序规则,节点(包括轻节点)如何能够可靠的得知,以便它们可以验证欺诈行为并且确认是欺诈行为之后拒绝这个排序规则?
4).数据可用性问题 - 作为欺诈检测的子集,排序规则中缺失数据这种特殊情况会怎么样?
5).超二次分片 - 在n > c^2的特殊情况下,在上面给出的简单设计里面,将会有超过O(c)的排序头,因此普通节点将不能处理它们,只能处理顶级区块。因此,在交易和顶级区块头直接超过两级的间接寻址是需要的(即我们需要”分片的分片“)。达到这个目标的最简单和最好的方式是什么呢?
数链评级从分片方式、分片技术、共识、技术团队等方面对比了几个典型的采用分片技术的项目,如下表:

15891379659906617.jpg