很多人都說 2018 年會是區塊鏈商用化的元年,但 2018 年都過大半年了,區塊鏈距離改變我們的生活還非常遠,除了 ICO 可作為募資跟投資的手段之外,區塊鏈的應用可說是寥寥可數,目前排行最熱門的 DAPP,其 DAU 最多也不過數千人,連 early adopter 都還很少,更別提什麼改變人類生活了。

去中心化應用的 DAU 非常低

如果要票選 21 世紀以來最被炒作、吹捧的技術,區塊鏈絕對會榜上有名,由於區塊鏈是多個電腦科學技術綜合應用的產物,其運作邏輯與限制,對普羅大眾來說並不是這麼好理解,這導致很多所謂的媒體、專家、政治人物,都錯誤理解了區塊鏈的特性,你聽這些人講區塊鏈,會錯認區塊鏈是萬靈丹,似乎任何難題只要套上「去中心化」、「區塊鏈」就能解決。

本文將嘗試用較淺白的語言,讓大家瞭解區塊鏈應用落地的六大挑戰。

挑戰一:效能與可擴展性

區塊鏈的應用,也就是 DAPP,必須運行在「支援智能合約的底層鏈」上,我們可以把底層鏈想像成是如 Android 或 iOS 的作業系統,如果作業系統有問題,運行在其上應用程式當然也會有問題,目前底層鏈的最大問題,就是效能跟可擴展性不足,拿以太坊為例,以太坊的 TPS (transaction per second —— 每秒能處理信息交換量)約落在 15~30 的水準,做個對比,VISA 的 TPS 平均是 2,000~4,000,其峰值可達到 25,000 ,兩者根本不在同一個水平,這也是為什麼去年加密貓跟今年的 FOMO 3D 雖然用戶不多,但卻足以癱瘓以太坊,讓網路交易塞車的原因。

區塊鏈的 TPS 遠低於 VISA

為什麼區塊鏈會跟傳統中心化系統(如 VISA)的效能有如此巨大差異?主要原因在於區塊鏈是分散式帳本的技術,不管是什麼 DAPP,其運算結果都必須同步在每個節點上才能算達成共識。這就好比一群人做決定,必須經過討論才能達成共識,但一個人做決定只要過自己這關就好了,前者一定會比後者慢。

所有區塊鏈系統都無可避免的會遇到三個因素的平衡難題 —— 效能、安全性、去中心化,這三者不可能完美兼顧,目前主流公鏈如比特幣跟以太坊,都是往「安全性」與「去中心化」靠攏,而犧牲了效能。

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

挑戰二:更新不易

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

但問題是,共識演算法的更新,往往會牽涉礦工節點的利益。舉例來說,目前業界的普遍看法都是 PoW 雖然安全但太沒有效率,新一代的區塊鏈往往採用 PoS 或是 DPoS,於是乎原本用 PoW 的區塊鏈,也想改成 PoS 或 DPoS ,但如果撤銷 PoW 機制,原本礦工花大把鈔票購置的的礦機就瞬間變成廢鐵了!礦工當然不願意這麼做,這正是以太坊目前所面臨的問題,在可能衝擊礦工利益的狀況下,以太坊的工程師社群只能漸進修改共識機制,不能躁進,不然礦工會不願意下載新版本的軟體而導致帳本分岔。

這就是區塊鏈奇耙的地方,因為它是分散式的系統,即便工程師想更新軟體,也得網路的節點都買單才行,這加深了區塊鏈技術更新的難度。

挑戰三:責任歸屬問題

區塊鏈去中心化的特性,使出事後的責任歸屬變得相當困難。舉例來說,假設某銀行被駭客入侵,受害者可以找銀行求償,但如果區塊鏈被 51% 攻擊,用戶必須自己承受所有的損失,對於已經習慣中心化系統的人來說,這樣的「特性」是很難接受的。

挑戰四:不能保證上鏈資訊的正確性

區塊鏈雖然可以在一定程度上確保帳本不可被竄改,但是卻不能保障資訊寫入區塊鏈前的正確性,舉例來說,一個灑農藥的蕉農,仍然可以在農產品履歷追溯的區塊鏈寫上自己的香蕉是「有機」的。

其實光這點就可以打破很多人對區塊鏈的應用的想像,舉例來說前陣子柯文哲曾表示想要用區塊鏈紀錄選舉募款金額,以避免名嘴追殺,但事實上,就算真的把募款金額上鏈,我們也不能保證上鏈的募款金額是正確的,或是真的把每一筆募款都上鏈了,在無法確保這兩件事的前提下,用區塊鏈紀錄募款金額只不過是脫褲子放屁罷了。

