区块链是由一个个区块根据各自生成的时间顺序相互连接形成的链状存储结构,区块就是这个结构中的基本数据储存单元。
什么是区块链?区块链有什么特点?请参考“什么是区块链”章节。
区块作为区块链结构中的基本结构单元,由包含区块本身身份信息的“区块头”以及包含数据库信息的“区块主体”构成。与传统数据库结构相比,区块主体就类似于数据库每一页的具体内容,而区块头则类似于用于定位数据所在位置的页码。
区块头主要包含上一个区块所有数据的加密摘要、该区块的生成时间、以及该区块主体的加密摘要。
加密摘要是通过一种区块链领域常用的单向加密算法生成的,我们一般称之为“哈希算法”或“哈希函数”(Hash Function)。它的运作方式类似于对给定内容进行总结归纳并形成摘要。之所以称之为单向加密算法,是因为当我们知道上一个区块中包含的所有数据时,可以很轻易地生成摘要。但如果我们只获得了一份摘要,想要精确地推算出上一个区块的所有数据是非常困难的。我们将一段给定的数据通过哈希算法生成的值称为这段数据的“哈希值”(Hash Value)。
想要更深入地了解哈希算法的原理、技术及运作方式,请参考 Investopedia
通过哈希算法的加密,后生成的区块始终需要依赖于上一个区块数据以生成区块头,区块链也因此实现了区块按照首尾相连的链状构造。同时,当一段数据被记录在某一区块后,从下一区块开始,将会不断与其他数据组合并加密为新的哈希值、记录在后续的区块中。区块链也通过这种方式提高了数据的篡改难度。
还记得我们在介绍区块链时说道“一个个区块根据各自生成的时间顺序相互连接”吗?这种说法其实并不准确,区块其实是通过哈希算法和区块头结构链接的。但由于时间上后产生的区块总是依赖于先产生区块的数据,因此间接形成了时间顺序排列。
在区块链领域中,我们一般将某一区块的上一个区块,也就是该区块的区块头中包含的、经过哈希算法加密的区块,称为“父区块”(Parent Block)。当某一区块链尚未产生第一个区块时,由于不存在父区块,因此后续的区块也无法生成。这时该区块链的创始团队一般会生成该区块链的第一个区块,这个区块不包含任何父区块的哈希值,我们称这个区块为“创世区块”(Genesis Block)。创世区块的生成一般代表该区块链正式开始运行,创世区块中的数据将被加密并记录在该区块链后续所有的区块中。
例如:2009 年 1 月 3 日,中本聪在位于芬兰赫尔辛基的一个服务器上生成了比特币网络的创世区块,标志着比特币网络的正式诞生。中本聪在这个区块上留下了一句话,“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks.”(泰晤士报当日的头条标题:财政大臣正处于银行业第二轮救助计划的边缘。)