链式结构是一种存储数据的结构。在这种结构下,数据链路中的每个节点将包含指向前一个节点和下一个节点的指针。这种存储结构不需要完整的内存,可以存储在碎片内存中,所以内存使用效率高。
顾名思义,区块链是一串串联起来的区块链。在这个链中,每个节点都是一个数据块。与一般的链结构一样,每个块不仅包含自己记录的信息,还包含指向前一个块和后一个块的指针(如下图所示)。不同之处在于,这些指针由哈希值表示。用这种方法,区块链可以按时间顺序连接一系列积木。除了第一个块和最后一个块,所有其他块只有一个前趋块和一个后继块。任何一块和第一块之间的距离叫做这个块的“高度”。
区块链的链式结构
来源:作者绘图。
因为每个块都保留了前后块的哈希值,所以如果要修改某个区块链上的数据,就会“大变样”,导致后续所有块上的数据都发生变化。正是这种性质决定了区块链上的信息很难被篡改。
一般来说,存储在链结构中的数据是单一的,但在某些情况下,链也会产生分叉。例如,在比特币网络中,当多个“矿工”联合“挖矿”时,不同的“矿工”可能会在同一个母块上挖出不同的子块,这可能会导致原来的单链发散。但是一般来说,最后只会确认一个子块,最后连接到主链上。
链式结构是区块链的基础设施。通常包括两个子协议,即最长链原则和激励原则:(1)最长链原则,即将网络中最长的链视为正确链,要求“矿工”一直在最长的链上“采矿”。当一个“矿工”收到一个新的区块时,他必须停止当前的“挖掘”过程,并验证新的区块是否有效,否则他无法保证自己永远在最长的链上工作。根据概率计算等待块的数量。链条越长,链条越难被推翻。(2)在激励原则中,最先按照规则生成区块的“矿工”,将获得区块内所有交易的代币奖励和交易费。