區塊鏈技術落地言之尚早,性能、擴充性及共識演算法仍有大量改善空間 幣坊財經
區塊鏈技術落地言之尚早,性能、擴充性及共識演算法仍有大量改善空間
區塊鏈技術與實體經濟的結合,能為社會帶來一場產業與技術融合發展的革命,不過距離實際落地,區塊鏈應用仍有六大挑戰,只有逐一攻破這些挑戰,區塊鏈才能對人類生活帶來根本性的顛覆

原作者:五火球教主 來源:白話區塊鏈

很多人都說「2018年是區塊鏈商用化的元年」,但2018年都過去大半年了,真正落地的區塊鏈應用屈指可數。目前排名第一的DApp,其DAU(用戶日活躍量),最多也不過一千多人,連早期試用者都很少,更別說是大幅度改變人類生活。

如果票選21世紀以來「被炒作、吹捧最多的技術」,區塊鏈絕對榜上有名。區塊鏈是多個電腦科學技術綜合應用的產物,其運作邏輯與限制,對普通大眾來說,並不是那麼容易理解。這就導致很多所謂的媒體和專家學者,都錯誤地理解了區塊鏈的特性。如果你去聽這些人講區塊鏈,會錯認為區塊鏈是「靈丹妙藥」,似乎任何難題只要套上「去中心化」、「區塊鏈」就能解決。但實際上,區塊鏈並非萬能,距離大規模的應用還有很多挑戰,還有很長的路要走。

區塊鏈應用真正落地,進入尋常百姓生活,其實難度很大,難在何處呢?且看本文整理的區塊鏈應用落地的六大挑戰。

1. 性能與可擴充性
去中心化應用,即DApp,必須運行在支援智能合約的底層公鏈上。底層公鏈可以想像成是Android或iOS系統,如果系統有問題,運行在其上的App自然也會有問題。

目前,底層公鏈最大問題是性能和可擴充性不足。舉乙太坊為例,乙太坊的TPS(每秒能處理的訊息量)在15至30筆之間,而中心化的VISA,TPS是2000~4000筆,峰值可達到25000筆。這兩者根本不在同一個量級,這也是為什麼去年的加密貓跟今年的FOMO 3D,雖然用戶不多,卻足以讓乙太坊網路擁堵、癱瘓的原因。

區塊鏈與傳統的中心化系統,為什麼在性能方面有如此巨大的差異?主要原因在於,區塊鏈採用的是分散式帳本的技術,無論什麼DApp,其運算結果都必須同步到每一個節點上才算達成了共識。這就好比一群人做決定,必須經過討論才能達成共識,和一個人做決定的速度相比,前者一定會比後者慢。所有的區塊鏈系統,都無可避免地會遇到三個因素的平衡難題——性能、安全性、去中心化。這三者不可能完美兼顧,目前主流公鏈,如比特幣和乙太坊,都往安全性和去中心化靠攏,犧牲了性能。

但只要性能問題一天不解決,DApp就無法落地成為大規模應用。很多頂尖的電腦科學家,都在千方百計地優化區塊鏈的共識演算法,試圖解決性能低下的問題,於是就有了「千鏈大戰」。各種底層公鏈專案如雨後春筍般不斷冒出,很多專案聲稱其TPS可達數十萬甚至百萬以上,但或多或少都有所妥協,比如:EOS犧牲了去中心化特性(21個節點),而IOTA犧牲了安全性(沒有礦工機制,節點作惡代價低)。

2. 共識演算法的更新
眾所周知,所有的公鏈都是開源項目。一般人若想成為節點,必須下載其開源軟體,才能參與網路並共同維護帳本,每個人都執行一樣的軟體,才能讓節點間的帳本能夠同步。換句話說,如果今天有工程師改善了共識演算法,推出了新版本軟體,也必須讓其他節點都下載,才能使改版成功。

問題是,共識演算法的更新,往往會牽涉礦工、節點的利益。舉例來說,目前業界的普遍看法是,PoW雖然安全但沒有效率,新一代的區塊鏈往往採用PoS或是DPoS。於是,原本用PoW的區塊鏈,也想改成PoS或DPoS,但如果撤銷PoW機制,之前礦工花費鉅資購置的礦機可能就要報廢了。礦工當然不願意這麼做,這正是乙太坊目前所面臨的問題。在可能衝擊礦工利益的狀況下,乙太坊的開發者社群只能漸進地修改共識機制,不能躁進,不然礦工會因為不願意下載新版軟體,而導致分叉。

這就是區塊鏈「奇葩」的地方,由於它分散式系統的特性,即便開發者想更新軟體,也得網路上的節點都買單才行,這就加深了區塊鏈技術更新的難度。

3. 責任歸屬問題
由於區塊鏈去中心化的特性,出事後的責任歸屬變得相當困難。舉例來說,假設某銀行被駭客入侵,受害者可以找銀行賠償,但如果基於PoW的區塊鏈項目遭受51%算力攻擊,用戶必須自己承受所有的損失。對於已經習慣中心化系統的人來說,這樣的特性非常難以接受。

