区块链系列一:现在挖比特币有多难

比特币去年大涨,各种新闻、技术论坛甚至身边的大叔大妈都在讨论比特币,火爆程度远超15年年初的股市。甚至直接带动各种山寨币、空气币大涨,似乎只要发个币都是几十、几百倍的增长,简直全民疯狂!

这些请大家理智看待,冷静分析,合理投资,我不给其助威,也不泼冷水,仅从技术的角度来探讨一些问题。

最早听说比特币是在11年,然后去年下半年才开始系统地了解区块链相关的技术,打算接下来整理一下这方面的知识,希望对大家有所帮助。 市面上也有很多文章书籍甚至课程来讲授比特币或者区块链技术的,所以我不会面面俱到,尽可能挑一些自己感兴趣的话题来写。推荐一些区块链相关的学习资料,https://magicly.me/blockchain-materials

可能大部分人都已经知道比特币是通过“挖矿”凭空产生的,挖矿就是不停地做hash计算,当找到某个值刚好满足条件,就算挖出矿了, 就会得到一部分比特币作为奖励。 基本上挖出比特币的概率,等于你自己的算力(用每秒能做多少次hash计算来衡量)占全球参与挖矿的算力的百分比。 简单来说,如果全球每秒能做100次hash运算,你每秒能做1次hash运算,那你挖到比特币的概率就是1%。

最早的时候大家用CPU挖矿,后来发现GPU会快很多,最后干脆有人把hash算法集成到了芯片上(即ASIC,Application-specific integrated circuit),算力再次暴涨。下图可以看出这两年算力的增长情况(来源:https://blockchain.info/charts/hash-rate?timespan=2years): hash算力增长图标

通过https://blockexplorer.com/api/status?q=getDifficulty 这个接口可以获取到当前算力的“难度”,目前为:

{
  "difficulty": 3290605988755.001
}

根据比特币挖矿机制,每10分钟产生一个区块需要的算力公式为:

  difficulty * 2 ** 32 / 600 // 23555072455973170000, 即20921P/s

即当前算力大概在每秒20921P次hash运算才能在10分钟内记账一次,得到12.5个BTC。号称当前最快的蚂蚁矿机S9,算力是13.5T,也就是说全网大概有20921 * 2 ** 10 / 13.5 = 1586896, 相当于全网大概有160万台S9在运行。

每10分钟出一次块, 一天能出24 * 6 == 144块,据说一个S9能正常运行两年,如果不考虑这两年的算力增长(基本不可能,16年到现在算力增长了接近20倍),大概在这两年你能有多大的机会挖中一次呢:

13.5 / (20921 * 2 ** 10) * 144 * 365 * 2 //0.0662 

而目前一块的奖励是12.5BTC,也就是说你的期望是0.0662 * 12.5 == 0.8280个BTC。刚刚在火币网上查的目前BTC价格是52000rmb不到,也就是期望获得0.8280 * 52000 == 43057的回报。矿机本身15000,S9的功耗是1320w, 两年用电1.32 * 24 * 365 * 2 === 23126.4度,所以能不能赚,基本上取决于你能找到多便宜的电了。

注意,我们的计算比较简单,只是给大家一个直观的感受,以及大概计算方式,并没有考虑算力的增长以及BTC价格的增长,所以我们不做建议。网上有很多更复杂的计算,并根据结果建议怎么挖矿的, 大家自行搜索即可,本文不做任何投资建议。

另外,根据BTC的协议,目前挖出一块是12.5BTC,也就是说如果你“自己”挖的话,要么挖中一块是12.5BTC,要么不中就啥也没有,根本不存在所谓的在家挖了一个月,挖到0.00001BTC,连电费都不够这种说法。 当然,由于现在算力太多,出现了“矿池”,即大家合作来一起挖,挖中一块,再根据大家贡献的算力百分比来分,这种情况才可能有挖到零点几个BTC的说法。

单位换算

1P = 2 ** 50 ~=1,000,000,000,000,000 // 千万亿

1T = 2 ** 40 ~= 1,000,000,000,000 // 万亿

1G = 2 ** 30 ~= 1,000,000,000  // 十亿

1M = 2 ** 20 ~= 1000,000 // 一百万

1K = 2 ** 10 ~= 1000 // 一千

参考资料