区块链的数据存储在哪里,如何保证去中心化?

区块链 2026-04-25

从概念上说,区块链的数据是存储在链上的;从物理上说,区块链的数据是存储在每个节点本地的机器的(当然了,现在有的节点是部署在云服务器上的,那数据也就在相应的云端了)。

这是最早比特币时代诞生的范式。

以比特币为代表的第一代区块链项目,不同的节点除了算力大小不同外,在其它方面都是基本上一致的。

每个节点都会在自己本地机器存储历史的和最新的区块数据,只不过这个机器,最早是计算机,后面成了专门的矿机。

这种存储方式下,因为每个节点都对数据进行了记录,因为,当少数节点试图篡改数据的时候,它也只能篡改自己本地存储的数据,而其它节点通过和自己的记录对比发现数据有篡改时,就会拒绝接受错误的数据。

所以比特币网络一直有一个51%攻击的说法,意思就是说只有有超过一半的节点都串通了一直对数据进行篡改,才能够成功。

其实也就是生活中少数服从多数一样的道理。

这样的好处是足够的去中心化,不过随着技术和应用的发展,这种存储方式的弊端也逐渐浮现,就是资源利用率低下,因为区块数量是只增不减的,所以存储区块链数据所需的硬盘空间也越来越大,以比特币为例,截止2020年10月的时候,一个完成的比特币区块链数据包大小已经超过了300GB,并且每个节点都需要存这么300多G的数据,想想是不是还是很费事的。

所以,为了解决,或者说缓解这个问题,先后有很多大牛开始了一系列的探索和实践,据我了解的方案大概有以下两种思路:

一种是对节点进行分类,有的节点来存储完整的区块链数据,即全节点;有的节点只存储交易的哈希(你可以理解为数据的目录),即轻节点,当轻节点需要数据本身的时候,可以根据目录索引去全节点调取相关的数据。至于谁是全节点、谁是轻节点,不同的链可能规则不一样,可以是自发的,比如比特币网络,矿工或者交易所出于安全和效率的考虑,一般都会自己搭建全节点,而一般用户日常偶尔使用,就可以只部署轻节点;也可以是通过投票选举的,比如现在很多DPoS型的公链,验证节点是通过投票选举出来的,必须保存完整的区块数据,以对区块链进行校验并执行出块任务;

另外一种是对链上链下进行分层,其实和节点分类有些类似,即链上只存储数据哈希,大量的实际的数据存储放到链下,链上可以通过零知识证明等方式对链下存储的数据进行验证,保证数据的可信和可靠。当然了,这种方式下,如果链下的存储网络一旦崩溃,链本身将遭受灭顶之灾,再加上零知识证明等密码学技术还在发展和完善的阶段,所以,至少到目前为止,还鲜有见到完全这么做的,一般从设计上还是会考虑把较新的交易数据放在链上,其它的历史久远的数据可能放在链下来存储。

其实这两种方法的思路非常的相似,最大的区别可能就是链下存储的节点可以完全不参与该链的相关行动,甚至可以是别的链或者非链来提供存储空间,而轻节点严格来说还是该链的组成部分之一。

其实话说回来,安全性、可扩展性、去中心化一直号称区块链的”不可能三角”,迄今为止,任何的所谓完美的解决方案,其实只是在三者之间做一个妥协和平衡,保证一定程度的去中心化,同时兼顾效率与安全性,就是目前的主流思路了。

免责声明:本网站、超链接、相关应用程序、论坛、博客等媒体账户以及其他平台和用户发布的所有内容均来源于第三方平台及平台用户。网站及其内容不作任何类型的保证,网站所有区块链相关数据以及其他内容资料仅供用户学习及研究之用,不构成任何投资、法律等其他领域的建议和依据。用户以及其他第三方平台在本网站发布的任何内容均由其个人负责,与本网无关。

相关文章