区块链如何保证数据不被篡改 比特币怎么确定交易信息的真实性

在前文中,我们说过去了去中心化是区块链的关键点之一,在去中心化交易系统中,每个节点共同记录交易、维护备份同一本账。接下来让我们继续延续之前的设定,当这个去中心化交易系统建立起来后,由于系统中一直只有A的那个苹果在传递导致A备受尊敬。为此,B感到愤愤不平,他也想拥有一个苹果。于是,B想到了篡改账本的方法。B能成功吗?

答案是当然不能让他成功。如何才能不让B成功呢?自然是从账本的记录规则下手。于是,众人决定为共同维护的账本制定这样的记录规则:

从第一笔交易开始,往后的每一笔交易都必须记录前一笔交易的内容。

如图,第一个(1)为创世区块“A获得了一个苹果”,第二个区块(2)记录了第一个区块(1)的内容和新的交易内容,第三个区块(3)记录了第二个区块(2)的内容和新的交易内容,接下去的都以这样的方式来记录。

如果B想要成功改账本,首先要根据已知区块的内容追溯到前一个区块的位置(即根据第三个区块的内容追溯到第二个区块的位置),然后改自己手中账本里的每一项记录,最后改整个系统中其他人手中备份的账本。最最重要的一点,在B改完系统中所有账本之前,所有的账本必须都处于静止状态。你猜,B成功的几率有多大?

简化的中本聪第一版比特币区块链协议便和此相似:

区块链中使用了密码学的方法来保证已有数据不可能被篡改——密码学哈希函数和非对称加密。

哈希函数y = Hash(x) 具有单向性,通过y很难找到x。

y0 = Hash(A)

y1 = Hash(B || y0)

y2 = Hash(C || y1)

……

“||” 表示拼接,A、B 、 C表示有顺序产生的数据块(交易数据)。这就是哈希链,y值的计算需要依靠之前一系列数据的内容和计算顺序。因此,A、B、C的内容稍微有点不对或者是顺序不对都无法再次计算出正确的y2。

也许你会问,会不会出现两个节点收到同一条消息却计算出不一样的哈希值的情况?答案是不会。根据哈希函数的性质,没有人能够伪造出另一个消息,并让这个伪造的消息具有与真实消息一样的哈希值。因此,篡改的数据无法通过哈希校验。

当然,仅仅是用哈希函数加密还是不够的,比特币区块链协议中还添加了另一条规则,那就是非对称加密。

非对称加密用两把密钥来进行加密和解密,一把是公开密钥(简称公钥),另一把是私有密钥(简称私钥),一把用来加密,一把用来解密。除了为信息加密外,非对称加密的另一个用途是进行身份验证。一般来说,公钥是公开的,大家都知道的,私钥是个人所拥有的。

在区块链中,非对称加密是这样进行的:

如果两个哈希值相同,则代表这条消息是由本人发出的,是真实可靠的。在区块链中,从第二个区块开始,每个区块的第一部分有前一区块的哈希值,每一笔交易都会附带发起人的数字签名。

随着交易的进行,交易数据会不断增加,区块链的链条也会不断增加,区块链是按照什么规则增加区块的呢?区块链第三发,揭露区块链增加区块的秘密,告诉你比特币如何挖矿。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180118A011ND00?refer=cp_1026

扫码关注云+社区