经过昨天的第一篇解读后,我发现很多人会觉得文章的专业性太强,难以一下理解如此多的内容,所以后面我会把原本一节课的内容分解成一个个知识点来为大家分别解读,希望这样可以给小白们一种友好的学习方式。
本篇将要延续上篇文章比特币的密码学原理(一)继续为大家解读,比特币中所用到的哈希的第三条性质,这条性质也是比特币相对于传统密码学所特殊的性质。
比特币中哈希的第三条性质:puzzle friendly
这条性质的意思是说:经过哈希转换后输出的值是很难预测的,也就是说,你无法通过主观的控制输入值来获得你想要的输出值。所以如果你想要输出的值落在某一个范围里,那么没有什么其他好办法,你只能从头开始一个一个试,看哪个输入算出来的输出值正好是落在你想要的范围内。举例来说:你想要的最后输出的哈希值的要求是000000……0xx……x(意思是前面必须是一串k个0,k个0后面是任意的),那么什么样子的输入会得到所要求的哈希值呢?你是不知道的。这就是我们所说的puzzle friendly这个性质,如果你想得到上述例子所要求的值,你必须从头开始去一个一个的试。
而上述的这种思想正是构成了后面我们要讲的挖矿的基本思想。在比特币中的挖矿的过程里实际上就是去找一个要求的输出值域,而我们的输入端则是将一个区块的块头跟其他信息放入其中并进行相应的哈希运算后得出一个输出值,当这个输出值符合所要求的输出值域时,你就挖矿成功了。那么在这个过程里,由于puzzle friendly的性质,我们并不知道我们输入什么就能得到怎样的输出值,于是我们只能一点一点的去调整我们的输入值,来不断尝试能否生成出一个符合要求的输出值。而这个寻找的过程就被称作工作量证明,这也就意味着你能挖矿成功,一定是因为你付出了一定的工作量,来不断尝试后才找到了符合要求的值。
并且我们要注意的是,虽然说挖矿的过程很困难,但是当你挖矿成功后,将你的结果公布给大家后,其他节点去验证你的结果是否正确是很简单的,因为别人只要用你给出的输入值去哈希运算一次,就可以得到一个输出值来进行验证。
以上就是我们今天讲的比特币的第三条性质puzzle friendly。那么由此,比特币中所用到的密码学原理中的哈希功能就已经讲完了,对于哈希这个模块,大家有何疑问的话可以留言。明天的文章,我将继续给大家解读比特币中所用到的密码学原理的签名功能。
有疑问加站长微信联系(非本文作者)