小编:记得
来源:云算力矿工
区块链是由很多个节点组成的,为了保证节点之间的同步,所以每一个新区块的添加速度不能太快。试想一下,你刚刚同步了一个区块,准备基于它生成下一个区块,但这时别的节点又有新区块生成,你不得不放弃做了一半的计算,再次去同步。因为每个区块的后面,只能跟着一个区块,你永远只能在最新区块的后面,生成下一个区块。所以,你别无选择,一听到信号,就必须立刻同步。
所以,区块链的发明者中本聪(这是假名,真实身份至今未知)故意让添加新区块,变得很困难。他的设计是,平均每10分钟,全网才能生成一个新区块,一小时也就六个。
这种产出速度不是通过命令达成的,而是故意设置了海量的计算。也就是说,只有通过极其大量的计算,才能得到当前区块的有效哈希,从而把新区块添加到区块链。由于计算量太大,所以快不起来。
这个过程就叫做采矿(mining),因为计算有效哈希的难度,好比在全世界的沙子里面,找到一粒符合条件的沙子。计算哈希的机器就叫做矿机,操作矿机的人就叫做矿工。
难度系数
读到这里,你可能会有一个疑问,人们都说采矿很难,可是采矿不就是用计算机算出一个哈希吗,而计算也正是计算机的强项啊,怎么会变得很难,迟迟算不出来呢?
原因为不是任意一个哈希都可以,只有满足条件的哈希才会被区块链接受。这个条件特别苛刻,使得绝大部分哈希都不满足要求,必须重算。
因为每一个区块都包含了一个难度系数(difficulty),这个值决定了计算哈希的难度。举例来比特币矿场说,第100000个区块的难度系数是14484.16236122。我们也可以将difficulty简单的可以理解为:挖到数据区块的所用时间多少。
同时难度值difficulty的计算公式为:难度值=最大目标值/当前目标值
那什么是目标值:目标值是当前区块生成所达成目标值的hash值,用于矿工的工作量证明。矿工挖掘的区块的头部hash值必须小于目标值,数据区块才能被挖掘成功。
当前目标值是指现在产生数据区块的头部信息hash值参考指标。最大目标值是一个定值:0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF。
由于只有小于目标值的哈希才是有效的,否则哈希无效,必须重算。由于目标值非常小,哈希小于该值的机会极其渺茫,可能计算10亿次,才算中一次。这就是采矿如此之慢的根本原因。
上一篇文章也说过,当前区块的哈希由区块头唯一决定。如果要对同一个区块反复计算哈希,就意味着,区块头必须不停地变化,否则不可能算出不一样的哈希。区块头里面所有的特征值都是固定的,为了让区块头产生变化,中本聪故意增加了一个随机项,叫做Nonce。
Nonce是一个随机值,矿工的作用其实就是猜出Nonce的值,使得区块头的哈希可以小于目标值,从而能够写入区块链。Nonce是非常难猜的,目前只能通过穷举法一个个试错。根据协议,Nonce是一个32位的二进制值,即最大可以到21.47亿。第100000个区块的Nonce值是274148111,可以理解成,矿工从0开始,一直计算了2.74亿次,才得到了一个有效的Nonce值,使得算出的哈
3月,在2021比特大陆小伙伴高峰会上,詹克团的一句话能够归纳今日全世界比特币算率销售市场的现况:算率布局已在巨大变化前夕。国外算率经营规模逐渐扩张,另外挖矿相关概念股在国外金融市场慢慢盛行。 事实上,...
自从出了信用卡这个产品以后便红遍整个世界,信用卡是一把双刃刀,用好了,非常有好处,用的不好,那就是一把杀人利刃,可以在关键时刻助你一臂之力,也可以在关键时刻插你一刀。 首先我对大家几句告诫...
刚刚了解比特币时,它仅仅一个标记,是一个我能盯住显示屏来做多做空的标底。底点买进,高些售出,钱钱拿到手,我不相信爱情。但事实上,比特币的含义远远不止这般。我那般看待这一份人们所获得的惊喜一样的礼品,是一种鄙夷。它非...
11月5日,“罗永浩”罗永浩在微博上分享了ShaanPuri对于“元宇宙”定义的讲解,他觉得ShaanPuri对元宇宙定义的了解比马克·扎克伯格“可靠多了”。ShaanPuri曾是社交网络平台Bebo的CEO,该服...