【问题标题】:Why does blockchain needs hash difficulty like zeros at the beginning of the hash value?为什么区块链在哈希值的开头需要像零一样的哈希难度?
【发布时间】:2023-04-06 17:17:01
【问题描述】:
我知道区块链不断检查之前的区块是否已被更改很重要,但我不知道为什么区块链需要像哈希值开头的零这样的哈希难度。从我的角度来看,由于之前的区块不能被更改,如果数据库可以记住之前区块的所有哈希值,一旦识别出这些值的变化,我们就可以知道哪个区块由于网络攻击而被改变(也许) .哈希难度如何在这里发挥重要作用,是否需要使用不断检查前一个块的开始子字符串的方法?重新散列消耗大量计算能力,所以我真的不明白他们为什么要这样做。
除了加密货币之外,在食品供应链等区块链的其他实现中,我们是否需要这种哈希难度?
【问题讨论】:
标签:
blockchain
bitcoin
cryptocurrency
【解决方案1】:
“记忆”先前区块的哈希值是不可行的,因为新节点必须能够从头开始(没有内存)并自行验证先前的区块。它不应该“信任”其他节点。这是区块链的主要设计目标。
哈希难度对于限制在全球范围内创建新区块的速度是必要的(例如,全球每 10 分钟创建一个新区块)。如果可以非常快速地创建它们,那么恶意节点可能会创建一个不正确(但看起来有效)的链,该链是任何其他节点中最长的。规则是接受最长的链。
编辑:
只是为了扩展... 区块链设计预计偶尔会有少量(例如 1 或 2 个)恶意块被添加到“最长”链中,并暂时被接受为有效。预计全球非恶意的大多数哈希算力最终会提出更长的链来丢弃恶意块(执行所谓的“区块链重写”)。
这就是为什么建议在接受一个正确的新块之前等待添加一定数量的块(所谓的“确认”,例如 6 个)(因为它极不可能被重写观点)。这也是为什么所谓的“51%”攻击(意味着全球大多数算力都在恶意合谋)是一个漏洞的原因。