主页 > imtoken正版 > 区块链如何保证交易记录不可篡改?

区块链如何保证交易记录不可篡改?

imtoken正版 2023-11-05 05:10:17

区块链如何保证交易记录不可篡改?

96

明星关注

2017.07.19 23:03*字数 1912 阅读 1654 评论 4 赞 1

区块链

前段时间比特币一度突破2万元,长期来看这离极限还很远。 如果你手里有比特币,而且你知道你手里的比特币就像银行卡里的钱,绑定了你的卡号(比特币地址),只有你可以用你手里的密码(比特币私钥) ) 签名以授权交易。 与银行唯一不同的是,其他人可以看到你所有的资产,但其他人除非得到密码——私钥,否则无法调动任何一点。

然而,由于区块链本质上是一个公共账本,每个人都可以保存,如果有人篡改了我的一笔交易怎么办? 如果有人把25天前支付我25个比特币返还0.25个比特币的交易改成支付我0.25个比特币返还25个比特币,那我岂不是亏了几十万?

想必很多人都有这种担心,但从来没有发生过,而且越研究比特币的区块链技术,就越不会担心。

那么,区块链技术是如何让一个账本明明白白地呈现在大家面前,却无人能修改其中的一个标点符号呢?

要理解区块链为什么不可篡改,首先要理解以下两个与区块链相关的非常重要的概念:

SHA256

国际公认的优秀加密算法。 输入是任意长度的数据,输出始终是 256 位值。 该值通常称为散列值。 输入值的任何细微变化都会产生不同的输出。

例如,假设这个 256 位散列大小表示您与某物之间的距离。 原始哈希值是你和前一棵树之间的距离。 你稍微修改了一笔交易的数据,将分配给你的价值增加了​​ 1 聪,小到 10 的负 8 次方。 结果 新生成的哈希将是您与土星环中陨石之间的距离。 事实上,这种变化会更加夸张,可能会跨越整个星系。

注:下面提到“某人的哈希”时,指的是将SHA256算法作为输入后生成的256位哈希值。

默克尔树

树状数据结构。 比特币区块链使用二叉树。 具体结构请阅读《精通比特币第7章区块链》。

这棵二叉树的每个节点对应一个哈希值:最底层的节点是每笔交易的哈希,第二层的每个节点是它下面的两个哈希拼接后通过SHA256算法生成的哈希,以此类推直到出现顶部只剩下一个节点,我们称之为默克尔根。

回顾SHA256算法的特点,任何微小的输入变化都会引起输出值的剧烈变化。 也就是说,交易记录的任何变化怎么伪造比特币文件,哪怕只是增加了1聪的输出值,都会引起那笔交易的哈希发生翻天覆地的变化。 将 Merkle 树传递给 Merkle 根。

为什么说篡改难呢?

首先,看数据结构。

区块的详细结构请参考《精通比特币第七章区块链》。

大致来说,一个区块包括四个部分:区块大小、区块头、交易数量和交易数据。 交易数据组织成默克尔树结构怎么伪造比特币文件,区块头包含前一个区块的区块头哈希和本区块中的默克尔根。

因为区块有这样的组织结构,所以区块内部交易信息的任何变化总会引起Merkle根的哈希值发生变化,进而包含Merkle根的区块头也会发生变化,最终导致该哈希的块头更改。

如果进行了篡改,则下一个块中包含的前一个块哈希值将与被篡改的值不匹配。 为了不让人注意到这个区块被篡改,他必须修改下一个区块的头部信息。 后者的下一个头信息也需要修改,以此类推。 一旦一个块被修改,所有后续的块都需要修改,以确保修改不会被发现。

每一个区块的修改都是一个非常艰巨的过程,因为区块的产生还需要一个非常特殊的东西:工作量证明。

那是什么意思? 也就是说,区块的生成需要大量的工作才能完成。 其实这个消耗是非常巨大的。

那么这个工作证明到底是什么?

你可能还记得区块头哈希值的概念。 区块链技术对这个 256 位的哈希值有一个要求,即这个值必须小于某个上限。 回顾一下SHA256算法的概念,你会发现输出的哈希值是非常随机的。 如果结果需要落在一个特定的范围内,就需要不断修改输入,不断尝试,直到输出满足要求。 在区块链中,区块头部有一个 32 位的随机数,可以修改它来完成调整最终哈希值的目的。

目前要满足小于这个上限的要求有多难? 专用的顶级矿工(专门设计用于计算哈希的计算设备)平均需要 14 个月的工作才能找到合适的目标哈希。 每修改一个区块,中间耗费的电费和时间估计都超过被修改账单上的收益,更何况还要修改很多。

即使这次修改完成后,还有一个更艰巨的任务,那就是破解全球超过51%的区块链备份计算机。 否则,即使你的账本修改的很完美,但是和大多数人的不一致,那么这个修改也没有任何效果。

那么,篡改交易信息的意义何在?

审查

区块链技术的发明者中本聪非常天才地通过两个维度来保证区块链的安全:

技术维度:使用强大的加密算法和巧妙的数据结构,确保每一次修改都被检测到;

经济维度:使用工作量证明需要为每次修改付出巨大的经济成本。

这样的解决方案不仅适用于比特币的一个应用,现在非常