14天的难度调整,是BTC的一个缺陷,甚至有可能导致BTC的猝死
比特币是一个由人开发的软件系统,而不是由神创造的神器,这就意味着,比特币并非尽善尽美,开发人员需要持续性地改进比特币。
实际上,任何一个程序员去看0.1版的比特币,都会得出一样的结论:这是一个不管从代码层面,还是从实现层面,都相当粗糙的版本。比特币现有的生态和规模,是这10年大批开发人员持续改进的结果。
下面,我们以“挖矿难度调整算法”为例,来谈比特币的进化。
01 什么是 “挖矿难度调整算法”?
比特币平均出块时间为10分钟,这个10分钟,就是通过 “挖矿难度调整算法(Mining Difficulty Adjust Algorithm)” 来调节的。
比特币的区块链系统,并不知道目前有多少矿工(算力)在挖矿,只能通过出块的速度来推测有多少矿工在挖矿。如果出块比预计快了(一段时间内,平均出块时间小于10分钟),那就说明算力多了,要增加挖矿难度,降低矿工的出块速度。
02 比特币 “挖矿难度调整算法” 的不足
随着比特币的发展,也出现了大量分叉比特币代码的竞争币,不同币的挖矿收益有高有低,矿工并不会固定挖某一个币,而是会在所有币中选择收益最高的,不断切换着挖(跳矿),乃至出现了专门以跳矿挖为盈利方式的矿池——机枪池。莱比特矿池就是当时发展起来的著名机枪池。
这些币一开始都直接继承了比特币的 “挖矿难度调整算法”。然后,问题就出来了:中本聪在写 “挖矿难度调整算法” 时,并没有考虑到多个币在同一算法中并存,然后矿工在不同币之间跳矿的情况。比特币难度调整周期是每2016个块(约14天)一次,这个14天的周期太长了。
下面,我用一张图来解释:
矿工按照 “挖最赚钱币” 的原则,不断地在低难度周期大量涌入挖矿,在高难度周期撤出挖矿,形成 “算力闪击”。这导致难度调整算法误判算力,再进一步把挖矿难度调到超级低 / 超级高的位置。直到某个高难度周期实在亏损太多,这时哪怕是最迟钝的矿工也会撤出不挖,这个币就死掉了。
03 改进的 “逐块难度调整算法”
为了解决这个问题,竞争币改进了原来比特币的14天难度调整算法,把难度调整周期从14天,改成每块都调整,长时间不出块,则挖矿难度自动下降,保证不会出现长时间没人挖的情况。
而机枪池,则像冰川期的自然环境一样,把所有没升级为“逐块难度调整” 的竞争币(不是已经荒废没人维护,就是技术水平不够)通通扫射死,从而完成竞争币的淘汰和升级。
我喜欢说:没有升级的竞争币死掉了,所以它们是错的,所以 “逐块难度调整” 是对的。
04 :*bz zo(9l,y+*n:+n9i-:/.#y.z+.#y'.z+i),:+#9i),:e [O[OH[OH]Y\[OH]Y\[OH]Y\[OH]Y\[OH]Y\
.[OH[OH]Y\xnyn y+*.o 9c:/k#: #9.#y+gb&9fj8[OH[OH]Y\ynyn {+*.#y. {/+9."`d9+8[OH[OH]Y\9i*yfn, #9+Е 9.*fm&!"yc'ynz`$9ge, #9/iy.nyn yfm+&9/%[OH[OH]Y\8i%h*9c#9az`n:/%cz b,9 :j9b9 9o9cey&: ;'9l/za#y.x'H9n {$9...%-) [OH[OH]Y\x`.zgjyo 9/."yhyj8%8%8'9+'x'9n:+'x'9.#y.z+'H9+ni |
|