Blockchain 为什么区块链需要像散列值开头的零那样的散列难度?

Blockchain 为什么区块链需要像散列值开头的零那样的散列难度?,blockchain,bitcoin,cryptocurrency,Blockchain,Bitcoin,Cryptocurrency,我知道区块链不断检查之前的区块是否被改变是很重要的,但我不知道为什么区块链需要像散列值开头的零那样的散列难度。从我的角度来看,由于前面的块无法更改,如果数据库能够记住前面块的所有哈希值,一旦识别出这些值的更改,我们就可以知道哪个块由于网络攻击(可能)而被更改。散列困难是如何在这里扮演重要角色的,是否有必要使用不断检查前一个块的起始子字符串的方法?重新灰化会消耗大量的计算能力,所以我真的不明白他们为什么要这么做。 此外,除了加密货币之外,在诸如食品供应链等区块链的其他实现中,我们需要这种散列困难吗

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

“记忆”以前块的散列是不可行的,因为新节点必须能够从头开始(没有内存)并自行验证以前的块。它不应该“信任”其他节点。这是区块链的主要设计目标

哈希困难是限制在全球范围内创建新块的速度所必需的(例如,每10分钟在全球范围内创建一个新块)。如果可以很快创建它们,那么恶意节点可能会创建一个不正确(但外观有效)的链,该链在任何其他节点中最长。规则是接受最长的链

编辑:

只是为了扩大。。。区块链设计预计,偶尔会有少量(例如,1或2)的恶意区块被添加到“最长”链中,并被认为暂时有效。预计全球大多数非恶意散列功能最终会产生一个更长的丢弃恶意块的链(执行一个共同称为“区块链重写”)

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