9.8 容量贪吃蛇:不断增长的区块数据

在说这个问题之前,大家可以试着先去安装一下比特币的核心客户端或者以太坊的客户端,然后进行主网络的数据同步,看看你的硬盘空间能不能承载。在2016 年7月的时候,比特币的区块链账本数据大小才80GB左右,而到了2017年的7月已经是130GB之多了。看起来好像问题不大,现在的硬盘动则几百GB 甚至上TB(1TB=1024GB),好像还不至于容纳不了这些数据。然而,这里面潜在的问题却并非只是依靠足够的存储容量能解决好的,如下图所示:

image.png

如图所示,区块链数据的大小是一直在增长的,对于运行着完全客户端的用户来说,虽然大小的增长可以预先估计,但是这么 大量的数据却不那么容易转移。倘若希望在另外一台计算机上运行完全节点,靠慢慢同步那可是有的等了,要直接复制转移那可是上百GB的数据,而且大小还一直 在增长,无穷无尽,只要比特币一直存在着,数据就会一直在增长,倘若数据量到了500GB、800GB乃至上TB,恐怕到时就连普通硬盘也承载不起了,而 以太坊的体积增长更加猛,发展才不过3年左右,由于大量的智能合约使用,体积已经超过200GB了。那么这样的潜在问题会引起哪些后果呢,仅仅是会占据更 多的存储空间吗?

(1)完全节点数减少

巨大的数据量,除了部分用户愿意提供设备外,大部分普通用户是不太愿意让自己的电脑被占据掉那么多的存储空间的, 而且这些数据对于用户来说,似乎并没有什么用,日常只是收发转账的话,有一个钱包客户端就足够了。如此,愿意安装完全客户端的用户就会越来越少,这对于比 特币网络来说不是一件好事。我们知道,比特币是一个点对点网络,之所以能够安全稳定地运行,依靠的就是大量的节点,无论是挖矿节点还是核心节点,这些是组 成比特币网络的基石。如果完全节点数大大减少,对比特币系统来说是很有危害的,等于慢慢就变成了一个中心化的网络系统,比特币的意义将不复存在。

(2)验证缓慢

我们知道,无论是哪一类区块链应用,客户端发起的每一笔交易事务或者合约状态变更等,只要是放入区块链账本的数 据,都要经过节点的验证,节点会怎么去验证?又没有服务器去直接查询,唯一的做法就是与本地的账本数据进行校验,比如检查余额对不对,来源合法不合法等, 那么在一个海量的数据存储中进行数据的校验匹配,速度效率能快吗?就好像手里拿了一本族谱,上面记录了从春秋时期到现在的人口继承关系,现在有人提了个问 题,要查一下某人是不是某个名人的后裔,需要去翻这本族谱。在浩如烟海的条目中,能快捷回答这个问题吗?这显然是很困难的。同理,区块链应用巨大的数据量 会导致数据的验证速度变慢,从而降低了区块链网络的处理效率。

有读者可能会说,像淘宝、京东、微信,它们的数据量也很大,而且恐怕还远远不止一两百GB,可是并没有发现使用这 些软件的功能有多延迟多缓慢啊。这是因为这些系统构造了一整套规模庞大的负载均衡系统,在全国分布有成千上万台服务器,总而言之就是将数据进行了切分,将 用户使用的请求分摊到很多的服务器上去。那区块链程序能不能这么干?就目前来说,还是很困难的。首先区块链应用基本都是开源系统,任何人都可以免费下载软 件源码,免费运行在自己的设备上,没有任何官方会为此而收费,而构建一个庞大的集群系统,需要大量的设备及人力成本投入;其次,对于区块链应用而言,每个 节点必须能够独立运行,尤其是具备完全功能的完全节点,节点之间并没有什么依赖,而如果将一个节点的运行拆分成一个集群,事情将会变得非常复杂,先不说技 术上的复杂性,本身也很难保证一个节点能够顺利访问整个的区块数据,如果一个节点上的数据被切分到了多台设备上,那谁能保证这些数据能够一起可靠的存在, 而且这样的话就必须保持这些集群服务器是联网的,否则节点将很难独自去验证数据或者访问区块数据,这就增加了不可靠的因素。区块链应用的理念就是通过一个 分布式、去中心化的网络结构,通过一套可靠的共识规则实现自治管理系统。如果一个完全节点自身都不能保证总是能可靠地访问完整的区块数据,那还谈何自治管 理呢?

关于这个问题的解决,目前有两个思路:其一就是区块数据的压缩,也就是剔除掉区块链账本中那些已经完全老旧的交易事务;其二就是,同样使用区块链技术来实现一个去中心分布式的自治存储系统。当然,这些都只是一些思路设想,真正要解决问题,还需要做大量的实验论证。

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=58

'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:使用AngularJs编写的简单 益智游戏(附源代码)  这是一个简单的 javascript 项目。这是一个拼图游戏,也包含一个填字游戏。这个游戏玩起来很棒。有两个不同的版本可以玩这个游戏。你也可以玩填字游戏。 关于游戏 这款游戏的玩法很简单。如上所述,它包含拼图和填字游戏。您可以通过移动图像来玩滑动拼图。您还可以选择要在滑动面板中拥有的列数和网格数。 另一个是填字游戏。在这里你只需要找到浏览器左侧提到的那些单词。 要运行此游戏,您需要在系统上安装浏览器。下载并在代码编辑器中打开此项目。然后有一个 index.html 文件可供您修改。在命令提示符中运行该文件,或者您可以直接运行索引文件。使用 Google Chrome 或 FireFox 可获得更好的用户体验。此外,这是一款多人游戏,双方玩家都是人类。 这个游戏包含很多 JavaScript 验证。这个游戏很有趣,如果你能用一点 CSS 修改它,那就更好了。 总的来说,这个项目使用了很多 javascript 和 javascript 库。如果你可以添加一些具有不同颜色选项的级别,那么你一定可以利用其库来提高你的 javascript 技能。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值