工作量证明(PoW)
接触区块链的朋友们都听过这个概念,但是对于刚入币圈不久的朋友们来说,也只是听过而已,并不明白它到底是个什么东西,解决了什么问题。如果从字面意思来看的话,就是你做了多少工作的证明,其实意思是相差不大的。
啥意思?没听懂
我们都知道哈希值就是对一个文件进行哈希算法之后得到的一串字符,比如这样的:
0e306561559aa787d00bc6f70bbdfe3404cf03659e704f8534c00ffb659c4c8740cc。
假如使用哈算法对员外有两房老婆这句话进行哈希计算得到这个值:
0e306561559aa787d00bc6f70bbdfe3404cf03659e704f8534c00ffb659c4c8740cc
到这儿还看不出什么端倪来,如果我把这句话改成员外有三房老婆进行哈希计算,可能会得到这样的值:
00ffb659c4c8740cc942feb2da115a3f4155cbb8607497386656d7d1f34a42059d78
这么一看,还是一串字符串啊,细心的朋友可以发现这个哈希值的前两位是两个 0 。那这意味着什么呢?
如果约定只能改动“员外有三房老婆”这句话中间的数字,会发现其实不是所有的都能算出前面两位是 0 的哈希值。因为开头是两个 0 的哈希值出现的概率实在是太低了。当然还有可能计算出开头是多个 0 哈希值,只要不停的改变这句话中的数字,不停的计算,就有可能计算得出,哪怕你想计算出开头是20个 0 也可以,只是时间问题,可能几小时也可能几天或者更久,因为这是个概率问题,就是一个不停试错的过程。
所以员外在开始就说了,通过大量计算求出的值,其实不是求解,而是靠运气!
这求的是什么解?
比特币现在每10分钟产出一个区块,如果矿工打包成功这个区块,就可以获得区块内部的 12.5 个比特币的奖励。但是获得打包这个区块的前提就是计算出这个区块给出的哈希难题。比如我设定的题目是哈希出前面带有10个 0 的哈希值来,还规定你只能通过改动“员外有n房老婆”这句话中的n来求解。但是你又不知道这个n到底是几,所以就只能不停地试了。当你试出来之后,在这个答案上写上自己的名字,告诉其他矿工,说你找到答案了,然后其他矿工进行验证之后,确认你的答案正确,你便可以拥有这个区块的打包权,获得这个区块内部的奖励。
因为需要大量的试错计算,所以叫做工作量证明(PoW)。