h0= Hash(A) h1 = Hash(B || h0) h2 = Hash(C || h1)
h2是我们计算的hash头部,现在来看, 为什么我们管这个东西叫Hash链, 因为h2 的值依赖于之前一系列数据的内容和计算顺序。 假如说现在你知道了h2 , 别人拿着A,B, C, 他不管是修改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都应该是这样的形式(00000*****************) 添加了这个要求以后, 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%的时候是很难达到的 所以到这里, 区块链就已经清楚了,就是一个密码学工具的一种巧妙应用而已。 区块链技术原理图解:
1.《区块链为什么不可篡改 区块链为什么不可复制》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《区块链为什么不可篡改 区块链为什么不可复制》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3336843.html