美文网首页区块链研习社
只字不差地阅读比特币原版白皮书(八)——回收磁盘空间(Recla

只字不差地阅读比特币原版白皮书(八)——回收磁盘空间(Recla

作者: c92c227e63d3 | 来源:发表于2018-08-14 19:19 被阅读58次

    上一篇文章对比特币白皮书的网络篇进行了只字不差地研读,点此回顾激励篇

    比特币网络系统激励机制:

    • bitcoin总量恒定、没有中央权威机构发行、需要投入算力资源才能获得奖励
    • 城市的节点收益大,作恶的节点收益小、代价大
    • 所有bitcoin挖完(新区块生成奖励)之后,依然可以依靠交易手续费来获得奖励

    Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarder to save disk space.

    一旦最近的交易被足够数量的区块覆盖之后,这个交易之前所有的交易信息就可以被丢弃掉了从而节约硬盘空间。

    To facilitate this without breaking the block’s hash, transactions are hashed in a Merkle Tree, 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 bytes624*365=4.2MB per year.

    一个不包含交易的区块头只有差不多80个字节那么大,如果按照10分钟生成一个区块的话,那么一年产生的区块头大小就是4.2MB。

    With computer systems typically selling with 2GB of RAM as of 2008, and Moore’s Law predicting current growth of 1.2 GB per year, storage should not be a problem even if the block headers must kept in memory.

    2008年大多数电脑的内存是2G,根据摩尔定律每年上涨1.2G内存的趋势,就算是区块头必须保存在内存里对于内存容量来说也不是问题。

    这一章的核心内容就是删除不必要的交易信息,节约硬盘空间。要理解这个机制,必须弄清楚一个概念就是默克尔树(Merkle Tree)。

    白皮书插图

    白皮书中的插图很直观的解释了Merkle Tree,它是一个层层向上的哈希归并的数据结构,数据的完整性层层锁定,修改任意一个地方都会引起后续的连锁反应。

    如图,假设一个区块中有4笔交易(TX0-TX4),首先分别对每一笔交易做一次哈希运算,得到对应的哈希值(Hash0-Hash4),然后得出的哈希值两两配对继续做哈希运算(Hash0和Hash1得到Hash01,Hash2和Hash3得到Hash23),然后Hash01和Hash23两个哈希值再做一次哈希运算,得到根哈希值(Root Hash)。只有这个根哈希值被保存在区块头中,而剩下的交易信息都可以删去。这样既可以解决硬盘空间,还能够保证交易信息不被篡改(根哈希值下的任意一处信息发生变化,根哈希值就会变化)。

    Merkle Tree

    插图中一个区块只有4笔交易,实际情况中,比特币一个区块大约有4000笔交易,但是得出根哈希值的步骤也是一样的。从4000多笔交易信息到4000多笔哈希值,一直向上两两归并,计算得出根哈希值。

    在2016年以前,即使记录所有的交易记录,对于一般的PC来说也是可以接受的。但是随着最近几年比特币共识的迅速扩大,2018年一个包含全部交易信息的全节点钱包已经需要100多GB的硬盘空间了,并且还在持续增加中。

    虽然普通PC保存全部交易信息,运行全节点钱包很不现实,但是整个比特币网路依然需要一些大的节点去保存全部的交易记录。而一般用户可以用轻钱包、网络钱包,他们对存储空间要求很低。

    最后总结一下:比特币区块链的全节点数据量越来越庞大,必须使用Merkle Tree(一个层层向上的哈希归并的数据结构,数据的完整性层层锁定,修改任意一个地方都会引起后续的连锁反应)来减少数据量,同时还保证交易数据不能被篡改。普通用户不必同步全部交易数据,使用轻钱包即可。


    相关文章:
    只字不差地阅读比特币原版白皮书(一)——摘要
    只字不差地阅读比特币原版白皮书(二)——介绍篇
    只字不差地阅读比特币原版白皮书(三)——交易篇(Transactions)
    只字不差地阅读比特币原版白皮书(四)——时间戳(Timestamp Server)
    只字不差地阅读比特币原版白皮书(五)——工作量证明(Proof-of-Work)
    只字不差地阅读比特币原版白皮书(六)——网络(Network)
    只字不差地阅读比特币原版白皮书(七)——激励篇(Incentive)
    什么是哈希(Hash)?
    什么是数字签名(digital signatures)?
    石油和比特币能被挖完吗?

    相关文章

      网友评论

      • 财商传承:区块链研究,我们社群确实很多这方面的专家和牛人,一步步来吧!目前没有把他放在重点上,没有意识到他究竟有多重要,目前还谈不上怎么改变和行动,先继续我的大脑训练吧!

      本文标题:只字不差地阅读比特币原版白皮书(八)——回收磁盘空间(Recla

      本文链接:https://www.haomeiwen.com/subject/eaxbbftx.html