区块链研习 | 区块链中的默克尔树,解决数据量过大的问题

2017 年 12 月 13 日 AI金融评论 敖萌

雷锋网AI金融评论按:本文作者为中国信息通信研究院(工信部电信研究院)专家敖萌博士,雷锋网独家特约文章,雷锋网(公众号:雷锋网)与信通院子公司泰尔英福(微信号Teleinfo_)联合首发。未来,敖萌博士原创的区块链系列文章还将继续刊出,敬请关注! 


回忆一下本系列第一篇文章中,我们讲的区块链描述:


区块链是实现无中心分布式总账的一种技术。除了采用块、链结构的典型区块链以外,还有其他的方式实现分布式总账这个需求。总账技术的基本单元是‘交易’,整个账本是由一条条的交易构成。‘块’类似于账本中的页,每页都记录了若干条交易,把一页一页的账页按照时间顺序装订起来,就形成了一个完整的账本——‘区块链’。‘块’是交易的容器,‘块’通过密码学算法相连接,形成了按照时间序列的‘链’。这种组织账本的好处是由密码学算法保证了无法篡改链上的单独交易,除非整体性的篡改。”


根据描述,我们可以看出来,“块”是交易的容器。每个交易都要放到容器里面,然后把整个容器用密码学算法进行连接,形成了一个完整的链。


这种数据的组织方式最大的好处就是数据易于保持完整,并且从密码学角度看安全性较高。然而,这个好处是有代价的——数据一直不停的增长。 


对于比特币系统来说,这个问题并不大,因为截止目前为止,比特币仍然是每10分钟一个区块,每个区块1MB,即便到了100年后,总的数据量也不会大到单机无法处理。但是对于某些企业级应用的区块链系统来说,情况就完全不一样了。每个区块可能会非常大,生成区块的速度也会非常快。这种情况下,区块链的数据量增长是飞快的。


怎么解决数据量过大的问题呢? 

在我们传统的数据系统中,也存在数据不断增长,数据量过大的问题。以传统的交易型系统为例,由于系统中的核心设计理念是保存账户的最终状态,只需要把历史的交易过程数据移到其他专门的存储设备上,主机数据库保存账户的最新状态和最近一段时间的交易记录即可。(因此,我们在网银中查阅历史交易时,通常是有时间限制的。)


但是在区块链系统中,尤其是使用UTXO方式存储交易的区块链系统中,保存的都是交易的过程。如果一个账户一直没有交易,它则不会出现在最新的区块中。 


那么按照传统数据库删除历史数据的方式,只要一个区块中有一个交易一直没有后续交易(就是没有人使用这个交易的输出账户),为了维护整个区块链系统的密码学完整性和安全性,这个区块就必须保留,同时这个区块之后的所有区块也必须保留。 


怎么解决这个问题?其实有很多种办法能够解决,起初,在中本聪设计比特币系统的时候,已经预留了一个最佳的解决方案:默克尔树(Merkle Tree)算法。


在比特币区块链系统中,区块的结构如下图所示:


 


每个区块中的Hash1就是本区块中所有交易的哈希值。但这个哈希值不是把所有交易连成一个长字符串后计算HASH值,而是使用了默克尔树(Merkle Tree)算法来计算获得这个HASH值,我们称之为Merkle根。

 


默克尔树算法并不是直接计算整个字符串的Hash值,而是每个交易都计算一个Hash值,然后两两连接再次计算Hash,一直到最顶层的Merkle根。


默克尔树(Merkle Tree)算法的最大好处就是,每个交易都可以单独直接删除,只保留这个交易的Hash值即可。这样,对整个区块来说,并没有改变他的密码学安全性和完整性,但是数据量可以大大减小。(Hash值32个字节,而一笔交易一般要400多个字节)。如果一个区块中只有一个交易没有后续交易,那么删除其他所有交易,整个区块的数据量会大大减小。


因此,在UTXO的记账模式中,使用默克尔树结构,通常就无需担心数据量一直增长导致数据过大的问题了。 



【今日福利】在区块链从概念走向实践,从实验室走向市场之际,AI慕课学院联合雷锋网AI金融评论将共同开启一场关于区块链案例实践的技术盛宴。


在接下来两个月的时间里,我们每周都将会有一位来自互联网大公司、金融机构、创新企业等海内外具有一线技术实践经验的重磅嘉宾亲自为您解剖——区块链技术应用落地的来龙去脉!


关注雷锋网旗下公众号“AI金融评论”,点击底部菜单“大讲堂”报名,收看直播。(直播观看免费,回看录播收费)


登录查看更多
0

相关内容

区块链(Blockchain)是由节点参与的分布式数据库系统,它的特点是不可更改,不可伪造,也可以将其理解为账簿系统(ledger)。它是比特币的一个重要概念,完整比特币区块链的副本,记录了其代币(token)的每一笔交易。通过这些信息,我们可以找到每一个地址,在历史上任何一点所拥有的价值。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【CVPR2020】视觉推理-可微自适应计算时间
专知会员服务
12+阅读 · 2020年4月28日
【中国人民大学】机器学习的隐私保护研究综述
专知会员服务
131+阅读 · 2020年3月25日
最新《分布式机器学习》论文综述最新DML进展,33页pdf
专知会员服务
118+阅读 · 2019年12月26日
智能交通大数据最新论文综述-附PDF下载
专知会员服务
104+阅读 · 2019年12月25日
资源|Blockchain区块链中文资源阅读列表
专知会员服务
43+阅读 · 2019年11月20日
【白皮书】“物联网+区块链”应用与发展白皮书-2019
专知会员服务
93+阅读 · 2019年11月13日
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
已删除
将门创投
9+阅读 · 2018年12月19日
区块链隐私保护研究综述——祝烈煌详解
计算机研究与发展
22+阅读 · 2018年11月28日
【大数据】海量数据分析能力形成和大数据关键技术
产业智能官
17+阅读 · 2018年10月29日
【区块链】区块链是什么?20问:读懂区块链
产业智能官
8+阅读 · 2018年1月10日
【动画连载】3分钟了解什么是区块链(中文动画)
A Survey on Bayesian Deep Learning
Arxiv
63+阅读 · 2020年7月2日
Arxiv
35+阅读 · 2019年11月7日
Arxiv
7+阅读 · 2019年5月31日
Arxiv
22+阅读 · 2018年8月30日
Arxiv
19+阅读 · 2018年6月27日
Arxiv
7+阅读 · 2018年1月10日
VIP会员
相关资讯
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
已删除
将门创投
9+阅读 · 2018年12月19日
区块链隐私保护研究综述——祝烈煌详解
计算机研究与发展
22+阅读 · 2018年11月28日
【大数据】海量数据分析能力形成和大数据关键技术
产业智能官
17+阅读 · 2018年10月29日
【区块链】区块链是什么?20问:读懂区块链
产业智能官
8+阅读 · 2018年1月10日
【动画连载】3分钟了解什么是区块链(中文动画)
相关论文
A Survey on Bayesian Deep Learning
Arxiv
63+阅读 · 2020年7月2日
Arxiv
35+阅读 · 2019年11月7日
Arxiv
7+阅读 · 2019年5月31日
Arxiv
22+阅读 · 2018年8月30日
Arxiv
19+阅读 · 2018年6月27日
Arxiv
7+阅读 · 2018年1月10日
Top
微信扫码咨询专知VIP会员