什么是哈希

散列函数(或散列算法,又称哈希函数,英语:Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到. ——维基百科

hash函数也就是将一段数据确定性的映射成一段散列值的函数(这里的确定性是指对于同一段数据,不管执行多少次,结果都是相同的).

一般来说,hash是不可逆的.也就是说,很难从一段散列值推断出它的原数据.

区块链中的POW(Proof of Work)共识机制

因为hash产生的散列值没什么规律,要想让散列值满足一定的条件,只能通过暴力枚举.

比如想找到一个数x,使得它的散列值的最后四位都是0,很困难.由此还可以看出,对散列值的要求越多,寻找对应的x的难度就越大.

在比特币中,如果根据比特币的hash找到一个这样的数,而且是别人未发现的,那么即为挖到了一个新的区块.

script>