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

论坛 期权论坛 期权     
自嗨   2020-3-28 03:55   2964   0
美股月内四次熔断,比特币也从一万美元跌至最低三千八百美元,在比特币产量减半之前,首先实现了资产减半,可以说很刺激了。随着币价的暴跌,也出现了各种流言,前两天就听到了一个这样的消息。
“比特币系统出错,矿工已经四小时没有出块了,后台增发数量造成算力漏洞被攻击,可以双花了。黑客利用这个漏洞凭空造出了一千万个比特币出来”。虽然说的有头有尾,但是稍微了解区块链的人直接可以确认这是谣言了。那么我们就针对这个谣言来聊聊细节吧。
[h2]比特币挖矿[/h2]挖矿在区块链中就是出块的意思,也就是矿机做哈希计算得到合法的结果,进而生成区块。所有的块连接到一起就形成区块链,这就像是链表一样的结构。然后通过共识进而达到无法篡改的目的。那么如果说比特币系统出错,或者算力大幅度减少,后台也不可能增发数量,也不可能一直不出块,毕竟挖矿是有一定的幸运率的。或者在一些区块链浏览器看一下谣言也不证自破了。
[h2]难度[/h2]哈希计算出来的值,前面的有多少个零就代表难度是多少。比特币定义 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。
[h2]比特币大概每十分钟出一个块[/h2]感兴趣可以去 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 之间。
[h2]如果想要了解更多的比特币知识[/h2]可以看一下《mastering bitcoin》这本书,谷歌一下就可以搜到在线阅读,十本免费的书籍。想了解更多技术相关可以看比特币的开发手册和 wiki。当然比特币只是区块链技术的一角,还有更多的链可以学习,他们互相取长补短,不知道在未来的某一天,区块链会不会改变我们的生活。
[h2]引用[/h2]
  • en.bitcoin.it/wiki/Difficulty
  • en.bitcoin.it/wiki/Protocol_rules#.22block.22_messages


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP