区块作为区块链的基本结构单元,由包含元数据的区块头和包含交易数据的区块主体构成。


区块头包含三组元数据:


1. 用于连接前面的区块、索引自父区块哈希值的数据、哈希算法是区块链中保证交易信息不被篡改的单向密码机制。


哈希算法接收一段明文后,以一种不可逆的方式将其转化为一段长度较短、位数固定的散列数据。它的特点明文加密过程不可逆,输入数据与输出数据一一对应。 


2. 挖矿难度、Nonce(随机数,用于工作量证明算法的计数器)、时间戳。


比特币的挖矿里面,是有一个计算哈希的目标值的,如果这个目标值越小,那么难度越大。简单来说,难度是一个指标,用于标示计算当前的目标值的困难程度。网络调整难度的目的,是为了调整出块的速度保持在平均10分钟1个块,每2016个块作为一个周期调整,这样刚好2周作为一个周期,如果这2016个块中,平均出块速率快过10分钟1个块,那么难度将会增大到,维持这个难度的情况下,满足10分钟出一个块的水平。什么时候调整难度呢?由于2016的周期从来没有变过,那么该周期内还剩余的区块数量是可以计算出来的。


区块链中的时间戳从区块生成的一刻起就存在于区块之中,它对应的是每一次交易记录的认证,证明交易记录的真实性。时间戳是直接写在区块链中的,而区块链中已经生成的区块不可篡改,因为一旦篡改,生成的哈希值就会变化,从而变成一个无效的数据。每一个时间戳会将前一个时间戳也纳入其随机哈希值中,这一过程不断重复,依次相连,最后会生成一个完整的链条 。


3. 能够总结并快速归纳校验区块中所有交易数据的Merkle(默克尔)树根数据。 


区块链利用Merkle树的数据结构存放所有叶子节点的值,并以此为基础生成一个统一的哈希值。Merkle树的叶子节点存储的是数据信息的哈希值,非叶子的节点存储的是对其下面所有叶子节点的组合进行哈希计算后得出的哈希值。 同样地,区块中任意一个数据的变更都会导致Merkle树结构发生变化,在交易信息验证比对的过程中,Merkle树结构能够大大减少数据的计算量,毕竟,我们只需验证Merkle树结构生成的统一哈希值就可以了。