4. 不能保證區塊鏈內容的正確性
區塊鏈雖然可以在一定程度上確保帳本不可篡改,但卻不能保證寫入內容的正確性。舉個例子,一個使用了農藥的香蕉,仍然可以在追溯農產品的區塊鏈上,標記為有機產品。其實,光這點就可以打破很多人對區塊鏈應用不切實際的幻想。舉例而言,前陣子柯文哲表示,想用區塊鏈記錄選舉的募款金額,以避免媒體的不實報導。但事實上,就算將募款金額推上鏈,也不能保證該鏈上的資料皆正確,或是該團隊確實將每一筆募款都上鏈。

同樣的問題,也出現在智能合約的觸發條件上。假設有個世界盃競猜DApp,猜測今天德國足球隊是否會贏球,使用者用乙太幣下注。假設德國隊踢贏了,由於這個資訊獨立於區塊鏈之外,智能合約必須仰賴外部輸入「德國隊贏球」這個資訊才能觸發智能合約。

這時候便會面臨兩個問題:
1、誰來輸入「德國隊贏球」這個資訊
2、誰來確保「德國隊贏球」這個資訊是正確的。

你可能會說,智能合約可以接入世界盃官網的API,至少官網的資訊不會有誤。這時,第二層問題就來了:怎麼確保這個智能合約接入的API正確,或者,萬一合約程式碼存在後門,又該如何解決?

通常這類問題,會透過投票的方式解決。也就是說,只要過半數用戶認可「德國隊贏球」這個資訊,它就自動會成為觸發智能合約的條件。

然而,再深入問一個問題:德國隊贏球這個資訊大眾容易獲取,但智能合約的觸發條件普通大眾難以知道,如果只有少數人知道呢?
這樣就不能用投票的方式解決了,勢必要找公證人來當資訊的輸入者,這樣問題又回到了原點。如果要找公證人,乾脆利用法律合約解決更快速。

所以,智能合約的應用範圍是有限,只要智能合約的運作需要輸入外部資訊,合約本身怎麼設計就會變得比較複雜,智能合約並不能取代所有的傳統合約。

5. 智能合約的程式碼審核
DApp的智能合約程式碼寫在區塊鏈上,這意味著代碼是公開的,可供大眾審核,但一般人看不懂代碼。如果真的要確保代碼沒有問題,勢必得要找一個公正的協力廠商審核代碼的安全性。

不過,這又有違區塊鏈本身「去仲介化(trustless)」的訴求。當我們在使用區塊鏈系統的時候,都必須建立在對整條鏈的信任上。我們必須信任,比特幣和乙太坊的代碼沒有問題,才會去使用它。

像比特幣和乙太坊這種大型開源專案,自然會有很多工程師去審核代碼,相對比較安全。但對於各種智能合約的應用來說,就不是這麼一回事了。所以,現在出現了各種智能合約的審查機構。不過這麼一來,只不過是把信任轉嫁給這些審查公司而已。從這個角度來看,區塊鏈永遠不可能做到實質上的「去仲介化」。

再者,代碼審核這件事本身難度很大,即便現在沒有檢測出問題,也難保之後不會出事。以2016年著名的乙太坊 The DAO 攻擊事件為例。The DAO在當時是區塊鏈有史以來最大的眾籌項目,但因為被駭客發現其智能合約的漏洞,盜走了約370萬個乙太幣。由於受影響人數眾多,當時乙太坊創始人 V 神不得不跳出來主持大局,宣佈將發佈新版本軟體,把帳本復原至到尚未被攻擊的狀態。有少部分人認為,此舉違反了區塊鏈去中心化的精神,不願意更新版本,於是留在原地。這就是乙太坊首次硬分叉,經典乙太(ETC)由此而來。

像 The DAO 這麼火的專案,其用於募資而寫的智能合約,自然會經過嚴格審核,可惜即使經過頂尖電腦專家與社群的檢查,仍然被駭客發現了重大缺陷。智能合約的核心精神——程式碼即法律(Code is Law),雖然想法很好,但實際執行中,還要克服很多問題。

6. 用戶也許根本不在乎是否去中心化
區塊鏈的特點——去中心化、透明、不可篡改,這些都很好,但普通用戶真的在乎嗎?

 Duck Duck Go 是一款標榜不會追蹤隱私的搜尋引擎,Ello是無廣告版的臉書,兩者都很棒,但從用戶數而言,都不算成功的專案。為什麼?因為比起隱私或廣告干擾,用戶更在乎的是能否解決問題。搜尋引擎如果搜索不到最多、最精確的資料,社交媒體如果無法滿足跟朋友互動的需求,大家就不會有動力去使用。

假設底層公鏈的性能問題解決了,某公司開發了一個去中心化、開源版本的 Facebook ,姑且稱為 DFB 。 DFB 號稱可以解決個人資料被濫用的問題,且絕對不會追蹤隱私。但因為 DFB 建立在區塊鏈上,導致性能會稍微弱些。這意味著每點開一個對話視窗,或是每流覽一張照片,都會比中心化版本的 Facebook 多幾十毫秒甚至幾百毫秒上的延遲,用戶仍有採用的意願嗎?

並非所有的應用都適合用區塊鏈技術實現去中心化的版本。如果 DApp 不能比中心化 App 更能滿足用戶的核心需求,光在透明、去中心化、不可篡改這幾個特點上做文章,是沒有意義的。