2024年9月20日

区块链为什么不可篡改?区块链技术原理图解

区块链技术被认为是近年来可能再次颠覆世界的技术。区块链使信任更加基本。区块链是一种分散的簿记本。由于分散化,每个节点都是一个分布式中心,可以带动全身。区块链衍生的技术服务更加安全可靠,例如,我们现在非常熟悉的数字货币比特币是区块链技术的成功典范,当然,区块链技术部门只在数字货币领域发挥影响力,未来区块链将影响人类社会的各个方面,她受到人类青睐的最大原因是安全可靠!不可修改!不可修改!

为什么区块链不能篡改? 在谈论应用之前,最重要的是要了解它的技术本质, 在所有介绍区块链的答案中, 都首先提到了区块链不可篡改的特点, 所以首先要理解的是它是如何实现不可篡改的。

先修知识;

密码学Hash()函数的单向性: Hash(x) =y , 很难通过y找到x

哈希链: 如果现在有序生成的数据块 A, B , C 。 所以我们可以这样计算一个hash 。 注意 “||” 表示拼接

h0= Hash(A)h1 = Hash(B || h0) h2 = Hash(C || h1)

h2是我们计算的hash头部,现在看, 为什么我们称之为Hash链? 因为h2 该值取决于以前一系列数据的内容和计算顺序。 假设你现在知道h2了 , 别人拿A,别人拿A,B, C, 不管是修改A,他都会修改A,B, C的任何内容都是A,B, C的出现顺序,你不能再计算出正确的h2 好的, 其实区块链的概念在这里有点感觉,不是吗?”区块链”这个词是英语 Block Chain 的翻译, 若从字面上理解, “由数据块组成的链” 足以解释它的基本内涵。比特币区块链实际上是哈希链的一个变体(请注意, 下面描述的添加随机数和对随机数有特殊要求的规则是比特币来证明工作量 Proof of Work 并添加了共识机制, 不是区块链的必要特征)。 怎么变? 添加一个随机数(Nonce) 如果现在有序生成的数据块 A, B , C 。 让我们这样计算hash头。 注意 “||” 表示拼接

h0= Hash(A|| Nonce0) h1 = Hash(B || h0 || Nonce1) h2 = Hash(C || h1 || Nonce2)

这里我们还增加了一个额外的要求, 就是 h0, h1, h2 它必须是指定数量的0 bit开头,比如要求每个哈希值必须从5个0开始,那么h0、h1、h2应该是这样的形式(0万********************)

添加此要求后, h0, h1, 计算h2就没那么容易了, 因为你不能根据输出的形式来反推输入是什么, 而A, B, C又给定了, 那只能不断更改Nonce来穷举计算, 然后找到一个能满足要求的Nonce值 ,使得h0, h1, h2符合要求

这里大家都知道所谓矿工在做什么, 接收广播的数据块,然后计算哈希链最新的头部, 成功计算出符合要求的Hash后, 告诉大家,自己找到了, 让别人再计算下一个哈希头。

其实在这里, 区块链的本质几乎是一样的, 假如网络上每个人都默认遵守协议, 只有在最长的哈希链之后计算新的头部,那么一切都很好, 但如果有人想做不同的事情,那么他必须有更强的计算能力, 诚实的人遵守规则, 我可以计算出一个链条分叉,甚至直接计算出一个新的链条,让每个人都承认。

至于这一难度的证明,中本聪建立了泊松分布的概率模型, 假设计算出新的哈希头概率p和不诚实结点计算出新的Hash头概率q后,计算出N值。

这个N值的意思是给一个新的哈希头 h1 计算后,再加N个头(h2、h3、h4….)之后,网络应该承认这个新头 h1. 因为此时, 攻击者要想成功发动攻击, 至少需要计算一个长度大于N的分支, 当攻击者没有掌握全网计算能力的50%时,很难达到这个概率

所以到这里, 区块链已经很清楚了,这只是密码学工具的巧妙应用。

区块链技术原理图解: