談?wù)劚忍貛欧植?/h2>

比特幣現(xiàn)金(BCC)暴漲之際,比特幣分叉這個術(shù)語也開始在越來越多的報道中出現(xiàn)。究竟數(shù)字加密貨幣為何要分叉?硬分叉和軟分叉到底有什么區(qū)別?這需要從軟件開發(fā)的特性講起。

圖片發(fā)自簡書App

先講一個歷史事件,在2010年的時候,有一個黑客利用比特幣的一個漏洞,刷出一筆包含了1844億個比特幣的交易。他利用的漏洞是比特幣只定義了輸出總金額不能大于輸入總金額,但是沒有限制面值不能為負(fù)。這樣黑客可以讓輸出中包含一個很大的負(fù)值比特幣,那其他剩下輸出的比特幣總額就能大大超過輸入總額。這個事情被開發(fā)人員在半天內(nèi)及時發(fā)現(xiàn)并發(fā)布了補(bǔ)丁,使得這筆交易的輸出變?yōu)闊o效。事后看這是個很低級的漏洞,但是如果沒有黑客利用,可能大家也不會注意到這個漏洞。越是常識性的東西越是不容易想到要去加上這條限制。

在中本聰提出比特幣這種去中心化的數(shù)字加密貨幣的實現(xiàn)思想之后,由一群程序員開發(fā)代碼,從軟件上實現(xiàn)了比特幣。任何大型的軟件都或多或少會有漏洞(bug),由于人的疏忽,流程上的缺失或者時間緊迫下的趕工,都可能導(dǎo)致漏洞。即使假設(shè)一個軟件消滅了所有漏洞,它也有自己的局限性。同一個軟件只有10個人用和有100萬個人用,體驗是很不一樣的,其考量因素也會不一樣,因而設(shè)計思路也是不一樣的。任何軟件設(shè)計都需要找到合適的平衡點(diǎn),在時間與空間之間取舍,在效率與安全之間取舍,因此并不存在完美的普適性的軟件。

比特幣在開發(fā)之時,那幾個程序員根本就想不到比特幣能夠得到現(xiàn)在這樣廣泛的關(guān)注和參與。當(dāng)時的代碼實現(xiàn)中有很多影響軟件吞吐量的限制被寫死,比如一個區(qū)塊的大小為1M,一筆交易大小至少要有250個字節(jié),按平均10分鐘挖出一個區(qū)塊來算,每秒鐘只能處理7個交易,而像visa這樣的信用卡組織高峰時每秒鐘可以處理上萬筆交易。在當(dāng)時所能預(yù)見的情形下,這些限制都是合理的。但是比特幣的發(fā)展超出了任何人的想象,尤其是頻繁的交易使得最初設(shè)計的比特幣軟件已經(jīng)難于應(yīng)付,出現(xiàn)了區(qū)塊擁堵的現(xiàn)象。

需要解決這個問題,就需要對軟件升級。比特幣依靠去中心化的節(jié)點(diǎn)達(dá)成共識來保證交易安全性,而對比特幣升級實質(zhì)是對達(dá)成共識的規(guī)則進(jìn)行修改,由于比特幣去中心化的特性,系統(tǒng)在同時存在新舊軟件的情況下,新舊節(jié)點(diǎn)就可能無法達(dá)成共識,這就會導(dǎo)致區(qū)塊鏈分叉。

分叉可分為硬分叉和軟分叉。所謂硬分叉,是指對軟件進(jìn)行修改之后,跑著舊軟件的節(jié)點(diǎn)不認(rèn)可新軟件的節(jié)點(diǎn)挖出來的區(qū)塊。也就是說新軟件下達(dá)成共識的規(guī)則超出了舊軟件限定的規(guī)則,例如增加一種新的加密方式,舊的節(jié)點(diǎn)就無法驗證,自然會拒絕新區(qū)塊。而軟分叉是指新軟件達(dá)成共識的規(guī)則依舊能遵循舊軟件的規(guī)則,也就是說新軟件只能把規(guī)則改得更嚴(yán)格,這樣它達(dá)成共識的規(guī)則就包含在舊規(guī)則之中,例如原來的規(guī)則有一條是要求交易輸出的比特幣之和不大于交易輸入的比特幣之和,現(xiàn)在修改規(guī)則之后可以規(guī)定,在滿足上述條件的情況下,還要求輸出結(jié)果中的比特幣按面值從小到大排列(先不管這個規(guī)則的合理性),那么按這個新規(guī)則挖出來的區(qū)塊肯定是滿足舊規(guī)則的要求,新的區(qū)塊能被所有舊節(jié)點(diǎn)承認(rèn),而舊節(jié)點(diǎn)挖出來的區(qū)塊就可能不滿足新規(guī)則,會被新節(jié)點(diǎn)拒絕。

軟分叉適合小修小補(bǔ),利用一些預(yù)留字段等方法,來達(dá)到不傷筋動骨的效果,比如比特幣的交易數(shù)據(jù)結(jié)構(gòu)里有些字段一開始是沒有用到的,后來想要增加一層驗證,就可以用這個字段去存儲需要驗證的數(shù)據(jù),但是這樣的字段是有限的,你用光了再想要增加新的驗證就沒辦法了。此外由于軟件漏洞,歷史上幾次軟分叉最后都引起了硬分叉,及時發(fā)布新補(bǔ)丁后才消除了硬分叉。

硬分叉導(dǎo)致的是永久性分叉,因為新節(jié)點(diǎn)挖出來的區(qū)塊不被舊節(jié)點(diǎn)承認(rèn),新舊節(jié)點(diǎn)會沿著兩條分叉的主鏈發(fā)展。軟分叉導(dǎo)致的是臨時性分叉,因為新節(jié)點(diǎn)挖出的區(qū)塊會被舊節(jié)點(diǎn)承認(rèn),但舊節(jié)點(diǎn)挖出的區(qū)塊可能不被新節(jié)點(diǎn)承認(rèn)。軟分叉的風(fēng)險是舊節(jié)點(diǎn)挖礦可能是徒勞無功的,因為它挖出來的礦不被新節(jié)點(diǎn)承認(rèn)。而新區(qū)塊被新老節(jié)點(diǎn)都承認(rèn),因此傳播速度會更快,最終最長的鏈連接的會是新節(jié)點(diǎn)挖出的區(qū)塊。

至于比特幣解決區(qū)塊擁堵的問題的具體方案,不同的利益方(主要是礦池和核心開發(fā)團(tuán)隊,另外還有交易所和用戶)提出了不同的方案,主要分為擴(kuò)容和隔離,在此不作展開。

所以比特幣的分叉本質(zhì)上是因為軟件升級需要對正確區(qū)塊的共識進(jìn)行修改,導(dǎo)致新舊節(jié)點(diǎn)對達(dá)成共識的規(guī)則不一致而引起的。因為軟件不可能是一蹴而就或者說是完美的,所以將來勢必還會需要升級,需要分叉。至于選擇硬分叉還是軟分叉,不同的利益集團(tuán)會有自己的想法,最終結(jié)果也難以預(yù)料。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是硬分叉,什么是軟分叉,什么是共識? 第0章 引言 比特幣是一套軟件,對軟件代碼進(jìn)行修改升級就經(jīng)常會涉及到兩個...
    凡的數(shù)據(jù)庫閱讀 819評論 0 4
  • 中醫(yī)外治方法內(nèi)容較多,我們診室開展項目達(dá)25種,平時治療根據(jù)病人病情的不同階段有選擇的加減,今天在杭州開會,大家都...
    中醫(yī)科青藤子閱讀 642評論 0 0
  • 2017-03-08 晴朗熱 工作晚上 排 【早上】10:15 蘋果香蕉 【午餐】12:30 飯?菜 【下午茶】1...
    carmenMP閱讀 274評論 0 0
  • 【本文內(nèi)容主要整理自Sawbones,一個戲說醫(yī)學(xué)史上各種不靠譜療法的播客。筆者整理的過程中也有參考一些資料添油加...
    WangWeiwei閱讀 4,213評論 7 7
  • 任何事情都做不到絕對的清楚明朗,那就至少留空氣清晰吧。 大雨 ,嘩啦啦的下下來。在風(fēng)的作用下,渺小的很難垂直落下...
    蔚藍(lán)海岸LEMON閱讀 302評論 0 0

友情鏈接更多精彩內(nèi)容