为什么区块链需要哈希值开头为零这样的哈希难度?

Why does blockchain needs hash difficulty like zeros at the beginning of the hash value?

我知道区块链不断检查之前的区块是否被更改很重要,但我不知道为什么区块链需要哈希值开头为零的哈希难度。在我看来,由于之前的块不能被更改,如果数据库可以记住之前块的所有哈希值,一旦识别出这些值的变化,我们就可以知道哪个块由于网络攻击而被更改(可能) . hash difficulty在这里怎么发挥这么大的作用,有没有必要用不断检查前一个block的起始子串的方法?重新散列会消耗大量计算能力,所以我真的不明白他们为什么要这样做。 此外,除了加密货币,在食品供应链等区块链的其他实现中,我们是否需要这种哈希难度?

“记住”之前区块的哈希值是行不通的,因为新节点必须能够从头开始(没有记忆)并自行验证之前的区块。它不应该“信任”其他节点。这是区块链的一个主要设计目标。

哈希难度对于限制在全球范围内创建新区块的速度是必要的(例如,全球范围内每 10 分钟创建一个新区块)。如果可以非常快速地创建它们,那么恶意节点可以创建一个不正确(但看起来有效)的链,该链是任何其他节点中最长的。规则是接受最长的链。

编辑:

只是为了扩展......区块链设计预计偶尔会有少量(比如 1 或 2)个恶意区块被添加到“最长”链中,并被暂时接受为有效。预计全球非恶意的大多数哈希算力最终将提出一个更长的链来丢弃恶意块(执行所谓的“区块链重写”)。

这就是为什么建议在接受新块正确之前等待一定数量的块被添加(所谓的“确认”,例如 6)(因为它极不可能被重写在那时候)。这也是为什么所谓的“51%”攻击(意味着全球大多数哈希算力都在恶意合谋)是一个漏洞。