且行善举,莫问前程。

0%

比特币如何确保十分钟挖一个块

美股月内四次熔断,比特币也从一万美元跌至最低三千八百美元,在比特币产量减半之前,首先实现了资产减半,可以说很刺激了。随着币价的暴跌,也出现了各种流言,前两天就听到了一个这样的消息。

“比特币系统出错,矿工已经四小时没有出块了,后台增发数量造成算力漏洞被攻击,可以双花了。黑客利用这个漏洞凭空造出了一千万个比特币出来”。虽然说的有头有尾,但是稍微了解区块链的人直接可以确认这是谣言了。那么我们就针对这个谣言来聊聊细节吧。

比特币挖矿

挖矿在区块链中就是出块的意思,也就是矿机做哈希计算得到合法的结果,进而生成区块。所有的块连接到一起就形成区块链,这就像是链表一样的结构。然后通过共识进而达到无法篡改的目的。那么如果说比特币系统出错,或者算力大幅度减少,后台也不可能增发数量,也不可能一直不出块,毕竟挖矿是有一定的幸运率的。或者在一些区块链浏览器看一下谣言也不证自破了。

难度

哈希计算出来的值,前面的有多少个零就代表难度是多少。比特币定义difficulty 1为0x1d00ffff,十六进制也就是:

0x00ffff 2**(8 (0x1d - 3)) = 0x00000000FFFF

target用十六进制来表示,target和difficulty的换算是:

difficulty = difficulty_1_target / current_target

所以当一个通过哈希计算出来的值小于当前的target也说明这个块是合法的。就可以打包写入区块链,并广播自己挖出的块。谁计算的快,谁就可以得到挖矿奖励,目前大概是12.5个比特币奖励,因为包括矿工费所以一般大于12.5。下次奖励减半时间大概是2020年5月14日。具体可以看btc.com/stats/halving

比特币大概每十分钟出一个块

感兴趣可以去btc.com看一看,比特币大概每十分钟出一个块,有时会接连出一两个,有时则会超过十分钟甚至一个小时都不出,这都跟幸运值有关,也和算力的增长有关。当矿机增加或减少就对应着算力的增加或减少,如今散户们都是接入矿池以获得更多的收益,毕竟现在矿池当道,solo并不是一个太好的选择。

为了维持每十分钟一个块,比特币每2016个块重新计算一次网络的难度,使挖矿继续维持在每十分钟一个块。也就是:

2 weeks / 10 minutes = 14 24 60 / 10 = 2016

重新计算难度也是根据2016个块来计算的:

new target = old target * time for 2016 blocks / 2 weeks

也可以看我的实现github.com/ciknight/microchain/blob/master/microchain/chain.py#L76,我使用比率来计算,并且规定比率在4到1/4之间。

如果想要了解更多的比特币知识

可以看一下《mastering bitcoin》这本书,谷歌一下就可以搜到在线阅读,十本免费的书籍。想了解更多技术相关可以看比特币的开发手册和wiki。当然比特币只是区块链技术的一角,还有更多的链可以学习,他们互相取长补短,不知道在未来的某一天,区块链会不会改变我们的生活。

引用

------ 本文结束 ------