江卓尔:挖矿难度调整算法,谈比特币的进化之路

栏目: 编程工具 · 发布时间: 5年前

内容简介:比特币是一个由人开发的软件系统,而不是由神创造的神器,这就意味着,比特币并非尽善尽美,开发人员需要持续性地改进比特币。实际上,任何一个程序员去看0.1版的比特币,都会得出一样的结论:这是一个不管从代码,还是实现上,都相当粗糙的版本。是之后10年中,大批开发人员持续地改进比特币,才让比特币有了现在的生态和规模。下面,我将举一个例子:挖矿难度调整算法,来谈比特币的进化。

比特币是一个由人开发的软件系统,而不是由神创造的神器,这就意味着,比特币并非尽善尽美,开发人员需要持续性地改进比特币。

实际上,任何一个 程序员 去看0.1版的比特币,都会得出一样的结论:这是一个不管从代码,还是实现上,都相当粗糙的版本。是之后10年中,大批开发人员持续地改进比特币,才让比特币有了现在的生态和规模。

下面,我将举一个例子:挖矿难度调整算法,来谈比特币的进化。

一、什么是“挖矿难度调整算法”

比特币平均出块时间10分钟,这个10分钟,就是通过“挖矿难度调整算法(Mining difficulty adjust algorithm)”来调节的。

比特币的区块链系统,并不知道目前有多少矿工(算力)在挖矿,只能通过挖出块的速度来推测有多少矿工在挖矿。如果出块比预计快了(一段时间内,平均出块时间小于10分钟),那就说明算力多了,要增加挖矿难度,降低矿工的出块速度。

二、比特币“挖矿难度调整算法”的不足

随着比特币的发展,也出现了大量分叉比特币代码的竞争币,不同币的挖矿收益有高有低,矿工并不会固定挖某一个币,而是会在所有币中选择收益最高的,不断切换着挖(跳矿),乃至出现了专门以跳矿挖为盈利方式的矿池——机枪池。莱比特矿池就是当时发展起来的著名机枪池。

这些币一开始都直接继承了比特币的“挖矿难度调整算法”。然后,问题就出来了:中本聪在写“挖矿难度调整算法”时,并没有考虑到多个币在同一算法中并存,然后矿工在不同币之间跳矿的情况。比特币难度调整周期是每2016个块(约14天)一次,这个14天太长了。

我用一张图来解释问题:

江卓尔:挖矿难度调整算法,谈比特币的进化之路

矿工按照“挖最赚钱币”的原则,不断地在低难度周期大量涌入挖矿,在高难度周期撤出挖矿,形成“算力闪击”。这导致难度调整算法误判算力,再进一步把挖矿难度调到超级低/超级高的位置,直到某个高难度周期实在亏损太多,哪怕最迟钝的矿工也撤出不挖,这个币就死掉了。

三、改进的“逐块难度调整算法”

为了解决这个问题,竞争币改进了原来比特币的14天难度调整算法,把难度调整周期从14天,改成每块都调整,长时间不出块,则挖矿难度自动下降,保证不会出现长时间没人挖的情况。

而机枪池,则像冰川期的自然环境一样,把所有没升级“逐块难度调整”的竞争币(不是已经荒废没人维护,就是技术水平不够)通通扫死了,完成了一次竞争币的淘汰和升级。

我喜欢说:

生存是最终的辩论方式

没有升级的竞争币死掉了,所以他们是错的,所以“逐块难度调整”是对的。

四、从难度调整算法,反思比特币的不足与改进

通过比特币14天难度调整算法的缺陷和改进,相信大家能理解了我在文章开头的这句话:

比特币是一个由人开发的软件系统,而不是由神创造的神器。这就意味着,比特币并非尽善尽美,开发人员需要持续性地改进比特币。

在所有不改进的竞争币死掉后,其实比特币也应该改进为逐块调整,这样健壮性更强一些。虽然由于比特币占绝大部分的sha256算力,不改看起来好像也可以,但并不意味着没有隐患,例如:

1、BCH分叉后的“算力闪击”

在BCH刚分叉时,BCH的逐块难度调整算法EDA存在缺陷,导致出现了sha256算法史上第一次大规模跳矿:算力在BTC和BCH之间大规模转移。每当大量算力因为挖BCH收益高而去挖BCH时,BTC的算力就大幅降低。

