区块链网站|NFTS BTC教学指南 区块链入门课程第二期:挖矿?

区块链入门课程第二期:挖矿?

广告位

区块链入门教程第二期:挖矿?

上一期,我们谈到了区块链的基本知识。链接在这里《区块链入门教程第一期:区块链》。今天,我们将谈论区块链关于采矿的知识。

一.采矿和矿工

正如我们在上一期中所说的,区块链由许多节点组成。为了保证节点间的同步,每个新块的添加速度不能太快。想象一下,你刚刚同步了一个块,准备基于它生成下一个块,但此时其他节点有新的块生成,你要放弃一半的计算,重新同步。因为每个块后面只能跟一个块,所以只能在最后一个块之后生成下一个块。所以,你别无选择,只能一听到信号就同步。

因此,区块链的发明者中本聪(这是一个笔名,其真实身份仍然不明)故意使其难以添加新的区块。他的设计是,平均每10分钟,全网就能生成一个新块,一个小时只有6个。

这个输出速度不是通过命令来实现的,而是通过刻意设置大量计算来实现的。换句话说,只有通过极其大量的计算才能得到当前块的有效哈希,从而给区块链增加新的块。因为计算量大,所以不能快速起来。

这个过程叫做挖掘,因为计算有效哈希的难度就像是在世界的沙子里找到一颗合格的沙子。计算哈希的机器叫矿机,操作矿机的人叫矿工。

二、难度系数

看完这个,你可能会有一个疑问。人们都说挖掘难,但挖掘不就是用计算机计算一个哈希吗,计算是计算机的强项。怎么会难,怎么会耽误?

原因是并不是任何散列都可以使用,只有满足条件的散列才会被块链接。这个条件特别苛刻,使得大部分哈希都不符合要求,必须重新计算。

因为每个块包含一个难度系数,所以这个值决定了计算散列的难度。比如第10万块的难度系数是14484.199999999894我们也可以简单的把难度理解为:挖掘数据块需要多长时间?

同时难度值的计算公式为:难度值=最大目标值/当前目标值。

那么目标值是什么:目标值是当前块生成达到的目标值的哈希值,用来证明矿工的工作量。在成功挖掘数据块之前,挖掘器挖掘的块的标头哈希值必须小于目标值。

当前目标值是指生成的数据块的头信息的散列值的参考索引。最大目标值是一个固定值:0x 000000000 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff。

因为只有小于目标值的哈希才有效,否则哈希无效,必须重新计算。因为目标值很小,hash小于这个值的几率极小,可能要计算10亿次才算一个。这是采矿如此缓慢的根本原因。

上一篇文章也说了,当前块的hash是由块头唯一决定的。如果要对同一个块重复计算hash,就意味着块头必须保持变化,否则不可能计算出不同的hash。块头中的所有特征值都是固定的。为了改变块头,中本聪故意添加了一个叫做Nonce的随机项。

Nonce是一个随机值,挖掘器的作用其实就是猜测Nonce的值,让块头的hash可以小于目标值,这样就可以写入区块链。随机数很难猜测。目前只能通过穷举法一个个试错。根据协议,Nonce为32位二进制值,即最大值可达21.47亿。第100,000个块的Nonce值是274,148,111。可以理解为矿工从0开始已经计算了2.74亿次,得到了一个有效的Nonce值,使得计算出来的hash满足条件。

运气好的话,我们很快就能找到Nonce。如果运气不好,可能已经统计了21.47亿次,没有发现Nonce,也就是当前块不可能计算出满足条件的hash。此时,协议允许矿工改变区块并开始新的计算。

第三,难度系数的动态调整

上一篇文章提到,开采是随机的,不可能保证十几分钟就产出一个区块。有时候一分钟就能算出来,有时候可能几个小时都无果。一般来说,随着硬件设备的完善,矿机数量的增加,计算速度会越来越快。

为了保持十分钟的输出速度不变,中本聪还设计了难度系数的动态调整机制。他规定每两周调整一次难度系数(2016块)。如果这两周的平均块生成速度是9分钟,说明比法定速度快了10%,那么接下来的难度系数会上调10%;如果平均生成速度是11分钟,就意味着比法定速度慢了10%,那么下一个难度系数就会下调10%。

难度系数越高(目标值越小),挖掘难度越大。

然而,有人会问,区块链是分散的。这个难度谁来调?难度的调整在每个完整的节点中独立自动地发生。每2016块中的所有节点都会调整难度。难度的调整公式是将最近的2016块所用的时间与20160分钟(两个星期,即这些块以10分钟的速度所用的预期时间)进行比较得出的。根据实际持续时间与预期持续时间的比率来调整难度(或变得困难或容易)。简单来说,如果网络发现块生成速率快于10分钟,会增加难度。如果发现慢于10分钟,难度会降低。

这个公式可以概括为:

新难度=旧难度*(最后2016块的实际时间/20160分钟)四、矿工的收入

既然采矿不容易,为什么还有人想当矿工?以比特币为例。

第一,交易的确认离不开矿工。

第二,比特币协议规定,挖掘新区块的矿工将获得奖励。一开始(2008年)是50比特币,后来每四年减半。目前(2018年)是12.5比特币。这也是增加比特币供给的机制,所有流通中的新比特币都是这样诞生的。

你可能会看到每四年奖励减半。由于比特币可以分为小数点后八位,到2140年,矿工将得不到任何奖励,比特币的数量将停止增加。这时候矿工的收入就完全靠交易费了。

所谓交易费,就是矿工可以从每笔交易中抽取,具体数额由支付者自愿决定。你可以什么都不给矿商,但是那样的话,你的交易就没人管了,到时候被写进区块链,被确认就来不及了。矿商总是优先考虑收费最高的交易。

目前由于交易笔数激增,手续费水涨船高,一笔2000多的交易总手续费可达3 ~ 10比特币。如果你的手续费低,很可能一个星期过去了,交易还没有确认。

一块的奖金是12.5比特币,加上手续费,收入可观。按照现在的价格可以达到75万人民币左右。想想看,运气好的话,几分钟就能挖到一个区块,还能拿到这么大一笔钱,这也是为什么人们对挖矿趋之若鹜。

动词(verb的缩写)摘要

总之,矿工之所以存在,是因为现在的收益大于自己的成本,趋利性是人之常情。

今天的文章写到这里,明天我会写比特币,区块链的代表货币。

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/btb/btbjiaoxue/59187.html
上一篇
下一篇

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回顶部