江卓爾:挖礦難度調整算法,談比特幣的進化之路

江卓爾:挖礦難度調整算法,談比特幣的進化之路

比特幣並非盡善盡美,開發人員需要持續性地改進比特幣。

江卓爾:挖礦難度調整算法,談比特幣的進化之路

生存是最終的辯論方式

比特幣是一個由人開發的軟件系統,而不是由神創造的神器,這就意味著,比特幣並非盡善盡美,開發人員需要持續性地改進比特幣。

實際上,任何一個程序員去看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、鄧公改革開放三條經驗——“貓論”、“摸論”、“不爭論” 是大智慧。

江卓爾:挖礦難度調整算法,談比特幣的進化之路



分享到:


相關文章: