
5.5 数据存储的探索方向
数据信息上链意味着:第一,数据在区块链上的每个节点都要进行存储;第二,数据仅可读写,不可改删,因此数据被永久存储。因此,区块链数据存储的成本巨大,任何构建在链上的现实应用都需要优化存储解决方案。“分片”是目前区块链数据存储的主要探索方向。
1.分片的种类
分片是一种水平分区,是一种广泛使用的数据库设计原则,将大型数据库中的数据划分成很多数据分片(Shard),再将这些数据分片分别存放在不同的服务器中,以减小每个服务器的数据访问压力,从而提高整个数据库系统的性能。区块链引入分片技术,是为了解决可扩展性和交易确认延迟问题。
区块链分片按技术划分为网络分片(Network Sharding)、交易分片(Transaction Sharding)、状态分片(State Sharding)三种。
网络分片:将整个区块链网络划分成多个子网络,也就是多个分片。网络中的所有分片并行处理网络中不同的交易。在区块链中实现分片,网络被分成不同的团队(分片)。分片可以并行处理事务。每个节点只拥有区块链上的部分数据,而不是全部信息。因此,可以同时处理更多的事务。例如,想象一个有1000个节点的网络,可以将网络分成10个分片,每个分片由100个节点组成,速度可以提升10倍。
交易分片:由于网络分片是其他所有分片的基础,因此交易分片的前提是先进行网络分片。交易分片主要涉及的问题是哪些交易应该按照特定的属性被分配到哪些分片当中。
状态分片:状态分片的关键是将整个存储区分开,让不同的分片存储不同的部分,每个节点只负责托管自己的分片数据,而不是存储完整的区块链状态。状态分片可以减少状态的冗余存储,使得整个区块链网络具有存储的可扩展性。
2.分片面临的挑战
在私有区块链部署中,分片可能是有效策略,但在公共区块链网络使用区块链分片并不容易。最大的挑战之一是分片间的通信。当节点分配给分片时,与该节点相关的用户和应用程序会将分片视为独立的区块链系统,而不是大型系统的一部分。分片之间的通信可能难以建立,并且需要特定的开发工作来部署通信机制。即使有这种机制,分片间通信也会导致更大的开销,这会让分片的优势大打折扣。
分片也可能破坏更传统的区块链接带来的制衡。通过分片,用户不再下载和验证整个交易历史记录,因此他们无法确定数据的可靠性和不变性,这通常是根据交易块的链式序列来确定。如果没有这些安全机制,黑客就可以更容易地操纵或控制分片,这种情况被称为单一分片攻击,可能导致数据丢失或受损。
区块链分片的另一个挑战是共识和验证。不同的区块链方法依赖于不同的算法来跨节点达成共识。两种常见的算法是POW和POS。这两者都可确定如何在分布式网络中验证交易,但它们是以不同方式完成验证。一般来说,POS被认为比POW更适合分片。
对于如何部署分片,尚未标准化。可以通过不同的方法来进行分片,并且很多方法仍然在研究、开发或测试中。每种分片方法都有其优点和缺点,这使得难以确定行业标准。
3.分片的未来
对于公共区块链部署,可扩展性仍然是重大挑战,而分片正在成为解决此问题的主要方法之一。必须谨慎应用分片技术,以确保它不会对区块链过程产生负面影响或使数据置于风险之中。事实证明,区块链分片必须与其他技术结合使用,以提供必要的可扩展性,例如支持分片通信的新协议。在此之前,公共区块链存储可能仍然保持目前的整体性,直到随着它变得越来越大,性能逐渐下降。
4.现有数据存储与分片的案例
Swarm[2]是以太坊采用的点对点文件共享协议,允许用户将数据存在链下的Swarm节点,并在主链上交换数据。Storj是一种数据分片解决方案,将数据分片、加密、分散到多个节点,使用SCJX币支付激励节点的存储操作。IPFS[3]是一种P2P超媒体协议,是以内容寻址超链接为基础的、提供高吞吐量和内容寻址的块存储模型。