每个区块链的区块, 其实都是由区块头这一部分和区块体这一部分共同构成的。区块头这个地方是定长的元数据区, 它里面承载着哈希值、时间戳这样的东西, 还有难度这些校验相关的字段。
区块体的地方则是变长数据载荷区, 这个区域的主要作用是把本区块里面的全部交易都存放进去。你要是想要真正理解两者的职责分工是什么, 那么这就是你读懂链上数据是怎么进行流转的起点, 同时也是读懂节点验证逻辑的一个起点。
区块头里到底存了什么
我们就拿比特币来说说吧, 其实区块头的长度是固定着的, 总共占128个字节, 里面的内容是一个接一个排下去的, 前面有版本号, 紧接着是前一个区块的哈希值, 然后是Merkle根, 之后又有时间戳, 还有难度目标, 最后才是nonce这个随机数。
大家要知道, 这许多字段加在一起, 最终就把区块的哈希值给决定了,正是这个东西, 让大家能在区块链上看到防篡改的效果, 并且完成共识方面的验证, 它就像是一个很关键的锚点一样了。
当这个节点在执行难度证明的这个动作的时候, 它只对于区块头里面的那个哈希值进行计算。那个区块体本身是不参与到这个哈希运算的过程里面的。不过, 因为那个区块体的Merkle根被放到了区块头的里面去了。所以说, 就让那些轻节点根本就不用把所有的交易都下载下来。它们也能够去把区块的有效性给校验出来。
区块体里装的是什么
区块体里的内容, 说白了就是交易列表。在比特币系统里面, 它是把逐笔交易的完整记录都存下来了。在以太坊系统里面, 它是由交易数组加上收据日志组成的。这个区块体的大小是不固定的。在比特币里面, 它受到那个1MB的区块上限的约束。在以太坊里面, 它则是受gas limit这种限制的影响。

区块体里面的数据量如果变得特别大,那么全节点在存储这些东西和同步这些信息的时候,面临的压力就会变得越来越重,这一点是事实, 这也是为什么各个公链项目方会在分片技术以及rollup解决方案这些用来扩容的方向上, 坚持不懈地投入力量去研究和开发的一个最主要的原因。
区块头负责做证明的事情, 区块体负责进行装载的动作, 这两个部分相互配合在一起, 最终才能构成一个完整的、存放在链上的数据块结构。
转载请注明出处:imtoken,如有疑问,请联系()。
本文地址:https://www.zmdyd.cn/gwimqb/11198.html
