BITCOIN 2017 擴容爭議

2017年中開始,各大傳媒開始留意比特幣的消息。除了價格不斷破頂,另一個最多人討論的就是hard fork出Bitcoin Cash,以及Segwit2x。如不清楚hard fork的意思,可參考甚麼是硬分叉

注意:本文需要讀者對區塊鏈有一定認識

Bitcoin 區塊鏈上的區塊有size limit,每個區塊大小不可以超過1MB。以每個交易250 Bytes計算,一個區塊大概可以收納1024*1024/250,即約4000個交易。區塊的生產速度是每10分鐘一個,即每10分鐘可處理約4000條交易,每秒可處理4000/10/60=6.66667個交易。

粗略計算,Bitcoin每秒鐘可處理7條交易。

visa信用卡公司每秒鐘處理約65000條交易,是Bitcoin的9000倍。(source: https://usa.visa.com/dam/VCOM/global/about-visa/documents/visa-facts-figures-jan-2017.pdf)

八達通每天交易宗數超過1400萬,每秒鐘處理約160條交易,是Bitcoin的22倍。(source: http://www.octopus.com.hk/tc/document/company_profile.pdf)

以Bitcoin這種處理速度,要成為日常生活可用的貨幣可以說是完全沒可能。

那應該怎樣加大Bitcoin transaction volume limit呢?大方向離不開增加每個區塊可承載的交易數量,實際執行上有幾個方法,包括Segregation Witness (Segwit),與及直接增加區塊大小上限至2MB(2x)

香港人未必知道,bitcoin歷史上一次重大會議是在香港發生: 2016年2月21日,幾個Bitcoin Core developer以及礦工,交易所代表齊集於香港的數碼港,發表Bitcoin Roundtable Consensus,史稱香港共識。詳細內容可以參考: https://medium.com/@bitcoinroundtable/bitcoin-roundtable-consensus-266d475a61ff

重點是與會者同意Segwit是大方向,而且很有可能加入2x。

什麼是Segregation witness?

先解釋一下Segregation witness是甚麼: Witness是密碼學的術語,任何可以用來解開cryptographic puzzle的都叫做witness data。在Bitcoin來說witness data就是發起交易者的數碼簽署,數碼簽署是用來証明交易發起人有權動用該筆資金。要在數碼簽署上動手腳因為它是一條交易中佔最多空間的數據。Segregation 是指隔離,所以Segregation witness 翻譯成中文是"隔離見証"。那到底要怎麼隔離它呢?

本來區塊容量是以byte做單位,segwit後會以unit做單位,1 byte = 4 units,區塊容量上限會由1000 Bytes 變成 4000 Units。以上改動其實沒甚麼實質意義,只是改變了單位而已。重點是segwit數unit的時候會用上不同的weighting,比如說交易中的錢包地址是以1 byte = 4units的方式算重量,但是witness data卻以1 byte = 1 unit的換算比率,所以witness data佔weight unit的比例下降至原有的25%,每一條segwit 交易就節省了大概40%的weight units。

這裏有個很常見的誤區,很多人以為segregation witness就是降低了交易的大小,其實以bytes來算的話交易大小並沒有變,但是因為現在容量換了用weight unit計算,所以一個區塊可以容納的交易量是增多了。然後是另一個很難想通的點: segwit雖然沒直接增加block size limit,但用bytes來算的話segwit中的區塊的確是比以前大了。

但是,就算用了segwit,一個區塊可承載的交易最多只翻了一倍,從每秒7條交易升級到每秒14條交易,跟visa或八達通還是沒法比。Bitcoin Core developer當然也知道這一點,所以segwit只是擴容大計中的第一步,第二步是lightning network 閃電網絡。沒有segwit的話就做不到閃電網絡。

在有閃電網絡之前,你到星巴克用比特幣買咖啡的交易會傳播到世界上每一個礦工。在閃電網絡之後,你可以在星巴克開一張充值卡,只有買充值卡的交易會傳播開去,但你用充值卡在星巴克買咖啡則只有你和星巴克知道。能想象到能節省多少條交易嗎? 每天早上坐地鐵/捷運掃八達通/悠悠卡的交易全沒了,只剩下充值的交易。這才是bitcoin core developer最終想做到的事情。

(閃電網絡的技術細節更複雜,在沒有礦工檢查交易的情況下如何確保交易真確性? 這個要另文探討)

脫下bitcoin core developer的帽子,你猜礦工們會怎樣想?

當然是反對,交易量大幅下跌會導致交易費用下跌,而交易費用將會是礦工最重要的收入來源。現在礦工的收入來源仍然是挖礦獎勵,但獎勵每4年下降50%,過多幾個4年後交易費用就會佔礦工收入的大部份。所以礦工在香港共識中硬要加上一行2x的協議,礦工希望盡可能擴大區塊的容量以便他們賺取更多交易費用。

但是事情發展並沒如礦工所願,大部份bitcoin core developer一直只是努力實現segwit,2x的部份一直被core developer(除了Jeff Garzik)忽略。所以2017年5月礦工們聚集到紐約,簽定紐約協議(New York Agreement,NYA) 決定在segwit 實現後三個月(即2017年11月)推出2x。NYA的簽署人主要是當時佔世界上80% hash power的礦工,有80%礦工支持已經足夠強行上馬,而不用理會core developer的想法。

Jeff Garzik 原本是bitcoin core developer的一員,但他是少數支持2x的developer,所以整個2x都是由Jeff Garzik的團隊實現,至2017年8月Jeff被bitcoin core developer踢走。其實core developer也不是完全反對提升block size limit,只是不太同意要趕著上馬,加上Jeff實現的2x缺乏replay protection,更重要的是2x需要hardfork,所以網上很多人群起攻擊2x,導致2x最後一刻煞停了。

來到2018年擴容爭議其實仍未停止,增加block size limit的討論仍在進行中,類似2017年間發生的大辯論肯定會再發生。


延伸閱讀