区块链账本保存在哪儿?

发布时间:2020-07-21 14:40:06 作者:Mos 阅读量:659

传统概念里面,所有上链的数据肯定就是每个节点都存储,大家看到才相信。

但是很明显,数据量越来越大之后,cpu,网卡,io和空间等都出现瓶颈了,大家快玩不动了,就出来了比特币的隔离验证,SPV,以太坊的light node以及fast sync等技术,减少存储量和部分挖矿功能,但是不降低验证能力。

目前,还有一些新的扩容的方式,利用zkp等技术将复杂计算和存储转成非交互式证明,其他节点不用发起实际计算和存储就证明交易的合法性。

区块链和去中心没有那么神奇,所谓的去中心并不是指用了区块链中心就消失了,而是用多个节点共识的方式取代了传统中心一个人说了算的情况。于是,去掉的是“中心化”而不是“中心”本身。具体到数据,数据实际上是储存在了所有参与共识的节点那里,所以单说数据量的话,是比传统中心要更大了,因为增加了多份冗余。

当然,题主也看到了,人人都存这么一份数据库是不现实的。所以,目前所有的区块链,公链也好,联盟链也好,数据都是存在少数有意愿和有能力运行整个数据库的人那里的。



简单回答:区块链的数据就是存在每一个节点中(可以是个人机,也可以是其他);区块链的确是一个公众可以修改的数据库,只不过你只能够使用你持有的秘钥,修改你秘钥相对的"账户"的数据。

不过,不同的区块链的数据存储方式与数量是不同的。已 BTC 为例,其数据是存在每一个节点中,目前 BTC 的节点数据大概是200多G,其增长速度是每个月10G左右,个人机问题不大的。

但是,数据量的确是越来越大了!至少很快个人笔记本就很难运行 BTC 全节点了。对于以太坊来说,记录了所有数据的存档节点应该有数 T 的存储量,这对于个人机来说是不可能运行的。

值得一提的第一点,需要区分存储的是数据本身还是数据哈希。

一般来说,BTC 数据存储的方式是使用 Op_Return 的操作码,其只能够存储 80 Bytes。在这种情况下,用户想要在 BTC 存储图片等大文件是不可能的。因此这里存储的是数据哈希,而数据本身则会存储在类似 IPFS、Swarm 这样的去中心化存储网络中,也存在通过多链方式进行数据存储的,譬如 Fatom 这样的项目白皮书可以看看。

有两类数据,全部重复地存在每个全节点里面,全量复制,有n个全节点就有n倍的冗余。最初的设计就是这样,btc eth都是这个德行。

一类的全网每个用户以及合约的最新状态,比如每个人的账户余额,这个数据存在内存里面。

另一类是全网状态的历史修改记录,也就是log,这个东西放在硬盘上。这个部分数据是我们所说的区块链,前面那个是由区块链重建出来的状态。

这不是很离谱,可区块链就是这么个设计,每一台电脑,实际上承载了整个网络的工作量。这也是区块链性能瓶颈的根本原因。

当然,技术还是在发展,后续有技术可以将网络分而治之,就是我NSDI'19 的论文。

区块链的去中心化后,没有那种中心数据库了吗?

真正的区块链是没有中心数据库的。但很多应用场景因为历史遗留问题不能完全颠覆,因此存在区块链与中心化服务器共存的状态,需要逐步迭代。老项目经过漫长的迭代,最终可以替换掉中心化的数据库。而新项目则一开始就可以是去中心化的。

没有中心数据库了数据存在哪里呢?

数据存在于构成区块链的共识节点中。共识节点就是服务器,只不过这些服务器没有一个服务器是中心服务器。除了共识节点之外,还有一些全账本客户端也保存有全部数据。

难道要存在每一台个人机中,数据量岂不是太大了?

至于数据量是不是特别大,答案是肯定的。但不必担心,科技在进步,时代在发展。20年前一张1.44M的软盘就能装天下了,而如今连个动图表情包都比它大。但根据摩尔定律,存储设备的容量会增加,价格会降低。未来网速越来越快,因此不必担心数据是否太大。

还是说区块链实际上还是一个公共可修改的中心数据库?

区块链并不是一个公共可修改的中心数据库。公共可修改的中心化数据库类似维基百科。而区块链并无中心结构,也无中心数据库。

转载请注明出处:文思齐远博客,如果对您有帮助,请帮忙点一下右侧的广告,谢谢您了!
支付宝打赏 微信打赏

我要评论

猜你想搜

实时天气

©2020 i847.cn
部分内容转自网络,如有损害您的权益,致邮联系:jiang2008wen#126.com,一经证实,立即删除!    我要留言
备案号:蜀ICP备18020563号-1