Skip to main content

Hash Function

什么是hash

有很多的Hash function,简单的可以理解是Hash 可以把任何的东西转换成一串长度更短的字符串。 我们可以通过下面的例子看到,左边的输入可以是很长的,也可以是很短的句子,但是右边生成出来的结果 都是差不多构造的。

hash function intro image

下面这个例子就可以带你见识一下如何使用这个Hash功能。

Hash Function Playground

Input Value

Result

Proof of Work

我们可以简单的理解就是通过大量的计算达到某一个结果,这其中的工作量的多少就取决于这个问题的难度。譬如我们想要找到一个 输入数值使其经过Hash过的输出末尾有x个连续的0。这个问题很简单,我们只需要不断的尝试就可以达到,但是这个问题的难度 也会随着x的变大越来越难。举例,找到结尾有1个连续的0的输入要远比找到10个连续的0要简单。下面的这个简单的例子会采用sha256 作为Hash函数,之后你可以通过调整上面的难度来看所需要的计算时间。

这同时也很形象的说明了区块链的核心思想,去寻找一个结果很难,但是证明结果的正确性很简单。毕竟看结果是不是开头有这么多个0, 只需要一秒钟,但是要找到这个答案却需要很长时间。

Simple Proof Of Work
Difficulty
Current Difficulty: 1
Current iterations: 0
Current Hash: 1490cc8a250dc72c27032029f511fc0d36035faa74ebefcec1aeed153a3c5dd4
The difficulty is the number of zeros in the hash.

当然这个毕竟是基础版本,所以还有很多的不足的地方,譬如不够智能,当难度过高的时候就会出现一直找不到正确的结果。当然我们 现在已经有的区块链产品可没有这么的不智能,他们都会自己调整难度,如果一直找不到结果的话,就会自动降低难度。下面的 这个例子就很形象的阐述了这个过程。

Advance Proof Of Work
Difficulty
Current Difficulty: 10
Current iterations: 0
Current Hash: 4b82f582fa341891fadd98e08ee443ffb611e3f39d31e1e72cc87a1f9ca37e31
The difficulty is the number of zeros in the hash.