加密技术和密码学的发展是区块链的基石。就加密技术的种类而言,可以分为哈希运算、对称加密、非对称加密,以及在非对称加密的基础上衍生而来的数字签名技术等。哈希运算保证了数据的一致性和不可篡改性,非对称加密保证了交易的可靠性。可以这么说,如果没有密码学,就不会出现区块链。
区块链就是利用这些加密技术形成了其独一无二的链式结构。另外,结合分布式架构、节点全量数据备份与共识技术保证了上链数据的安全性。安全性主要体现在只有数据的拥有者才能改动数据,某个节点或者某个比例的节点数据被篡改或者收到攻击,将不会影响整个系统的数据一致性。关于加密技术如何让区块链产生链式结构以及如何保证交易的唯一性,下面将详细讲述。
区块链是一种分布式共识系统。在区块链系统中,所有的参与节点将就交易的状态达成一致。
可以把区块链理解成一种分布式的交易的共享账本。交易信息将被整理并打包记录在区块中。区块链是一种数据结构,这种结构的数据可以看成是一系列链接的队列,这些队列通过哈希指针进行关联(与传统意义上的普通指针要区分开,哈希指针用来指向前一个区块)。通用区块链的结构如图所示。
不同的区块链技术,数据结构不同,内部用到的一些加密技术也不同。下面列举一些典型区块链的数据结构,并进一步阐述区块链技术如何通过链式技术来防止数据被篡改,从而保证数据的安全性。
加密系统的结构如下图所示。
在上图所示加密系统的区块链中,一个区块中含有一笔或多笔新的交易,它们存放在区块的交易数据部分中。对于每笔交易的副本都进行Hash运算,进而得到一个Hash值。每两个Hash值组成一对,再进行Hash运算。如此往复,最后得到一个单一的Hash值。这个Hash值称作Merkle树的根。
Merkle树的根存放在区块头中,每个区块同样也存储了前一个区块头的Hash值,区块链通过这种方式将所有的区块链接到了一起。这种链式结构保证了任何一笔处于区块中的交易不可能被随意改动。如果想改动区块中的一笔交易信息,必然要改动这个区块之后的所有区块的内容。
从数据安全角度讲,某个攻击者想篡改某笔交易信息,并将之成功地存入区块链中,需要找到存放该交易记录的区块,然后对该交易记录进行更改。一旦区块的内容更改,区块头中存储的Hash值就会随之改变,因为后续所有区块中的所有区块头Hash值都是以此为基础进行PoW共识计算的。由此可知,如果想单独修改某个区块中的某条信息而不改变后续区块中的信息是不可能的,而修改后续所有区块中的信息付出的代价将是巨大的,甚至不可能。
下图展示了一个广义区块链所必须具有的数据结构。虽然现在各种区块链实现技术层出不穷,但都必须借助这样的链式数据结构,以及区块头中的Merkle树等结构来保证本块中保存的交易信息没有被篡改过,而且本块之前所有的交易信息都是安全可靠的,都没有被篡改过。Merkle树主要用来验证收到的区块中存放的主体的交易信息是否被改动过,而区块头中存储的前一个区块的Hash值则可以保证之前所有区块的信息都没有被改动过。
领取专属 10元无门槛券
私享最新 技术干货