上一篇文章简单解释了比特币为什么有价值,这篇文章小编解释了比特币是如何挖掘的。
当你和别人交流比特币的时候,除了提到它所代表的价值的高低之外,还会提到一个概念:挖矿。比特币就是通过挖矿挖出来的。比特币每年可以挖到的数量
我们首先需要了解几个简单的概念。P2P点对点金融大家应该都有所了解,这里我们先解释下P2P软件。举个例子:比如你从腾讯视频上面观看电影,想要把电影下载到手机观看,但这个下载过程中,电影的来源就是腾讯视频的服务器上,简单的理解为电影存在腾讯视频上。然后从腾讯视频服务器的硬盘下载到手机,而P2P软件不同的就是电影的资源可以从其他P2P用户电脑硬盘上下载,如果其他P2P用户需要下载资源也可从你得手机中下载。
我们可以把这个电影比作比特币。它不存在于任何公司、银行、政府的服务器上,而是存在于互联网中,存在于所有人的电脑中,每隔一段时间比特币系统就会在系统节点上生产一个随机代码,然后所有人的电脑均可以计算此代码,第一个计算到的人就会产生一个区块,获得到比特币,这就是我们所说的挖矿。而矿机就是电脑。
上文我们说过比特币总共只有2100万枚,而目前一枚比特币基于目前的数据结构会被分割成8个小数位,也就是0.00000001BTC,矿工们可以挖到的最小比特币的单位就是0.00000001BTC。
在比特币系统中,是可以通过自身的算法来动态地调整全网所有电脑的挖矿难度的,目前在比特币系统中,每过10分钟,就会有一个节点挖矿成功,一但有人挖矿成功,比特币系统就会奖励挖矿者一定数量的比特币,这个数量也是通过算法进行控制的。简单的解释就是最开始的四年,每个挖矿成功的人可以得到25枚比特币的奖励。每四年衰减一半,下一个四年,每个挖矿成功的人只能获得奖励12.5个。下一个四年就会得到奖励6.25个,以此类推,直到2140年的时候区块链发行完毕,比特币就奖励完了。总共只有2100万枚。
比特币的挖矿计算公式
比特币的设计者中本聪在设计比特币系统的时候,希望每隔10分钟就可以发行一次比特币,但是比特币系统中挖矿的电脑可能成千上万台,那应该给谁发呢?
中本聪采用了一个工作量证明的策略,在比特币系统中给每台电脑出一个难题,在每个新区块里面,区块头的数据结构中存在一个Nonce的字段。难题就是:在区块头中其他的字段值不变的前提下,不断地调整Nonce字段的值,然后对区块头里面BlockHeader这个结构体的值计算Hash。要求要到一个Nonce值,使得计算出的Hash值小于或者等于某个固定的值。
列举一下区块头中参与计算的参数:
version ---------------- block的版本
prev_hash ---------------- 上一个Block Header的hash值
merkle_root ---------------- 需要写入交易记录的Hash值
ntime ---------------- 更新时间
nbits ----------------- 必须小于或者等于当前值
Nonce ------------------上文说的随机值
计算公式:
SHA256(SHA256(version + prev_hash + merkle_root + ntime + Nonce)) < nbits
所以挖矿其实就是通过计算机的CPU、GPU计算一个特定的数据结构,比特币挖矿过程使用的是SHA256哈希函数。由于Hash算法是一个不可逆的算法,没法通过具体的Hash值倒推出原文,所以计算机只能采用穷举的方法,从1开始不断地尝试,1,2,3,4.....在这个过程在就是考验计算的CPU的计算速度了,计算速度快的,很快就能得到这个Nonce值,然后把Nonce值放入区块的结构体里面,通过P2P网络进行广播出去,然后通过每个节点去验证这个Nonce的值是否合法。如果全部验证通过,就认为这个区块挖掘成功,挖到矿了。其他的计算机可能计算出一半,也可能计算出来,但一旦别人计算出的值被验证通过,计算机只能放弃本次穷举,转而向新的区块进行挖掘,计算,去寻找下一个区块头的Nonce的值。
用最简单的术语来说,就是挖矿的节点会不断地重复尝试,直到找到的随机数计算得到的哈希值低于某个特定的目标值。其中哈希函数的结果是无法提前得知的,也是无规律的。只能不断地产生计算。
因此可以把挖矿理解为,让计算机通过穷举的办法,不断去找Nonce值、计算Hash值。谁先找到这个Nonce值并且广播验证通过,谁就挖到矿了。
普通人怎么进行挖矿?
任何人都可以在专门的硬件上面运行软件来成为比特币的挖矿工,挖矿软件通过P2P网络监听交易广播,执行恰当地运行计算任务,并且确认一些交易,比特币矿工可以获得的收益就是完成确认工作中赚取用户支付的用于加速交易处理的交易手续费以及按照固定公式增加的比特币。
挖矿机
挖矿机一般都是配置了专业的挖矿芯片的电脑,目前大多数采用的烧显卡的方式(利用显卡GPU来进行挖矿),耗电量比较大,这也是最近市面上显卡价格不断涨价的原因。
然后下载软件,运行算法,需要下载专门的比特币运算工具,然后注册合作网站,把注册得到的用户名和密码填入计算程序中,点击运算就可以进行挖矿了。比如比特币挖矿软件guiminer。是完全可以免费使用的。