你的位置:首页 > 公告动态 > 社会新闻

挖矿的具体原理是什么?

2019/11/23 22:50:14      点击:
挖矿的具体原理是什么?


     挖矿的原理,我们刚才说过它是做一个很难的数学题,但是这个数学题并不是看你脑子聪明不聪明,而是看你CPU的速度如何啊,因为没有人能够通过脑子把它算出来,大家的方法只能是一个一个试,具体的原理是什么呢?首先我们回忆一下,以前我们曾经讲过一种叫做哈希函数的东西,它的意思呢也可以叫数字摘要或者散列函数啊,它的意思是说我们可以把一个字符串通过一定的运算转化成一个摘要的形式,而且呢你这个算比较容易反而算很难,哈希算法里面有一个很著名的哈希算法叫上256 12256啊,这是美国国家军局发明的一种算法,如果我把一个字符串输入到这个x256函数里边,比如这个字符串叫apple APPle啊,输出了多少呢?输出的是一个啊这个二进制数这个二进制数256位,比如说101011010啊没有什么规律是吧?一共有多少位呢?一共有256位256位啊,所以就叫沙256嘛,而且呢这个算法吧,就是不管你前面输入的是什么,那后面它结果都是256位,一个二进制数,你把一个10个g的电影放进去,它最后输出了还是250 6倍的数啊,而且呢如果你改一点点它就数字都不一样,比如我的apple,这我加一个点多了一个点,最后的这每一位的数字都有可能会发生,这就是它的一个特点,而且呢哈基算法的难度啊,就在于它正向有去之处啊,它正向算比较容易,正向算比较容易是它反向算,非常的困难,这就是它算法的一个特点啊。
    
     我们举个例子啊,比如说有这么一个函数就是x的三次方加log2x加y1x等于y啊,我就举个例子,你给我一个x让我算出y来,其实这个并不难,但是你给我一个y等于x十几,这就很困难哈,奇函数比这个还要复杂的多,所以基本上是不可能的,我们只能怎么问,我们只能一个一个去试啊,假如你告诉我一个一个结果,你问我什么结果是这样的,那我就只能一个一个试,一直把它试出来为止啊,这个呢就是哈希算法的一个基本的问题啊,那么这个挖矿呢,其实就是基于这个上256的这个一个运算,我们来说一下挖矿的具体的原理是什么,刚才我们说到啊,这个区块链呢,其实是一大堆的交易信息,对吧,一大堆的交易信息啊,比如说呢,这个区块链已经链接到了某一个位置,从最开始第1个块开始练,一直练到了某一个位置,这是目前的情况,这个块里并不只有交易信息,它实际上是有一个块的头部,还有呢它里面有一些内容啊,这个内容呢其实就是信息,就是我们交易的这个记录账单啊,现在呢,有很多的人说我现在啊都想进行打包,为什么呢?因为打包有奖励还有手续费对吧,每一个人呢都有自己的一个账单啊,这个账单是他收集的周围一大堆人,每一个人都拿着账单准备去往上接块,但是在接块的时候他必须要算一个数学题,什么数学题呢,首先它会有一个字符串啊,它会有一个字符串,这个字符串里面的内容非常多啊,但是我们说一些主要的这个字符串包含哪些内容呢?首先包含目前的这个块,目前已有的这个块也就是前块,这个钱块的头部,这个钱块的头部啊,这是第1个部分。


     第2个部分呢,他现在已经有了这个账单的信息,你已经有打包好的这个账单的信息啊,比如说像时间呢之类的时间戳之类的啊,还有一大堆乱七八糟的啊,然后还有一个很重要的就是有一个随机数,这是你的一个字符串,现在你对这个字符串做两次哈希运算啊,做两次这个沙拉不就运算它的哈希值,等于什么呢?等于上256,12 256, 然后字符串,你把这个字符串啊做两次这个哈希运算啊,这个速度其实非常快,你一下子能算出来这个数是几,但是你算出来之后会发现它是一个256位的数对不对,这个256位的数我们要求什么呢?要求它的前分类必须是0前n位必须是0,比如说你算出来的这么个数这个数,结果是00000啊,00,比如说有这个9个0啊,这有9个0,然后后面是什么1011啊,一直到最后一共有256位,你算出这么一个数的,假如我的要求就是前9个位数是对的,那你就算对了,你就有资格去打包。


     你就有资格打包的,意思是说你要把你算出来的这个哈希值作为一个新块的头部,然后你算出来这么一个一个数对吧,作为一个新块的头部打一个包,打完了这个包之后再把你这个包接到后面去啊,于是呢你就接出一个新块的,接触个新块来你就获得了什么呀,获得了你想要的奖励就这样?那么我们怎么能算出来前面这几位都是0呢,就要改变一个内容,就是改变这个随机数,其他的内容你是改不了的,所以你就改变这个随机数,随机数最开始从0开始,从0开始零算一次看看是不是满足条件,不满足好算一一不行算,22不行算三那都是二进制的啊,你就不停这么试,直到你把它释出来为止,而且大家要注意每个人在计算的时候,它的这个题目难度是不一样的,为什么呢?因为每一个人虽然前块的头部大家都一样啊,但是你所打包的这个账单可能是不一样的,你的时间开始时间可能是不一样,所以呢造成这个随机数大小不同。


     有人运气好,他第1个数就算出来了,那直接就打包起来了,有人运气不好,他就是计算能力强,做的好长时间最后也算不出来,不过平均来讲是这样的,谁的计算能力更强,谁就更有希望打磨这个块,谁就更有可能去挖到这个矿啊,就是这样一个原理说大家为什么拼命的去买这个矿机呢,对不对?好那我们继续往下说啊,说这个我们有一个难度的设置,这个难度的设置也就是这个n位啊,这个n是怎么确定的,难度n的确定显而易见啊,前面的这个零它个数越多这个问题就越难啊,为什么个数多就难呢,咱们想象说在这个问题中啊,你不可能反算,只能是一个一个随机去试,每一个每一位上出现0的概率和出现一的概率各是50%,所以第1个是0的话你概率是多少概率是1/2,对吧,概率是1/2,第二,的话概率也是1/2,第3位是0概率也是1/2,一直到最后一位是0,概率也是1/2,这样乘起来结果是多少得1/2的n次幂,显而易见这个n越大这个难度就越高分,越小难度就越低对吧?那中本通当时在设计的时候就是保证每10分钟,每10分钟它需要出一个块需要出一个块,然后打包几千条信息啊,那怎么去保证呢?就是调整这个n的难度啊,调整这个n的数字。


      我们举个例子啊,比如说世界上有1万台矿机,每一台的计算能力是14个t每秒,也就是每秒钟可以计算14t次哈,气运算14t是多少?一t是10的12次方,所以这个数是1.4×10的,13次方每秒啊,这10分钟你到底能算多少次?咱们算一下这个10分钟啊,应该是600秒对吧?1.4×10的13次方啊,这是每一个矿级一秒钟算的,在乘以10的4次方这表示有1万台矿机,然后你还得乘以10分钟,大概是600秒对吧,这个数字大概是8×10的19次方,也就是说10分钟大家可以进行这么多次运算啊,这么多次运算,那我们再想一下你如果啊概率是1/2的n次幂,你想出来这个块的话,你需要计算的次数就是2的n次幂次方,你看这就是1/4的话,你出的这个块平均你要算64次,同样道理你算了这么多次对不对?那么它大概相当于是2的多少次幂呢?我们可以通过计算发现,如果这个n等于66的话啊,这个时候啊你的出现概率能够算出概率是1/2的66次幂,然后你平均需要算的次数平均的次数就是2的66次方大概也是8×10的19次方,所以在这种情况下呢,矿期就会把难度设置成n等于66,第1个能够算出来前66位全都是0的人就成功打包这个块就成功的挖到了矿,你没有办法让自己运气变得更好,你能够做的就是买更多的矿机,然后拼命的去挖矿,这样呢你就可能会得到这个比特币,大概就是这样一个原理是吧,好我们这一次呢解释的到底区块链这个块到底是怎么形成,但实际上还有很多问题没有解决啊,比如说我们如何去防止这个双重支付的问题就没有解决。