区块链是一种分布式共识系统。在区块链系统中,所有的参与节点将就交易的状态达成一致。

可以把区块链理解成一种分布式的交易的共享账本。交易信息将被整理并打包记录在区块中。区块链是一种数据结构,这种结构的数据可以看成是一系列链接的队列,这些队列通过哈希指针进行关联(与传统意义上的普通指针要区分开,哈希指针用来指向前一个区块)。通用区块链的结构如图6-1所示。

区块链的链式结构

不同的区块链技术,数据结构不同,内部用到的一些加密技术也不同。下面列举一些典型区块链的数据结构,并进一步阐述区块链技术如何通过链式技术来防止数据被篡改,从而保证数据的安全性。

比特币的结构如图6-2所示。

区块链的链式结构

在图6-2所示比特币的区块链中,一个区块中含有一笔或多笔新的交易,它们存放在区块的交易数据部分中。对于每笔交易的副本都进行Hash运算,进而得到一个Hash值。每两个Hash值组成一对,再进行Hash运算。如此往复,最后得到一个单一的Hash值。这个Hash值称作Merkle树的根。

Merkle树的根存放在区块头中,每个区块同样也存储了前一个区块头的Hash值,区块链通过这种方式将所有的区块链接到了一起。这种链式结构保证了任何一笔处于区块中的交易不可能被随意改动。如果想改动区块中的一笔交易信息,必然要改动这个区块之后的所有区块的内容。

从数据安全角度讲,某个攻击者想篡改某笔交易信息,并将之成功地存入区块链中,需要找到存放该交易记录的区块,然后对该交易记录进行更改。一旦区块的内容更改,区块头中存储的Hash值就会随之改变,因为后续所有区块中的所有区块头Hash值都是以此为基础进行PoW共识计算的。由此可知,如果想单独修改某个区块中的某条信息而不改变后续区块中的信息是不可能的,而修改后续所有区块中的信息付出的代价将是巨大的,甚至不可能。

在图6-3中展示了一个广义区块链所必须具有的数据结构。虽然现在各种区块链实现技术层出不穷,但都必须借助这样的链式数据结构,以及区块头中的Merkle树等结构来保证本块中保存的交易信息没有被篡改过,而且本块之前所有的交易信息都是安全可靠的,都没有被篡改过。Merkle树主要用来验证收到的区块中存放的主体的交易信息是否被改动过,而区块头中存储的前一个区块的Hash值则可以保证之前所有区块的信息都没有被改动过。

区块链的链式结构

看了“区块链的链式结构”的朋友还学了:

时间戳

区块链的核心原理

区块头是什么

区块链的分类

区块链的起源

比特币交易结构

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注