比特币白皮书-回收硬盘空间

Posted 哈希实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比特币白皮书-回收硬盘空间相关的知识,希望对你有一定的参考价值。

上一章,我们讨论了白皮书中的激励(Incentive),这一章,我们来介绍比特币白皮书中的回收硬盘空间(Reclaiming Disk Space)。

原文:

Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block\'s hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block\'s hash.Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored.

A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore\'s Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory.

 翻译:

如果最近的交易已经被纳入了足够多的区块之中,那么就可以丢弃该交易之前的数据,以回收硬盘空间。为了同时确保不损害区块的随机散列值,交易信息被随机散列时,被构建成一种Merkle树(Merkle tree)[7] 的形态,使得只有根(root)被纳入了区块的随机散列值。通过将该树(tree)的分支拔除(stubbing)的方法,老区块就能被压缩。而内部的随机散列值是不必保存的。

不含交易信息的区块头(Block header)大小仅有80字节。如果我们设定区块生成的速率为每10分钟一个,那么每一年产生的数据位4.2MB。(80 bytes * 6 * 24 * 365 = 4.2MB)。2008年,PC系统通常的内存容量为2GB,按照摩尔定律的预言,即使将全部的区块头存储于内存之中都不是问题。


 

 01   为什么要回收硬盘空间

截止目前为止,比特币网络的全节点数据规模已经达到了348.5G,也就是说如果一个新的节点想要同步比特币网络区块数据,至少要同步348.5G数据。

数据来自来自:www.blockchain.com


我们都知道,区块数据是由区块头和交易列表组成,而交易列表在溯源场景中是很重要的,但是针对比特币应用本身,其实没有溯源也不会影响交易,因此,在某些场景下,我们其实可以不需要交易列表,删除交易列表将会节省很多磁盘空间。

 

 02   什么时候回收硬盘空间

如果最近的交易已经被纳入了足够多的区块之中,那么就可以丢弃该交易之前的数据。根据计算,没有交易列表的区块,一年约产生4.2M数据。根据摩尔定律:处理器的性能每隔18个月翻一倍,得出结论,将所有的区块头数据存储在内存中也是毫无压力的。

 

 03   什么是Merkle树 

在计算机科学中,树(英语:tree)是一种数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点(图中的每个圆圈)组成一个具有层次关系的集合。之所以称之为叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的,而每个树的节点都由有限个子节点或无子节点(或称叶子节点)组成。图中,绿色的圆圈(C F H I J K)称为叶子节点,蓝色圆圈(B D E G)称为父节点,红色圆圈(A)称为根节点。


Merkle树中文默克尔树,又称哈希树。该概念是由瑞夫·墨克于 1979 年申请专利。Merkle树是一种典型的二叉树结构,树的每个父节点,都是由左右两个子节点数据相加后哈希的结果构成,树的最顶层节点叫做默克尔树根

若树的第N层存在奇数个哈希,则复制该层最后一个哈希补充到该层哈希列表中(为了满足二叉树结构,黄色节点复制了同一层的最后一个节点的hash)。

 04   为什么使用Merkle树(默克尔树)

因为Merkle树的特性,一旦修改交易数据,那么最终导致的Merkle根(默克尔树根)的哈希值将会有巨大变化,这一特点可以防止交易数据篡改。反过来想,通过Merkle根往下比对两个节点也可以快速定位是哪笔交易出了问题,同时Merkle树也为零知识证明(以后会讲到)提供了必要的帮助。

 

 05   回收硬盘空间是必要的吗?

我们知道回收硬盘空间,其实是删除了以前的交易数据,同时保留不被破坏的区块随机哈希值,但有时候并不见得回收一定是好事,比如当我们做交易溯源的时候,就没有办法溯源了,因为旧的交易数据已经被删除,这时,还是需要依靠拥有完整交易的节点才可以,因此,是否回收硬盘需要看具体的场景。


这一章,我们讲解了比特币白皮书中的回收硬盘空间。

下一章,我们将讨论中本聪的比特币白皮书——简化的支付确认(Simplified Payment Verification)。

 

期待您的点评、分享、关注、在看,您的鼓励是我写作的最大动力!



参考文献:

《Bitcoin: A Peer-to-Peer Electronic Cash System》 

https://bitcoin.org/bitcoin.pdf

《比特币白皮书:一种点对点的电子现金系统》

https://www.8btc.com/wiki/bitcoin-a-peer-to-peer-electronic-cash-system

《Merkle tree》

https://en.wikipedia.org/wiki/Merkle_tree

比特币白皮书

1. 目标:不通过权威第三方结构,构建一个可信的交易网站 2. 交易:描述了一种通过密钥签名进行交易验证的方式 3. 时间戳服务器: 区块及通过时间戳运算连接成一条链,说明了比特币数据的存储方式 4. 工作量证明: 介绍了一种点对点网络如何对各自的数据进行一致性确认的算法。 5. 网络: 介绍了交易确认的过程 6. 激励: 耗费cpu算力获得的奖励 7. 回收硬盘空间: 只对运行全功能节点的客户端才会一直保持完整的区块链数据 8. 简化的支付确认: 在这个模型下实现比特币支付功能,只需要保留体积相对很小的去块头。 9. 价值的组合和分割 10. 隐私 11. 计算

以上是关于比特币白皮书-回收硬盘空间的主要内容,如果未能解决你的问题,请参考以下文章

一起学习比特币白皮书--交易--比特币长什么样子?

比特币白皮书-计算

比特币白皮书-结论

比特币白皮书-简介

比特币白皮书-价值的组合与分割

动画《区块链100问》第3集:比特币白皮书的诞生