2022-02-09 15:36:06
大家都知道,区块链有七大特性,分别是去中心化、全球流通、匿名性、不可篡改、公开透明、可追溯和自治性,今天要给大家介绍的是区块链中的不可篡改性。区块链系统的信息一旦经过验证并添加至区块链后,就会得到永久存储,无法更改(具备特殊更改需求的私有区块链等系统除外),这也是区块链为了保障投资者交易公平的措施之一,那么说到底区块链为什么不可篡改?下面211Coin小编就给大家分析一下区块链不可篡改原理。
区块链之所以能构建可信任互联网,最本质的原因是区块链具有不可篡改的特性。不可篡改,顾名思义就是记录到区块链上的信息是不能随便更改。为什么记录到区块链上的数据不能更改呢?这是因为区块链独有的链式结构和新区块的生成规则。大家都知道区块链其实是一个合成词汇,是由“区块”和“链”组合而成的。区块链的第一应用比特币白皮书,早在2008年发布的时候并未提到区块链这个词,而是区块和链是分别来说的。一个一个区块链接在一起就形成链区块链。但是区块之间是按照什么规则进行链接的呢?
区块链中最小的单元是区块,区块是由区块头和区块体构成。区块头记录这上一个区块的随机散列值,每个区块上都有一个随机散列值(哈希值),这个随机数是由上个区块的交易信息和时间戳经过哈希算法生成的。如果上一个区块的任何信息发生变化,就和本区块原来的哈希值不一致了,不会被下一个区块认可,这就是区块链的不可篡改的原因。
而且每一笔交易都有时间戳,且区块是按照一定的规则前后链接的。最容易理解的特征就是不可篡改,区块链基于“区块+链”的链式结构。存在交易的区块按照时间的顺序不断加到区块链的尾部。要修改任何一个区块中的数据,都需要重新生成它之后的所有区块。这要求计算机在短时间之内完成大量的工作,理论上需要51%以上的算力合力为之,才有可能完成。但是这是不符合实际情况的,因为这样做对他们自身并没有什么好处。
区块链就是由区块线性连接而成的链。数据不可篡改: 这个是由密码学、哈希函数、矿工算力等保障的。当我们发送一笔交易到区块链节点的时候,节点会验证这个交易的签名,如果签名不对那么数据是会被丢弃的,只有持有私钥匙的人才可以修改这笔交易,其他人是修改不了的,这个问题是由密码学解决的。在比特币中使用的是椭圆曲线算法来对交易进行签名。
区块体中数据是由一笔一笔的交易组成的,这些交易通过默克尔树组织起来。如果其中任何一笔交易被修改,都会造成默克尔树根哈希的变化,这个问题是由哈希函数解决的。在比特币中使用的是sha256算法,区块体的变化将导致下一个区块头的变化。这就导致下一个区块将对这个修改过的区块不识别,从而使得区块数据信息不可修改。
前面两个问题都是由不可解的数学难题来保证的,区块头的不可修改是由算力保证的,这就是矿工需要干的事情。那么区块头是怎么保证不可被修改的呢?全世界所有的矿工都会计算区块头的哈希,但是计算出来的哈希要求前面有n个0。
如果区块的头信息不变,那么计算出来的哈希也都是一样的。前面我们说过,区块头中包含一个nonce,矿工就是通过修改nonce以此来找到满足要求的哈希(这个过程被称为挖矿)。在比特币的世界中,这个问题需要全世界的矿工计算十分钟左右才能找到一个满足要求的nonce。所以单凭个人要想修改一个区块是完全不可能的。
矿工一旦计算出来这个nonce,就会将这个区块广播给其他节点,这些节点对区块中的数据进行验证,如果验证通过,就会停止此区块的挖矿,将此区块广播给其他的节点,并开始争夺下一个区块的记账权。可以想象区块链是一圈圈站立的多米诺骨牌,其中一张向一个方向倒,那么之后的都会倒掉。
如想恢复原貌,需要把从第一个开始倒的之后的牌都站立起来。短时间内是不可能恢复的。对于区块链来说还有每个区块和每笔交易都是有时间戳的,进一步防止了篡改。如果区块链上的数据记录错了,就能补录一条新的信息将结果纠正正确,而不是直接修改错误的哪条信息。
本篇文章就是对区块链为什么不可篡改?这个问题的解答,从以上内容可以知道,如果一个人修改了区块中的交易数据,默克尔树的根哈希会发生变化,接着区块头会发生变化,这个时候区块的随机数(nonce)将变得不合法,需要重新挖矿。如果照这样推算,一旦有一个数据进行改正,那么后期所有的数据都将会更正,很容易出现连锁反应造成数据崩坍,这样的话用户手中的数字货币就相当于丢失,需要重新挖矿,因此区块链必须具有不可篡改性。
1552