# 分片节点如何突破“数据膨胀"难题？

By [tuplesong](https://paragraph.com/@tuplesong) · 2022-06-20

---

2020的区块链公链的发展又迈向了新的行业里程碑，包括应用创新、生态联合等多方向齐头并进发展。然而繁荣背后，限制行业发展桎梏依旧存在，资本推动一时的繁荣，但真实的价值依旧要依靠技术去实现。

**当下，区块链公链的主旋律依旧是创新。**

公链行业目前依旧存在安全、性能、生态扩展、用户体验等核心问题。比特元项目也一直致力于对于桎梏公链行业发展核心痛点领域的突破。

从2018比特元项目上线便以独创的公链-平行公链架构方案，为困扰公链行业发展的不可能三角问题及跨链问题提供了一种方案。行业内，相同类型解决方案直到19年，20年才陆续提出，而落地实现则需更久。

目前比特元公链又向\*\*“数据膨胀”\*\*这一痛点发起挑战，旨在解决普通用户参与公链节点中面临的数据膨胀导致的用户体验、主网安全的问题。

**什么是数据膨胀**

公链本质上一个分布式存储的账本，这个账本由公链网络中的所有用户共同维护，每个用户手中都可以拥有一份完整的账本，这个账本就是公链领域中的节点。所以，公链的安全性、去中心化性的根源来自于节点。节点数量越多整条链的**安全性和去中心化性**越高。

但这个账本并非一成不变，随着日积月累，这个账本的数据将会一直扩大，最终大到对于普通用户来说将难以维护，难以保存，这就是通常所说的**数据膨胀**问题。

**数据膨胀问题将会困扰公链生态的进一步扩张和安全性和去中心化性的限制**。以比特币公链为例，截止目前运行一个比特币全节点的数据量已经为347G左右。而普通的家用电脑普遍硬盘存储空间为256G左右，如果维持一个全节点钱包不仅需要扩展设备存储，还极大影响电脑性能。这些对于普通用户来说几乎没有主观能动性来维护这样一个节点，这也是比特币公链截至目前节点数依旧维持在10000个节点左右的原因。

![数据来源：Tokenview](https://storage.googleapis.com/papyrus_images/0ca821bcc38d677082abe63d0c790718aeea30ff400323106440a9b395009912.png)

数据来源：Tokenview

反观，比特元区块链节点也面临相似的问题，目前比特元全节点数据为47.5G，经社区用户反馈，维持一个完整节点对于电脑资源的占用以及性能的影响也是较大的。从近段时间的节点变化数据，我们也可以看出，不挖矿的用户缺乏对节点维护的动能。

总结：数据膨胀带来的负面影响主要是对普通用户的限制，而对于资源大户和机构来说，这些资源消耗并不是问题。长此以往，公链发展普通节点将会越来越少，节点渐渐走向中心化、机构化的方向，这与**公链共享**的本质相冲突。

**那比特元是如何解决公链数据膨胀问题，同时保障网络数据的安全性呢？**

**比特元分片节点**

比特元借鉴参考IPFS(星际文件传输系统)DHT网络模型，实现将比特元节点数据分片存储。通过将全节点数据分片的方式，让每个节点维护公链的部分数据。这些存储BTY公链网络部分数据的节点我们称之为分片节点。分片节点虽然只存在部分数据，但随时与公链网络中其他节点通过DHT网络模型链接，可以及时同步向其他节点请求缺失数据，又可向其他节点共享自己存储的数据，保障自身数据的完整性和连续性。

**举个例子简单理解分片节点的概念**

假设现在有一串100位的数字，需要5名同学在10分钟内完成记忆，单独的任何一位同学都很难在10分钟内记忆100位数字。但是，我们只需将100位数字分配成5段，每段数字20位，再分配给不同的同学进行记忆，这样10分钟就可以轻松记忆复原这100位数字。相应这种例子和方法，大家在生活中也会使用到，有兴趣的朋友可以自主尝试。

![100位随机数字](https://storage.googleapis.com/papyrus_images/ff4302555c78cd665db477747c280cd22ea6febb9696c77a878dfc2ae7dec8a7.png)

100位随机数字

**分片节点如何保障主网数据安全性？**

比特元网络采用全节点与分片节点共存的模式，也就是说社区用户可根据自身的设备资源自主选择成为何种节点。

![全节点与分片节点共存的主网架构](https://storage.googleapis.com/papyrus_images/3e3a2fd7b9ddfedb8b827ec09534bc0e0e4eaa865e05f7ef973172626b211480.png)

全节点与分片节点共存的主网架构

全节点可直接访问本地数据库，在数据查询、请求方面具备优势。分片节点可能面临部分节点缺失，需要请求其他节点，在数据查询请求方面又延迟，**在真实场景中这个延迟只是毫秒级别，不影响用户体验。**

分片节点的数据安全性是由整个公链网络决定的，分片节点和全节点数据可实时共享同步，且随着节点门槛降低，比特元节点更多，比特元主网数据将会更加安全可靠。

如果存在所有用户都不维护全节点，都维护分片节点，是否对主网数据的完整性、安全性造成影响。未来社区会支持一批固定的种子全节点，同时对于比特元挖矿用户来说，运行一个全节点会更方便，数据安全也不受网络影响，两方面保障主网中全节点的固定数量。

**节点是如何实现数据分片的？**

选择成为分片节点后，新分片节点将向老节点同步部分数据，确保网络中所有分片节点数据规模相同且互补。

**分片节点是否会影响主网的验证安全？**

比特元网络中所有节点，无论是分片节点还是全节点将保存同步前10000个区块，确保网络的同步验证安全。当存储区块超过10000个节点后由智能合约自动执行区块的分片删除，确保存储分片节点的存储空间

---

*Originally published on [tuplesong](https://paragraph.com/@tuplesong/eiqF3ViE0dCQkZ7R8Pbe)*
