昨天學到BIP141、SegWit2x 和UVSF的時候我就在想,這丫太難了,壓根就看不到,要不就一筆帶過吧。后來想想,也不能這樣啊,作為一個鐵錚錚的區(qū)塊鏈學習者,怎么能見熊就跑呢,咱好歹要了解了解對吧,所以我就從硅谷區(qū)塊鏈公眾號上引用了這篇文章,足以解釋BIP和SegWit的前世今生了,至于UVSF,咳咳,我再找找看。
如有侵權(quán),請隨時聯(lián)系刪帖。
一、故事回顧
背景:中本聰留下的BUG
大家知道,比特幣的每一個區(qū)塊的容量大小只有1M,隨著用戶數(shù)和交易量的迅速增長,區(qū)塊容量限制越來越成為影響比特幣區(qū)塊鏈運轉(zhuǎn)的瓶頸。用戶的交易需要越來越長的時間來等待礦工打包確認。
這就猶如北京和上海之間有趟比特幣班車,每10分鐘一班,要是上車的人越來越多,就需要加把小車廂換成大車廂,把100座變成200座的。不然沒上車的人就會堵在車站,直接把系統(tǒng)搞癱瘓了。
實際上,2009年比特幣初次誕生時,中本聰把每個區(qū)塊的容量大小設(shè)置為32M。這個容量其實足夠大,拿到今天都綽綽有余。
但那時比特幣面臨黑客的“粉塵攻擊”。所謂 “粉塵攻擊”,就是有黑客提交大量的小額交易,阻礙了正常交易的確認。這就猶如有人去銀行搞破壞,派 1000 個人堵到窗口存1塊錢,銀行容納不了就癱瘓了。
為抵御粉塵攻擊,2010年,中本聰把區(qū)塊容量的上限降低為1M,并說這個上限在未來某個時候可以再調(diào)整。
序幕:派系的產(chǎn)生與容量告急
不久后,中本聰隱退江湖,把區(qū)塊鏈系統(tǒng)的代碼維護工作交給了他的一批追隨者,這些人被稱為 core 開發(fā)組,為首者是被稱為中本聰繼承人的加文·安德森(Gavin Andresen)。
但core團隊并不是BTC唯一的主宰者。比特幣的交易需要礦工挖礦來記賬,隨著挖礦成本的迅速升高,普通個人計算機挖礦成功的概率逐漸趨近于0,只有采用大批的專業(yè)礦機集體挖礦才能成功,也就是礦池。中國西南及內(nèi)蒙因大量水電、風電過剩而導致電價極低,為礦池挖礦提供了良好條件。在2017年中國政府打擊之前,中國的數(shù)個大礦池一度集中了全球近90%的算力。后來的擴容大戰(zhàn)就在core團隊和礦工群體之間展開。
中本聰所言擴充區(qū)塊容量的這一天很快就到來了。下圖可見,從 2014 年第四季度開始,比特幣的區(qū)塊包開始快速增大,按照當時的增長速度,交易區(qū)塊大約會在 2016 年底觸及 1M 的紅線??紤]擴容方案達成共識需要多方復雜的談判,所以時間其實非常緊迫。2015 年 5 月, Gavin Andresen 提出在 2016 年 3 月擴容到 20M,開啟了擴容方案大戰(zhàn)的序幕。
亂戰(zhàn)開始
2015年6月,中國五大礦池(Antpool,F(xiàn)2Pool,BTCChina,BW,Huobi)聯(lián)合發(fā)表聲明反對擴容到 20M,支持擴容到 8M。這一方案也遭到了社區(qū)大部分礦工的反對。隨后,一些 core 開發(fā)組的早期成員也陸續(xù)提出了系列擴容建議,這些建議是比特幣改進協(xié)議(BIP,bitcoin improvement proposals)的主要組成部分?!?br>
2015年12月,core團隊的 Eric Lombrozo、Johnson Lau 和Pieter Wuille (BlockStream的聯(lián)合創(chuàng)始人)建議,移除比特幣交易過程中的簽名字段,將交易和簽名分離開,這樣就可以在不擴大區(qū)塊大小的情況下實現(xiàn)變相擴容,也稱為技術(shù)性擴容方案SegWit(Segregated Witness),核心協(xié)議是BIP141。
2016年1月12日,一個名為 Jonathan Toomim 比特幣開發(fā)人員提出,要延續(xù)中本聰?shù)乃枷?,基?BIP109 協(xié)議,在中本聰?shù)拇a庫基礎(chǔ)上將區(qū)塊大小擴大到 2MB,并分叉出 Bitcoin Classic。這項提議的支持者包括core開發(fā)組成員Gavin Andresen,Jeff Garzik以及前比特幣基金董事 Olivier Janssens等人。該方案需要獲得 75%以上算力支持才能夠被激活,激活之后 28 天才會發(fā)生硬分叉。
2016年1月23日,邁阿密比特幣圓桌會議在在 Hyatt Regency 酒店舉行,參會方主要包括 Bitcoin Classic、Bitcoin Core 及中國礦工。這是一次倉促的會議,沒有達成任何協(xié)議。但中國礦工們倒是在邁阿密會議基礎(chǔ)上迅速組織了一次擴容問題的協(xié)調(diào)會,會后達成了“九二共識”(滑稽)?!岸敝钢С直忍貛艛U容至 2 MB,“九”指反對低于90%算力共識的分叉協(xié)議。這個“九”是針對Bitcoin Classic來說的,意思說支持擴容,但75%的支持率太低了,會引起社區(qū)分裂,需要90%的支持率才行。
Bitcoin Classic沒有理會,于2016年2月初正式發(fā)布。礦工們嘴上說反對,但考慮到bitcoin是一個多方博弈的結(jié)果,誰也不敢保證未來會是怎樣,所以當時一半多的算力對這項擴容協(xié)議表達了“身體上的誠實”。同理,很多交易所也予以了支持。
但這是一個沒有得到廣泛認同的匆忙協(xié)議,只持續(xù)了一年多時間,Bitcoin Classic就被社區(qū)拋棄。2017年11月,Bitcoin Classic開發(fā)團隊宣布放棄這個項目,不再更新代碼?;凇皫湃σ惶欤碎g一年”的時空理論,一年多時間也算是夠長了,Bitcoin Classic被拋棄是也是在算是在經(jīng)歷達爾文的自然選擇,它并不是最后一個。
團結(jié)的假象:香港和談
在邁阿密,礦工和core開發(fā)組為了維護比特幣及社區(qū)的統(tǒng)一站在了同一個戰(zhàn)壕里,因為那時候他們有一個共同的敵人Bitcoin Classic。隨著Bitcoin Classic義無反顧地分家出去,就剩下礦工和core開發(fā)組來決定Bitcoin究竟該如何擴容。2016 年 2 月20日,Core 開發(fā)組代表和礦工雙方在香港數(shù)碼港再次開會討論擴容的方案。
會議一直從20日開到21日凌晨三點半,雙方達成協(xié)議,史稱《比特幣圓桌會議達成關(guān)于擴容的共識》。協(xié)議最大的成果是:core同意將硬分叉到2M納入core的框架之中,作為交換,中國礦工也同意只運行core開發(fā)的比特幣程序,堅決和Bitcoin Classic劃清界線。
當時的人們認為這是一次團結(jié)的大會、勝利的大會,沒想到這差不多是1945國共重慶談判的翻版:Core 的香港和談代表回去之后,開發(fā)組的其他成員對協(xié)議不滿,最后拒絕執(zhí)行香港共識。
社區(qū)一片嘩然,分裂再也不可避免。
社區(qū)分裂
2016年10月,占全網(wǎng)算力10%的ViaBTC率先部署B(yǎng)itcoin Unlimited(BU),BU也有一個開發(fā)團隊,并和core團隊抗衡。11月,Bitcoin.com,BTC.top,CANOE三家礦池部署B(yǎng)itcoin Unlimited,公開與core開發(fā)組翻臉。與此同時,core開發(fā)組發(fā)布Segwit代碼,并在11月19日開始投票。但此時的雙方都沒有獲得社區(qū)的絕對支持。
由于 BIP141一直被礦工陣營反對,為了推進隔離見證的升級,2017 年 3 月,由自稱 Shaolinfry 的匿名社區(qū)成員提出建議,是否進行升級更改比特幣網(wǎng)絡(luò)的決策權(quán)由礦工決定轉(zhuǎn)向由用戶、交易所、支付處理商等來決定。該協(xié)議將原本由算力決定的鎖定信號交給由全網(wǎng)節(jié)點來決定。約定激活日期為8月1日,在這一天之后,激活和沒激活的節(jié)點將分道揚鑣。該方案被認為是擴容問題中最激進和最具爭議的一個,但卻受到 core 團隊支持的方案。同月,這個月 AntPool 開始支持 Bitcoin Unlimited。
3月31日,Rootstock 智能合約安全專家 Sergio Demian lerner 通過推特提出了“Segwit2MB”的折中解決方案,主張合并激活 Segwit 軟分叉和2MB 硬分叉。這個和稀泥的方案收到很多口水,因為兼容的方案更復雜,需要更長的時間審核代碼的安全性。
礦工們的單方協(xié)議:Segwit2x
經(jīng)過了香港共識事件,中國礦工對Core失去了信任,但擴容還是需要解決的問題。于是,2017年5月,大家在紐約重新召開了一個擴容大會,這次他們決定:不帶Core玩了。參會方包括 Barry Silbert 旗下的數(shù)字貨幣集團(DCG)和包括大型礦池運營商比特大陸(Bitmian)等57家企業(yè)。據(jù)說core團隊的人試圖闖進會場,但被安保攔在了外面。參會企業(yè)簽署了紐約共識,獲得了全網(wǎng)80%以上的算力支持。
紐約共識的成果就是Segwit2x方案,也就是前文提到的Segwit2MB的翻版,后來被blockstream的支持者James Hilliard打包成BIP91協(xié)議。這是一個BIP141(core支持,礦工反對)和BIP148(礦工支持,core反對)的合并捆綁方案。BIP91協(xié)議要求在8月1日之前激活隔離見證,以兼容方案BIP148,然后在3月內(nèi)實現(xiàn)區(qū)塊擴容至2M的硬分叉。
2017年6月份,在Jeff Garzik支持下成立了Segwit2x開發(fā)小組,并發(fā)布了alpha版(然后Jeff Garzik就被踢出core團隊了)。同時,AntPool發(fā)布了UAHF方案,目的是為了消除core開發(fā)組暗中支持的BIP148分裂比特幣的行為。中國礦工也在萊特幣基金會秘書長PZ的號召下再次開會,并重申對紐約共識的支持,督促盡快激活Segwit2x。7月21日,Segwit2x方案被正式激活。
Segwit2x漏氣了
Segwit2x作為一個兼顧了雙方利益的妥協(xié)方案,在達成之后受到了萬眾期待。然而,促使集體分裂的或者說維護集體統(tǒng)一的根本并不在于技術(shù),而在于人心。Segwit2x算是礦工做主,滿足了core的利益和訴求的協(xié)議。但這個協(xié)議畢竟是core團隊不在場的單方協(xié)議。core團隊是根本反對區(qū)塊擴容的方案,堅持1M的原教旨主義,他們完全可能再提出另外一套協(xié)議,不承認擴容至2M的硬分叉。何況2M的區(qū)塊容量早晚也有用完的那一天,再過幾年還得再擴容,再談判,再扯皮……
當然,故事并沒有按著這個套路發(fā)展。按照Segwit2x方案,比特幣將在2017年11月17日晚達到494784區(qū)塊高度時啟動硬分叉,產(chǎn)生比特幣分叉幣B2X。但是大量2X節(jié)點停留在494782高度,第494783個區(qū)塊遲遲挖不出來。18日凌晨一點多,OKEx發(fā)布聲明稱Segwit2x硬分叉失敗。事后檢查發(fā)現(xiàn),失敗的原因是2X代碼庫有幾個低級BUG。誰也沒有料到這么一個萬眾期待、多方妥協(xié)的方案會以難產(chǎn)的方式死亡,這給core團隊送去了一個大笑柄。那句話怎么說來著,有時候努力了很久,到頭來發(fā)現(xiàn)只是一個...
新式割韭菜法
雖然Segwit2x失敗了,但社區(qū)并沒有都全部回歸到core的方案,而是放出了“分叉”這個魔鬼。當然,分叉的始作俑者是以太坊,但比特幣因其龍頭老大的地位極大地擴大了分叉的影響,或者說開啟了新式割韭菜浪潮。一些團隊把原裝比特幣的代碼改一改,就可以分叉出一條新的區(qū)塊鏈和新的虛擬幣。
前文提到的Bitcoin Unlimited(BU)團隊跳出BIP141和BIP148方案,直接不要Segwit,直接把區(qū)塊容量提升到8M,硬分叉出BCU,再改名Bitcoin Cash,縮寫B(tài)CC。后來因為BCC被另外一個山寨幣蹭了熱度,又改名BCH。再后來又產(chǎn)生了“比特幣鉆石/BCD”、“比特幣黃金/BitcoinGold”等一系列山寨幣。
二、兩派究竟在爭什么
先來看礦工的方案:礦工的方案就是簡單明了,箱子小了就換大箱子。1M的區(qū)塊不夠大,那么就2M,還不夠就4M、8M、16M。而Core認為這是頭痛醫(yī)頭腳痛醫(yī)腳的臨時性辦法,每一次升級都要社區(qū)的大部分成員同意,每一次升級都有可能帶來新的分叉。同時,區(qū)塊的增大將導致比特幣賬本迅速增大,個人電腦將無法保存,只有那些大礦池才能保存,這就違背了比特幣去中心化的初衷。
Core 的解決方案是隔離見證 Segregated Witness,英語字面上理解可翻譯為“隔離式的見證”,但其實翻譯為“把見證隔離了”更容易懂一點。大家知道,比特幣是一個可追溯的全網(wǎng)絡(luò)公開的賬本,這也就是說賬本除了顯示每個人有多少錢之外,還需要顯示這些錢是從誰那里來的,記錄這些交易的數(shù)據(jù)就是“見證”信息?! ?br>
用銀行匯款做做類比,假如A向B匯款100元,A需要填寫B(tài)的銀行賬戶和匯款金額,然后再簽字授權(quán)。簽字授權(quán)是給銀行看的,對B作為收款人而言其實毫無用處。在比特幣體系中,是通過私鑰授權(quán),即見證信息,這也是給礦工記賬看的,收款方也毫不關(guān)心。見證信息在交易信息中占用了不少的字節(jié),如果把這部分信息從賬本中移除的話,1M的區(qū)塊就能容納更多的交易。
理想條件下,SegWit方案能帶來4M的擴容效果,但當時業(yè)內(nèi)普遍估計實際只可達到1.7M左右的擴容效果。這當然也沒有根本解決問題,但core開發(fā)組也只是想把SegWit作為一個應(yīng)急方案,是為終極方案“閃電網(wǎng)絡(luò)”(Lightning Network)鋪路的。
閃電網(wǎng)絡(luò)簡單的理解就是,在區(qū)塊鏈這條主鏈上開一條側(cè)鏈,用來承載那些數(shù)量大、額度小的交易,這些交易是不需要礦工記賬的,主鏈上只記錄那些額度較大、數(shù)量較少的交易。
這就好比京滬高速公路是一條大干道,隨著車多起來路開始變得擁堵。一種解決方式就是把道路加寬,還有一種解決方式是修一些支路,因為并不是所有人都需要從北京去上海,有的可能只需要從徐州去濟南。閃電網(wǎng)絡(luò)的意思是,這些在濟南和徐州之間的交通就另開一條支路就行了,主路留給跑長途的。
礦工也堅決反對閃電網(wǎng)絡(luò),因為隔離見證和閃電網(wǎng)絡(luò)是對原有比特幣系統(tǒng)的巨大改動,萬一工程失敗路毀了,大家都沒辦法好好開車了。其次,閃電網(wǎng)絡(luò)也有中心化的趨勢,同樣違背去中心化的初衷。
內(nèi)在的利益分歧
兩派的相互 diss 可以說是發(fā)展理念的不同,但也涉及到深刻的利益分歧,其中礦工利益的損益在兩個方案中體現(xiàn)得相對明顯。
礦工主動記賬是由于有兩部分的激勵,一是挖出新區(qū)塊時系統(tǒng)提供的獎勵,二是用戶向礦工提交的手續(xù)費。由于比特幣總量就2100萬個,挖完就再沒有新的了,而且新生比特幣的數(shù)量是越來越少,記賬激勵越來越靠收取手續(xù)費。閃電網(wǎng)絡(luò)方案讓那些小額交易不計入主鏈的區(qū)塊,礦工就直接少了一大筆財源。
Core開發(fā)組的利益就相對隱晦,其成員相當部分都加入了Block Stream公司。有陰謀論認為,Block Stream死守1MB不放,坐等手續(xù)費越來越高,區(qū)塊確認時間越來越長,逼迫交易頻繁的企業(yè)用戶去使用Stream公司開發(fā)的側(cè)鏈技術(shù)和服務(wù)。這是一個講得通的推測,但并沒有實據(jù),何況比特幣的價格波動一直很大,企業(yè)很難大規(guī)模采用這種不穩(wěn)定的交易媒介作為貨幣。但另一方面,Core團隊一直死咬著1M不松口也缺乏足夠合理的解釋。
三、Core 會贏得勝利?
SegWit方案自提出一直備受爭議,然而在2017年8月8日突然峰回路轉(zhuǎn),100%的礦池都表示支持這一升級提案。2017年8月9日凌晨,SegWit在被正式激活。開始階段,SegWit還不夠普及,導致其擴容效果不明顯,區(qū)塊大小一直維持在1.05M水平。但是,共識在時間的作用下不斷強化,2018年1月22日開始出現(xiàn)了大量的2M左右的區(qū)塊,比預期的1.7M擴容效果要好。隨著隔離見證的得到越來越多的普及,比特幣交易的手續(xù)費明顯下降,網(wǎng)絡(luò)擁堵也得到緩解。2018年2月20日,世界兩大交易所Coinbase以及Bitfinex 均發(fā)表了將采用隔離見證方案的聲明。
這似乎顯示core在贏得勝利?
并不。
2018年2月25日,Core開發(fā)組成員Cobra通過推特發(fā)表了一封公開信。在這封信中,Cobra認為在POW機制下,比特幣區(qū)塊鏈網(wǎng)絡(luò)的算力中心化的趨勢越來越明顯,越來越集中到吳忌寒的比特大陸等極少數(shù)大礦池手里。然后順便黑了一下中國政府,說中國缺乏和諧,萬一把吳忌寒的礦池給取締了,就會給比特幣帶來重大災難。而這一切風險都是POW機制產(chǎn)生的,為了擺脫以吳忌寒為首的礦工對比特幣的破壞,他提議對比特幣的算法進行修改,將共識機制改為POW+POS的雙層模式。
吳忌寒馬上回懟,質(zhì)問Cobra是要改白皮書還是改POW(Which is your priority,rewrite the whitepaper or change POW)?要是真被你Cobra改了POW,比特幣的市場份額會跌到10%以下。人家以太坊社區(qū)在搞ERC20改進協(xié)議,還有很多區(qū)塊鏈項目在創(chuàng)新,你們這樣亂搞比特幣藥丸啊。
這話感覺像是兩個皇子在爭奪大位,一個質(zhì)問另一個:你敢篡改中本先皇遺詔?!然后根本不聽對方解釋接著說,敵國正在磨刀霍霍,你們這樣亂搞,大清藥丸??!……
撇開core和礦工的嘴上是非不論,如果core真地要修改POW機制,比特幣社區(qū)將會面臨更大的分裂,因為這就猶如房子要換地基。隨后不久,core又收到一個壞消息。2018年2月28日,閃電網(wǎng)絡(luò)在測試網(wǎng)絡(luò)上運行時出現(xiàn)大量記憶體區(qū)段錯誤的新聞。Core 開發(fā)組成員 Peter Todd 稱:網(wǎng)絡(luò)未崩潰時,交易失敗率比崩潰時還高,很容易受到 DoS 攻擊。
可以確定的是閃電網(wǎng)絡(luò)遠未成熟,而比特幣的區(qū)塊包還是將繼續(xù)增長,如果它不能在隔離見證擴容效果耗盡之前完成部署,擴容大戰(zhàn)將再次上演。
2018-03-24