Monday, October 23, 2017

Bitcoin (9) - 講多次,乜嘢係Bitcoin硬分叉(hard fork)?

最近一講bitcoin就必然提到「分叉」「分裂」。

講真,唔係做IT,都幾難明乜野係hard fork。
每一種科技/技術都會不停進步,blockchain都一樣,而每當一種加密貨幣背後嘅blockchain需要更新時就會發生soft fork或hard fork。唔係淨係bitcoin,其實ethereum都發生過,所以有ethereum classic出現。
soft fork即係個更新唔會影響一直以來嘅運作,用家乜都唔洗做,只要miner自行install返新version就可以繼續運行,而且就算有啲miner用緊舊vesion,有啲miner用緊新version,都照樣唔會出問題的。
而hard fork就好唔同,因為只要一upgrade version,就要同舊version講bye bye,即係話,如果有啲miner行緊新version,有啲miner行緊舊version,咁就會變左兩個完全獨立嘅blockchain network。亦即係話,會有兩隻cryptocurrency同時運作。所以外間睇落就好似分叉左新貨幣出嚟咁。
事實上,bitcoin hard fork並非只係多左一隻貨幣咁簡單。
前文提到,hard fork係有blockchain network嘅version upgrade。即係話bitcoin hard fork係有新野的。
如果一直有留意bitcoin的話,其實1/8已經hard fork過一次,當時就產生bitcoin cash出嚟。點解?就係因為好似之前咁講有啲miner行緊新version,有啲miner行緊舊version囉。咁邊個新邊個舊呢?

個問題唔係咁簡單。

bitcoin upgrade其實一直都諗住做,業界--包括miner、exchange、bitcoin fundation、bitcoin core成員等等--一直都有討論。原因係當時bitcoin設定係每10分鐘先會miner到一次,而每一次只能夠處理1MB data。大家都知道1MB其實好細,而如果長遠黎睇,其實跟本唔會夠用,講白啲,其實一直都唔夠。所以miner就會傾向處理大額transaction,因為data數量差唔多,但transaction fee就多好多(無錯,send bitcoin係要比transaction fee的)。如果bitcoin transaction太細,例如我send 0.001BTC比你,好多miner會選擇唔處理呢一個transaction,而結果就要等好耐好耐好耐先會有miner去處理(bitcoin有機制要miner優先處理等左好耐嘅transaction的,所以最後都會成功send到)。我試過send 0.001BTC,等左超過一星期先完成。

就係因為呢個原因,如果大家都希望越來越多人用bitcoin買賣,咁scalability就成為現今最大問題。所以upgrade係無可避免。

經過業界漫長嘅討論,最後得出嘅共識係:由1MB加到2MB,另外再喺bitcoin嘅blockchain network protocol上做優化,名叫segregated witness 2X,簡稱SegWit2X(個名咁叫係有原因的)。而呢個共識,業界稱之為New York Agreement。

而上面提到1/8嘅hard fork,bitcoin就係將個blockchain network跟據以上決定upgrade左。

咁bitcoin cash又係乜呢?

其實就係有班miner唔鐘意New York Agreement嘅決定而自行抄左bitcoin個blockchain network出嚟另起爐灶。呢個network嘅設定同bitcoin一樣,都係每10分鐘掘到一次,但每次可以處理嘅data就提升到8MB。而segregated witness就冇加到落bitcoin cash到的。

最重要係,其實呢班miner嘅數量同掘礦能力得好少,係bitcoin的10%以下。所以bitcoin cash第一次運行時,原本只要10分鐘就應該要掘到全新嘅bitcoin cash,但結果用左5個鐘。

咁有乜問題呢?

問題就係加密貨幣本身就係靠成班miner嘅龐大計算能力去防止有人盜用、改寫、破壞成個network嘅運作。而bitcoin cash咁細嘅hash rate就令人擔心其安全性。所以bitcoin cash一直都追唔返bitcoin嘅價錢就係咁解。

No comments: