像上一篇文章中已经说过的,区块链的系统最基本、最必要的三层是:数据层、网络层、共识层。而其中最重要的底层就是数据层。在这层中数据是以一个个区块的封装打包方式存储在区块链系统中。每一个区块就是区块链这个公开账本中的最小记录交易信息的单元。每十分钟打包的一个区块就是将这一段时间内的交易信息记录整理在一起,经过哈希算法将该区块头与上一个区块连接到一起,这样就形成一个具体的区块链系统。
一、基本概念
由此引出来关于区块的几个概念:区块头、区块。你可能会好奇的问?作为一个完整的区块,不是应该有区块头、区块和区块尾吗?这里需要重点说明一些,在单个区块中,是没有区块尾这个概念的,一个完整的区块只包含区块头和区块。区块头就是记录当前区块的元信息,包括其版本号、当前的时间戳、上一个区块的哈希值。紧挨着区块头的就是区块本身,也就是打包好的交易信息记录,区块本身包含的是技术信息、交易信息等。之所以没有区块尾的原因其实就是,当前的区块就紧接着连接起下一个区块的区块头。区块链的链其实就是这个区块与下一个区块头连接的哈希计算值。正式因为如此,区块才能连接在一起变成区块链。
在区块链系统的数据层中,其实包含的就是这些区块,数据层不仅封装了底层数据区块的链式结构,还有在解密过程中的非对称加密技术以及时间戳技术。可能这样抽象的概念你觉得有些烧脑,换个形象的比喻,区块链其实长得像糖葫芦一样,每一个糖葫芦就是一堆交易信息的集合,区块头就相当于糖葫芦的糖稀,区块数据本身就像是山楂,而区块与下一个区块头的哈希连接就像是那根穿起糖葫芦的小木棍。
二、分布式数据库
区块链数据层使用的数据存储技术并不是在有区块链这个时代才发明出来的,而是已经在计算机发展的历史上被发明出来很多年,也就是分布式数据库技术的一种衍生或者叫做升级版。
分布式数据库:是用计算机网络将物理上分散的多个数据库单元连接起来组成的一个逻辑上统一的数据库。每个被连接起来的数据库单元称为站点或节点。分布式数据库有一个统一的数据库管理系统来进行管理,称为分布式数据库管理系统。
分布式数据库与区块链的数据存储技术虽说是同根但是在一些具体的方面还是有区别。在管理节点上,虽然分布式数据库的存储单元是分散在各地,但是其管理接口确实集中化,不像区块链可以有多个同时在线的管理入口;另外分布式数据库因为是统一管理,所以其可扩展性和自治性都是在中心化允许的情况下才可以进行,而区块链数据存储是真正去中心化,单个节点没有足够强大的权力可以对链上的数据进行更改,同时单节点作恶的成本也非常高昂,这也是区块链系统安全稳定的一个保障因素。区块链数据存储系统只是存在理论上被破坏的可能,在BTC这个典型的区块链系统中,具体的表现就是51%攻击。