接上文:
Reed:区块链中的密码学(1):提升密码学的认知zhuanlan.zhihu.com![ac27e228930275a3248b0d8d348ed4ab.png](https://i-blog.csdnimg.cn/blog_migrate/61479313dc168ddab09038d43529daeb.jpeg)
谈及挖矿,首选浮现在脑海中的应该是:
![3a2b5b33d90614d4a4c4a6557a70a0ca.png](https://i-blog.csdnimg.cn/blog_migrate/e33ca54a53ea2529e97de5dfa33f1e35.jpeg)
但区块链中的挖矿其实这样的:
![55d02ceb34edf42298c889fad8e7573e.png](https://i-blog.csdnimg.cn/blog_migrate/cdda248b6fc21222da85e47b922eb0e4.jpeg)
机架上排满矿机,不停地在做运算,而且是是在做Hash运算。有人称这种挖矿为能源黑产,把电能转化为数字货币。那我们今天就来谈谈Hash算法和POW共识算法的关系。
01: Hash算法
谈及Hash,我们要区分普通的Hash算法和密码学中的Hash算法。
普通的Hash算法,一般也称之为散列表或哈希表,属于一种基本的数据结构。一般用于实现O(1)的查询条件之中, 涉及哈希函数的选取和解决哈希碰撞问题。
它的应用十分广泛,像C++标准库中的hashmap, Java中的HashMap,Python中的dict,都采用Hash算法实现。另外想很多缓存产品, memecached, redis都是hash算法的大规模应用。
而密码学中的Hash算法,可以用一个公式来描述:
摘要/散列值/指纹 = hash(消息)
算法的输入是消息,或者一堆二进制内容。最终输出的是固定长度的一个二进制串,可称之为摘要,散列值,指纹等。hash算法也有很多种。密码学的hash算法有五大重要特征: