比特幣硬分叉恐慌事件究竟是怎麼回事?

摘要: 比特幣硬分叉恐慌事件究竟是怎麼回事? | 比特幣秘史(十八) 比特币硬分叉恐慌事件究竟是怎么回事?

作者| 哈希派-LucyCheng

作為受全網認可的最長鏈,比特幣共識版本的升級一直以來都是通過軟分叉來完成,除了其中發生意外的兩次(2013年和2015年,分別持續了24個以及6個區塊)。而哈希派今天要講的是引起社區短時恐慌的版本0.8.0。

比特币硬分叉恐慌事件究竟是怎么回事?

原圖源自:icokanban

格林尼治時間2013年3月11日晚間23:30,網友“thermoman”在bitcoin-dev IRC頻道上表示,有人在自己的主機裡面發現第225431區塊已經挖出,但目前包括blockexploere在內的大部分區塊數據網站顯示的最新區塊高度依舊是225430。

接下來的三十分鐘內,更多的用戶在自己的比特幣客戶端日誌中發現了奇奇怪怪的報告;各方關於區塊高度數據不同步的討論在IRC頻道內瘋傳。“我這裡已經快挖出第225439個區塊了,但現在其他消息源還停留在225431的區塊高度。我想知道是不是有什麼東西觸發了它,一個大重組之類的”,比特幣開發商Peter Wuille如是說道。

比特币硬分叉恐慌事件究竟是怎么回事?

網友amesterdamer於2014年7月20日在Bitcointalk論壇上的留言

而事情正如Peter Wuille所推測,20天前發佈的Bitcoinqt 0.8.0與早期版本存在不兼容,導致了這次事故的出現。據悉,該版本為了減少區塊鏈的同步時間,將其數據庫從Berkely DB切換至更高效的Level DB上。但是開發人員沒有意識到的是,這一操作意外地改變了比特幣協議的規則。

具體來說,對數據庫進行更新的進程中必須對存儲特定信息項的數據庫部分進行“鎖定”,以防止同時發生兩個更改而破壞數據庫的機制。其中Berkeley DB用於存儲對象的數據結構每次更新都需要兩個鎖,並要求用戶設置鎖定的數量限制,而對比特幣而言這一數值是一萬。問題就出在這裡,因為Level DB沒有這方面的限制,所以當第225430區塊上出現了多於5000個交易事務的時候,新版的客戶端接受了它,但舊版本卻不能。兩者的不兼容,使得當時比特幣分裂成兩條不同的鏈。

比特币硬分叉恐慌事件究竟是怎么回事?

比特幣共識規則變化情況(資料來源:BitMEX研究,Github)

突如其來的硬分叉引發了市場恐慌,比特幣價格短時下跌24%,OKPay上面甚至出現了價值一萬美元的雙花交易。不過這種局勢持續了六個小時左右就被社區的團結所扭轉。當時意識到情況不妙,幾乎所有主要的比特幣開發商和礦池運營商就立即加入比特幣開發IRC頻道進行商討;後者中支持0.8.0客戶端的主動停止挖礦,前者大多數大型公司也隨即關閉存款業務。在所有相關人員的積極配合下,大約在12日早間06:19支持0.7.0版本的區塊鏈終於追了上來,兩條鏈在區塊高度225454匯合。至此產生大區塊的新鏈宣佈作廢,採用新版客戶端的礦工皆退回0.7.0版本繼續挖礦。

對於這場僅僅損失了24個區塊比特幣獎勵以及價值10000美元雙花交易的比特幣危機,外界給予了不少正面評價,同時對社區內所有成員的無條件合作和解決問題的迅速程度表示讚許。但另一方面也有部分人覺得,這波操作從某種意義上來說是對比特幣去中心化理念的褻瀆,並將其稱作一次51%攻擊的預演。

往期回顧:(十七

)比特幣的早期宣傳由誰來推動?

下期預告:(十九)誰是算力曾逼近51%的超大型比特幣礦池?

比特幣你不知道的故事系列合集,將持續更新,敬請期待......

(1、 內容來自鏈得得內容開放平臺“得得號”,稿件內容僅代表作者觀點,不代表鏈得得官方立場。2、 凡“得得號”文章,原創性和內容的真實性由投稿人保證,如果稿件因抄襲、作假等行為導致的法律後果,由投稿人本人負責。3、 得得號平臺發佈文章,如有侵權、違規及其他不當言論內容,請廣大讀者監督,一經證實,平臺會立即下線。如遇文章內容問題,請發送至郵箱:[email protected]


分享到:


相關文章: