Loading

区块链如何实现防篡改以及内容快速检测?

2019-10-14 17:20:27 233

         通过哈希构建区块链的链式结构,实现防篡改

        每个区块头包含了上一个区块数据的哈希值,这些哈希层层嵌套,最终将所有区块串联起来形成区块链。区块链里包含了自该链诞生以来发生的所有交易,因此,要篡改-笔交易,意味着它之后的所有区块的父区块哈希全部要篡改一遍 ,这需要进行大量的运算。如果想要篡改数据,必须靠伪造交易链实现,即保证在正确的区块产生之前能快速地运算出伪造的区块。同时在以比特币为代表的区块链系统要求连续产生一定 数量的区块之后,交易才会得到确认,即需要保证连续伪造多个区块。只要网络中节点足够多,连续伪造的区块运算速度都超过其他节点几乎是不可能实现的。另一种可行的篡改区块链的方式是,某一-利益方拥有全网超过50%的算力,利用区块链中少数服从多数的特点,篡改历史交易。然而在区块链网络中,只要有足够多的节点参与,控制网络中50%的算力也是不可能做到的。即使某利益方拥有了全网超过50%的算力,那已经是既得利益者,肯定会更坚定地维护区块链网络的稳定性。

图片关键词

        通过哈希构建默克尔树,实现内容改变的快速检测

        除上述防篡改特性,基于哈希算法组装出的默克尔树也在区块链中发挥了重要作用。默克尔树本质上是一种哈希树,1979年瑞夫.默克尔申请了该专利,故此得名。前面已经介绍了哈希算法,在区块链中默克尔树就是当前区块所有交易信息的一个哈希值。但是这个哈希值并不是直接将所有交易内容计算得到的哈希,而是一个哈希二叉树。首先对每笔交易计算哈希值;然后进行两两分组,对这两个哈希值再计算得到个新的哈希值,两个旧的哈希值就作为新哈希值的叶子节点,如果哈希值数量为单数,则对最后一哈希值再次计算哈希值即可;然后重复上述计算,直至最后只剩一个哈希值,作为默克尔树的根,最终形成一个二叉树的结构。

        在区块链中,我们只需要保留对自己有用的交易信息删除或者在其他设备备份其余交易信息。如果需要验证交易内容,只需验证默克尔树即可。若根哈希验证不通过,则验证两个叶子节点,再验证其中哈希验证不通过的节点的叶子节点,最终可以准确识别被篡改的交易。