2021-10-27 10:01:54
在分析这三个项目之前,也许需要简单普及下分片到底是个啥? 分片在互联网领域早已有之,一般称之为数据库分片(database sharding)。它指的是将单个数据库中的数据,通过某种策略分摊到多个表结构与其相同的其他数据库中,这样每个数据库中的数据量就会相对减少很多,并且可以部署在不同服务器上,理论上能够实现数据库的无限横向拓展。 在区块链领域,道理也是相似的。分片指的是将区块链网络中的任务分摊给不同的节点进行处理的一种水平扩容方式。在这样的网络中并不是所有的节点共同参与一笔记账,而是有很多个小组,每个小组单独记账,通过这种并行处理的方式来提升整个网络的性能。
以太坊分片方案示意图,image by Hsiao-Wei Wang 分片的目标是能够在达成共识的同时,减少计算和存储冗余,并以足够快的方式处理交易或事务,同时保证网络有足够的安全性。 举例来说,假设目前网络中有 1000 个节点,可以将节点分为 10 个小组,每个小组内有 100 个节点,这样网络中的所有交易将会被分给这 10 个小组进行并行处理。
在分片的区块链网络中,并不一定所有的事务都需要进行分片,通常来讲分片有三种类型,分别为网络分片、交易分片、状态分片。 网络分片就是将整个区块链网络进行分组,每个小组叫做一个分片(shard),所有分片同时处理不同的交易,实现并行记账。或者称之为物理分片。
交易分片就是将交易随机分到不同的分片或小组,让某些节点进行记账,比如可以通过交易 Hash 或者地址进行分配,也可以通过 VRF 等随机的方式进行分配。 状态分片就是把完整的账本信息存储在各个分片中,每个分片内各自维护部分的账本信息。这里可能还会涉及到跨分片数据同步,跨片交易等问题,是最复杂的一种分片方式。