同樣的問題,也出現在智能合約的觸發條件上,舉個例子,假設有個 DAPP 是世界杯博弈的應用,今天有個賭局是賭德國足球隊是否會贏球,用戶用以太幣跟莊家對賭,假設德國隊真的踢贏了,由於這個訊息獨立於區塊鏈之外,智能合約必須仰賴外部輸入「德國隊贏球」這個訊息才會觸發打幣的條件,這時候會面臨兩個問題:

一、誰來輸入「德國隊贏球」這個訊息

二、誰來確保「德國隊贏球」這個訊息是正確的

你可能會說,智能合約可以接世界杯官網的 API 啊~官網的資訊總不會錯吧!這時第二層問題就來了,你怎麼能確保這個智能合約接的 API 是正確的呢?如果合約代碼有後門怎麼辦?

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

那我們再更深入地問一個問題,德國隊贏球是大眾可認知的訊息,但如果智能合約的觸發條件無法被大眾認知,只有少數人能夠知道呢?這樣就不能用投票的方式解決了,勢必要找公證人來當訊息的輸入者,但問題又回到原點,如果要找公證人,那我還做智能合約幹嘛,乾脆寫法律合約就好了…

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

挑戰五:需要審核智能合約的代碼

DAPP 的智能合約代碼會寫在區塊鏈上,這意味著代碼是公開的,可供大眾檢視,但一般民眾看不懂代碼,如果真的要確保代碼沒有問題,勢必得要找一個公正的第三方審核代碼的安全性…

等等,區塊鏈本身不是就是要「去信任」(trustless)嗎?怎麼這時候又要找第三方了?

先別說 DAPP,退一萬步來說,事實上當我們在使用區塊鏈系統的時候,本身都必須建立在對整條鏈的信任上,我們必須信任比特幣跟以太坊的代碼沒有問題才會去使用它,像比特幣或以太坊這種大型開源項目,自然會有很多工程師去審核代碼,算是比較安全的,但對於各種智能合約的應用來說,就不是這麼一回事了,所以現在才會出現各種智能合約的審查公司(smart contract auditor),不過這麼一來就只是把信任轉嫁給這些審查公司而已,從這個角度來看,區塊鏈永遠不可能做到實質含意上的「去信任」。

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

像 The DAO 這麼火紅的項目,其募資的智能合約自然會經過嚴格的審核,可惜即使經過頂尖程式專家與社群的檢視,仍然被駭客發現重大缺陷。智能合約的核心精神——代碼即法律(code is law)雖然立意良好,但實務上要執行,還是要克服很多技術以外的問題。

挑戰六:用戶可能根本不在乎你到底是不是「去中心化」

區塊鏈的本質——去中心化、透明、不可篡改,這些都很好,但普通用戶真的在乎嗎?

我們可以從一些立意良好的「中心化」項目看出端倪,DuckDuckGo 是一個標榜不會追蹤你隱私的搜尋引擎,Ello 是無廣告版的臉書,兩者都很棒,但以用戶數而言,都不算是實質意義上成功的項目,為什麼?

因為比起在乎隱私或廣告干擾,用戶更在乎的是你能不能解決他的問題,搜尋引擎如果搜尋不到最多、最精準的資料,社群媒體如果無法滿足跟朋友互動的需求,大家就不會有誘因去使用。

假設今天底層公鏈的效能問題被解決了,某公司在一條效能超強的鏈上開發了一個去中心化、開源版本的 Facebook,我們就叫他 DFB 好了,DFB 號稱可以解決個資被企業亂用的問題,且絕對不會追蹤你的隱私。但 DFB 因為建立在分佈式運算、儲存系統(區塊鏈)的關係,導致效能會比較差一點,這意味著你每點開一個對話視窗,或是每瀏覽一張照片,都會比中心化版本的 Facebook 多幾十毫秒甚至幾百毫秒上的延遲,你還會想用嗎?

答案不言可喻了。

筆者認為,並非所有的軟體都適合用區塊鏈去做去中心化的版本,如果 DAPP 不能比中心化應用更加滿足用戶的「核心需求」,光在透明、去中心化、不可篡改這幾個特點上做文章,是沒有意義的。

結論

坦白說,區塊鏈真的不是很好懂,因為不好懂,所以讓很多人片面誤解區塊鏈的特性,進而對其應用產生錯誤的想像,現在有不少教授、專家、媒體、政治人物,都把區塊鏈視為萬靈丹,而忽略其本質上最根本的限制。

希望本文提出的六大點,能更進一步帶你瞭解區塊鏈,有任何回饋歡迎在下方留言!