算力下降30%=出块速度下降30%,由于BTC被Core锁死1M区块大小,意味着区块容量从“10分钟1M”变成“10分钟0.7M”,这大大加剧了BTC的拥堵程度。直到BCH改用更稳定的DDA难度调整算法后,BTC受到的“算力闪击”才告一段落。

2、BCH翻盘时的“算力死亡螺旋”

如果发生BCH价格短时间巨幅上涨,甚至接近BTC价格的情况,BTC算力会大量转移到BCH上,导致BCH进入“算力死亡螺旋”:算力减少→出块变慢→拥堵加剧→市场进一步恐慌→价格进一步下跌→算力进一步减少,并加速BCH的翻盘。

BCH可能在短时间内,就借助BTC 14天难度调整的缺陷,一步完成翻盘,BTC无人愿意亏损挖高难度块,短时间内猝死,很多人甚至连币都转不到交易所,来不及逃命,直接陪葬。

3、熊市矿工反复开关机的“机枪池效应”

BTC最近的大跌,在历史上首次出现了“主力矿机不够电费关机”的情况,目前大部分算力的矿机都是S9和A8,币价跌到2.6万时,已经击穿了S9和A8 4毛电的电费成本,已经有大量S9和A8停机,BTC的挖矿难度大幅下降。

而到了下一周期,由于挖矿难度大幅下降,挖矿收益提升,暂时停机的矿机又将开机,然后再下一周期再关机。如此大量的矿机反复开关机,形成了类似机枪池扫射的效果,将会导致BTC的难度波动越来越剧烈,出块越来越不稳定。

五、外界环境必然变化,导致内部必须进化

比特币14天难度调整算法的问题,引向一个更深入的问题:

CSW的“稳定论”,甚至“锁死比特币0.1版”对吗?

难度调整算法是个很好的例子。一开始BTC的14天难度调整并不是缺陷,但当外界环境变化后(同算法竞争币的兴起,大跌导致的关机潮),这却变成了缺陷。

外界环境永远在变,在变化的环境中,指望内部不变,规则不改,躺赢到世界货币,无异于痴人说梦。

一个公司在变化的市场环境中,在公司刚成立时,就定好了所有的战略目标,战术手段,发展路径,规章制度,然后躺赢到世界第一?这可能吗?

在快速发展,新技术层出不穷的数字货币市场,只有那些主动适应市场变化,主动根据市场变化改进自己的币,才能达到最高的效率,最快的发展,并战胜那些被动的,“尽量不改”的币,成为世界货币。

在这点上,邓公总结得很好,改革开放三条经验——“猫论”、“摸论”、“不争论”:

猫论:不管黑猫白猫,能捉老鼠的就是好猫。

摸论:摸着石头过河。

不争论:不搞争论,是我的一个发明。不争论,是为了争取时间干。一争论就复杂了,把时间都争掉了,什么也干不成。不争论,大胆地试,大胆地闯。

一个国家,一个十亿人的大国,都敢大胆地试,大胆地闯,一个币又有什么不敢的呢?:)

六、总结

1、比特币是一个由人开发的软件系统,而不是由神创造的神器。

2、0.1版的比特币,是一个不管从代码,还是实现上,都相当粗糙的版本。

3、14天的难度调整,是BTC的一个缺陷,甚至有可能导致BTC的猝死。BCH的DDA逐块难度调整算法,修补了比特币的缺陷,是更优秀的进化。

4、外界环境永远在变,内部必须主动进化,才能达到最高的效率,最快的发展战胜那些被动的,“尽量不改”的币,成为世界货币。

5、邓公改革开放三条经验——“猫论”、“摸论”、“不争论”是大智慧。


以上所述就是小编给大家介绍的《江卓尔:挖矿难度调整算法,谈比特币的进化之路》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解 Flask

深入理解 Flask

[美]Jack Stouffer / 苏丹 / 电子工业出版社 / 2016-7-1 / 79.00

Flask 是一种具有平缓学习曲线和庞大社区支持的微框架,利用它可以构建大规模的web应用。学习上手Flask非常轻松,但要深入理解却并不容易。 本书从一个简单的Flask应用开始,通过解决若干实战中的问题,对一系列进阶的话题进行了探讨。书中使用MVC(模型-视图-控制器)架构对示例应用进行了转化重构,以演示如何正确地组织应用代码结构。有了可扩展性强的应用结构之后,接下来的章节使用Flask......一起来看看 《深入理解 Flask》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

SHA 加密
SHA 加密

SHA 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具