内容简介:比特币是一个由人开发的软件系统,而不是由神创造的神器,这就意味着,比特币并非尽善尽美,开发人员需要持续性地改进比特币。实际上,任何一个程序员去看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、邓公改革开放三条经验——“猫论”、“摸论”、“不争论”是大智慧。
以上所述就是小编给大家介绍的《江卓尔:挖矿难度调整算法,谈比特币的进化之路》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python for Data Analysis
Wes McKinney / O'Reilly Media / 2012-11-1 / USD 39.99
Finding great data analysts is difficult. Despite the explosive growth of data in industries ranging from manufacturing and retail to high technology, finance, and healthcare, learning and accessing d......一起来看看 《Python for Data Analysis》 这本书的介绍吧!