区块链大学区块链研习社区块链

《锋哥论道区块链》之四区块链1.0之比特币--回收磁盘空间

2019-04-22  本文已影响5人  7dfc697cf7a9

【原译文】
如果最近的交易已经被纳入了足够多的区块之中,那么就可以丢弃该交易之前的数据,以回收硬盘空间。为了同时确保不损害区块的随机散列值(hash),交易信息通过执行hash构建成一种Merkle树(Merkle tree)的形态,使得只有根(root)被纳入了区块的随机散列值(hash)。通过将该树(tree)的分支拔除(stubbing)的方法,老区块就能被压缩。而内部的随机散列值(hash)是不必保存的。
不包含交易的区块头大约80字节。我们假设每10分钟生成一次区块,每年大小为80 bytes * 6 * 24 * 365 = 4.2MB。2008 年PC系统通常的内存容量为2GB,按照摩尔定理预言的每年增长1.2GB的大小,即使将全部的区块头存储在内存之中都不是问题。
【解读】
本节是针对区块链系统会不断产生区块导致占用空间变大问题的一个解决方案。如截止目前为止(2017/1/28),区块链总数已经超过了90G,虽然存储是越来越不值钱了,但是要普通公众使用是不可能的,因为信息在一直膨胀。这里就体现出区块链系统的精妙之处,区块头不存储交易详情,而是使用Merkel Hash Tree的方式存储Root Hash,达到”0知识证明“。个人并不一定需要这个区块,而是具有这个区块的”hash“就足够了,有IPFS,公共节点,信任度高节点帮助存储这些区块。”0知识证明“保证了区块是绝对正确的而不是伪造的。
我们可以看出,区块分为区块头(block header)和区块体。
区块头包括了版本、上一个区块的hash、nonce、bits(目标值)、timestap(时间戳)及merkel root hash等信息
区块体包括当前区块经过验证的、 区块创建过程中生成的所有交易记录。这些记录通过 Merkle树的哈希过程生成唯一的Merkle根并记入区块头.
区块哈希值(hash)实际上就是区块头的哈希值,只有区块头被用于计算hash,常说的区块哈希值实际是区块头哈希值,它可以用来唯一、明确地标识一个区块。

上一篇下一篇

猜你喜欢

热点阅读