“挖矿“是个什么鬼?

前几天某大厂工程师非法控制155台服务器“挖矿”谋利,被判刑3年。那么挖矿到底是怎么回事?以前听李永乐老师讲解感觉很有意思,下面是其中的一部分。

 

那得先从比特币说起,比特币实际上是一种电子货币,或者叫数字货币,它是基于密码学的一种货币。这种货币和银行卡里的货币不太一样,2008年金融危机,11月1日,一个网络极客,化名为中本聪,中本聪到目前为止,我们也不知道他到底是谁。他在网络上发表了一篇文章,我们称为《白皮书》,全名叫《比特币:一种点对点式的电子现金系统》。传统情况下我们在进行交易的时候,最重要的一件事就是记账,比如说,我付给你多少钱,我要检查我银行卡里还有多少钱,现在的记账是谁来记呢?是银行记,不管是用信用卡,还是用支付宝、微信,都是银行来记账。我们信任银行,因为银行背后是国家的信用。中本聪在《白皮书》里提出了这样一种构想,我们可以设计一种去中心化的电子记账系统,我们不需要传统的这种中心化的记账系统,每个人的账本都可以让别人去看,都是公开的。举个例子:A,B,C,D四个人进行交易,A先支付了10个比特币给B,这件事情,A要记账,同时要把账单广播出去,要告诉所有人,所以A把账单告诉B,C,D;B支付了5个比特币给C,同时B把账单告诉A,C,D;C支付了2个比特币给D,同时C把账单告诉A,B,D。这个账单我们要进行打包,打包成一个块,这个块我们叫它为区块,一个区块的大小大概是1M,我们可以存4000条左右的交易记录,这个块打包完之后,我们把这个块链接到以前的交易记录上,形成了一条链,后续新的的块再链接到这个块上,这就叫区块链。

 

为何要记账?

记账有奖励,每个比特币系统中的用户都可以去记账,如果他记账他会有手续费的收益,用银行卡其实也有手续费,还挺高,用比特币会很低;打包的那个人,会有打包奖励。只能是1个人打包,那么奖励是多少呢?中本聪提出这个系统时,设计了一个方案,就是每10分钟打一个包,最开始那个包会奖励打包者50个比特币,过了四年之后,每打一个包会奖励25个比特币,如果再过四年,会奖励12.5个,每过四年之后,奖励就会减半。比特币一共有多少个?50 * 6 * 24 * 365 * 4 (1+1/2+(1/2)² + ......) = 2100万

 

什么是挖矿?

正因为有个手续费和打包奖励,所以大家抢着去打包,那么以谁为准呢?只能是1个人打包,这个权利给谁呢?中本聪想了一个办法,叫工作量证明,就是说每一个参与的用户,都要去做一个很难的数学题,这个很难的数学题你把它做出来了,那你就可以有权利进行打包,你就会获得手续费和打包奖励,这个很难的数学题难到什么程度呢?难到没有任何一个人可以直接通过脑子把它做出来,我们必须一个一个数去尝试,直到你把它尝试出来,那么你就获得了奖励,所以这个过程就称之为挖矿。具体这个数学题是怎么回事呢,我们说说挖矿的具体原理是什么?

 

哈希算法中一个著名的算法叫SHA256,这是美国国家安全局发明的一种算法。如果把一个字符串输入到SHA256这个函数里,比如SHA256(“apple”),输出一个256位的二进制数,比如1010101......,没有什么规律,挖矿就是基于SHA256的一个运算。

 

区块链是一堆交易信息,这个块里不仅仅只有交易信息,还有块的头部,每个人都有账单,去接块,在去接块的过程中,必须要算一个数学题,有一个字符串,这个字符串里的内容非常多,包括当前块的头部,账单信息,时间戳,随机数等,对这个字符串做两次SHA256运算得到一个256位的数,对这个数要求前n位必须是0,比如前9位必须是0,我们如何算出这9位都是0呢?我们只要改变这个随机数,其他的内容是改不了的,随机数从0开始,不断的尝试,直到算出前9位都是0,每个人在计算的时候题目难度是不一样的,每个人的当前块的头部是一样的,不过打包的账单可能不一样,时间戳也不一样,个人信息也不一样,所以造成随机数大小不同,运气好的话第一个数就算出来了,运气不好,虽然计算能力强,算了好长时间,最后也算不出来。不过平均来讲,谁的计算能力强,谁就更有希望打包这个块,谁就更有可能去挖到这个矿,所以大家都去买矿机。

 

难度的设置,这个n是如何确定的?

0的个数越多,这个问题越难,0出现的概率是 1/2 * 1/2 * 1/2 * ...... = (1/2)ⁿ,n越大,难度就越高,n越小,难度就越低,中本聪在设计时,保证每10分钟,需要出一个块,打包几千条信息,怎么去保证呢?就是调整n的大小。

 

举例:世界上有1万台矿机,每台计算能力是14T/S,每秒中可以计算14T次哈希运算,1T是10的12次方,10分钟能算多少次?1.4 * 10的13次方 *  10000  * 600秒 = 8 * 10的19次方,因为0出现的概率是(1/2)ⁿ,那么需要计算的次数就是2ⁿ,当n=66, 0出现的概率是(1/2)的66次方,平均计算次数就是2的66次方大概也就是 8 * 10的19次方,在这种情况下,矿机就会把难度设置成 n = 66,第一个能算出前66位都是0的人,就成功打包这个块,就挖到了矿。

 

你没有办法让自己变得运气更好,你能够做的就是买更多的矿机,拼命的去挖矿,这样你就有可能会得到比特币。

 

更详细的内容请参考李永乐老师讲解什么是区块链,什么是比特币的视频。

你可能感兴趣的:(“挖矿“是个什么鬼?)