作者:江卓爾 / 來源:江卓爾微博
比特幣是一個由人開發的軟件系統,而不是由神創造的神器,這就意味著,比特幣并非盡善盡美,開發人員需要持續性地改進比特幣。
實際上,任何一個程序員去看0.1版的比特幣,都會得出一樣的結論:這是一個不管從代碼層面,還是從實現層面,都相當粗糙的版本。比特幣現有的生態和規模,是這10年大批開發人員持續改進比特幣的結果。
下面,我們以“挖礦難度調整算法”為例,來談比特幣的進化。
01
什么是 “挖礦難度調整算法”?
比特幣平均出塊時間為10分鐘,這個10分鐘,就是通過 “挖礦難度調整算法(Mining Difficulty Adjust Algorithm)” 來調節的。
比特幣的區塊鏈系統,并不知道目前有多少礦工(算力)在挖礦,只能通過挖出塊的速度來推測有多少礦工在挖礦。如果出塊比預計快了(一段時間內,平均出塊時間小于10分鐘),那就說明算力多了,要增加挖礦難度,降低礦工的出塊速度。
02
比特幣 “挖礦難度調整算法” 的不足
隨著比特幣的發展,也出現了大量分叉比特幣代碼的競爭幣,不同幣的挖礦收益有高有低,礦工并不會固定挖某一個幣,而是會在所有幣中選擇收益最高的,不斷切換著挖(跳礦),乃至出現了專門以跳礦挖為盈利方式的礦池——機槍池。萊比特礦池就是當時發展起來的著名機槍池。
這些幣一開始都直接繼承了比特幣的 “挖礦難度調整算法”。然后,問題就出來了:中本聰在寫 “挖礦難度調整算法” 時,并沒有考慮到多個幣在同一算法中并存,然后礦工在不同幣之間跳礦的情況。比特幣難度調整周期是每2016個塊(約14天)一次,這個14天的周期太長了。
下面,用一張圖來解釋問題:
礦工按照 “挖最賺錢幣” 的原則,不斷地在低難度周期大量涌入挖礦,在高難度周期撤出挖礦,形成 “算力閃擊”。這導致難度調整算法誤判算力,再進一步把挖礦難度調到超級低 / 超級高的位置。直到某個高難度周期實在虧損太多,這時哪怕是最遲鈍的礦工也會撤出不挖,這個幣就死掉了。
03
改進的 “逐塊難度調整算法”
為了解決這個問題,競爭幣改進了原來比特幣的14天難度調整算法,把難度調整周期從14天,改成每塊都調整,長時間不出塊,則挖礦難度自動下降,保證不會出現長時間沒人挖的情況。
而機槍池,則像冰川期的自然環境一樣,把所有沒升級 “逐塊難度調整” 的競爭幣(不是已經荒廢沒人維護,就是技術水平不夠)通通掃射死,從而完成競爭幣的淘汰和升級。
“生存是最終的辯論方式”。沒有升級的競爭幣死掉了,所以它們是錯的,所以 “逐塊難度調整” 是對的。
04
從難度調整算法,反思比特幣的設計
通過比特幣14天難度調整算法的缺陷和改進,相信大家能理解文章開頭的這句話:
比特幣是一個由人開發的軟件系統,而不是由神創造的神器。這就意味著,比特幣并非盡善盡美,開發人員需要持續性地改進比特幣。
在所有不改進的競爭幣死掉后,比特幣也應該改進為逐塊調整,這樣會更健壯、更強大。雖然絕大部分SHA256算力還在挖BTC,不改看起來好像也可以,但這并不意味著沒有隱患,例如:
?BCH分叉后的 “算力閃擊”
在BCH剛分叉時,BCH的逐塊難度調整算法EDA存在缺陷,導致出現了SHA256算法史上第一次大規模跳礦:算力在BTC和BCH之間大規模轉移。每當大量算力因為挖BCH收益高而去挖BCH時,BTC的算力就大幅降低。
“算力下降30%”等于“出塊速度下降30%”,由于BTC被Core鎖死1M區塊大小,意味著區塊容量從 “10分鐘1M” 變成 “10分鐘0.7M”,這大大加劇了BTC的擁堵程度。直到BCH改用更穩定的DDA難度調整算法后,BTC受到的 “算力閃擊” 才告一段落。
?BCH翻盤時的 “算力死亡螺旋”
如果發生BCH價格短時間巨幅上漲,甚至接近BTC價格的情況,BTC算力會大量轉移到BCH上,導致BCH進入 “算力死亡螺旋”:算力減少→出塊變慢→擁堵加劇→市場進一步恐慌→價格進一步下跌→算力進一步減少,并加速BCH的翻盤。
BCH可能在短時間內,就借助BTC14天難度調整的缺陷,一步完成翻盤,BTC無人愿意虧損挖高難度塊,短時間內猝死,很多人甚至連幣都轉不到交易平臺,來不及逃命,直接陪葬。
?熊市礦工反復開關機的 “機槍池效應”
BTC最近的大跌,導致歷史上首次出現 “主力礦機不夠電費關機” 的情況。目前,大部分算力的礦機都是螞蟻S9和神馬A8。當幣價跌到2.6萬時,已擊穿螞蟻S9和神馬A8的電費成本。現在,已經有大量螞蟻S9和神馬A8停機,BTC的挖礦難度大幅下降。
而到了下一周期,由于挖礦難度大幅下降,挖礦收益提升,暫時停機的礦機又將開機,然后到下一周期再關機。如此大量的礦機反復開關機,形成了類似機槍池掃射的效果,將會導致BTC的難度波動越來越劇烈,出塊越來越不穩定。
05
外界環境必然變化,導致內部必須進化
比特幣14天難度調整算法的問題,引向一個更深入的問題:CSW的 “穩定論”,甚至 “鎖死比特幣0.1版” 對嗎?
難度調整算法是個很好的例子。一開始BTC的14天難度調整并不是缺陷,但當外界環境變化后(同算法競爭幣的興起,大跌導致的關機潮),這卻變成了缺陷。
外界環境永遠在變,在變化的環境中,指望內部不變,規則不改,躺贏成為世界貨幣,無異于癡人說夢。
在快速發展、新技術層出不窮的數字貨幣市場,只有那些主動適應市場變化,主動根據市場變化改進自己的幣,才能達到最高效率,獲得最快發展,并戰勝那些被動的、“盡量不改” 的幣,成為世界貨幣。
在這點上,我們也可以嘗試做到“貓論”“摸論”“不爭論”:
貓論:不管黑貓白貓,能捉老鼠的就是好貓。
摸論:摸著石頭過河。
不爭論:不搞爭論,大膽地試,大膽地闖。
06
總結
比特幣是一個由人開發的軟件系統,而不是由神創造的神器。0.1版的比特幣,是一個不管從代碼層面,還是從實現層面,都相當粗糙的版本。
14天的難度調整,是BTC的一個缺陷,甚至有可能導致BTC的猝死。BCH的DDA逐塊難度調整算法,修補了比特幣的缺陷,是更為優秀的進化。外界環境永遠在變,內部必須主動進化,才能達到最高效率,獲得最快發展。
你認同江卓爾對比特幣挖礦現狀的分析與論斷嗎?快來留言區分享交流吧。
——End——
『聲明:本文轉載自江卓爾的微博,為作者獨立觀點,不代表白話區塊鏈立場,亦不構成任何投資意見或建議。』