區塊鏈的正確使用手冊(上)

區塊鏈很潮很棒,但你真的需要嗎?

Benson Sun
Mar 31, 2019 · 8 min read
Image for post
Image for post
開玩笑的,不要太認真

我先講重點:

這不是危言聳聽,在真正理解區塊鏈技術的人眼裡,很多應用根本就是為了區塊鏈而區塊鏈。

那他們為什麼要用區塊鏈?因為用區塊鏈就跟「創新」、「FinTech」等 Buzzword 產生連結,瞬間潮度大增。說來可笑,區塊鏈現在對企業的貢獻更多是行銷曝光,而非實質意義上的技術創新。

如果目的是為了 VC 眼中的估值或是媒體曝光,那用區塊鏈當然沒問題,但問題是,很多企業的決策者會被這些應用誤導,而媒體本身也沒有足夠的專業素養去辨別這些「區塊鏈假應用」,而對其大書特書,久而久之就越來越多奇怪的區塊鏈應用出現。

現在整個產業的當務之急,是讓企業的決策者及開發者能夠正確理解區塊鏈的價值,把區塊鏈用對地方,這正是筆者撰文的用意。

區塊鏈的本質是什麼?

區塊鏈的本質是多個成員共同維護的協作型資料庫系統,比起中心化的資料庫,區塊鏈在寫入資料時,至少多了三個步驟:

  1. 決定由誰來寫入資料
  2. 把新增的資料段分給大家(廣播區塊)
  3. 運行共識協議,確保大家的資料庫都是一致的

就因為多了這三個步驟,在同樣的運算資源跟網路頻寬的狀況下,區塊鏈不可能比中心化的資料庫有效率

如果區塊鏈注定比較慢,那為什麼還這麼多人討論它?原因在於,在某些應用場景中,用這種去中心化的資料庫可以解決一些信任或是資訊傳遞效率的問題。本質上,區塊鏈就是一種用「技術上的無效率」去換取「業務場景的效率」的技術。

乍看之下很難理解,我舉個例子:

Image for post
Image for post

假設你現在要從台灣匯 1000 美金到紐約。台灣銀行跟紐約銀行存放的美金都是一樣的東西——都是數位型態的美金,所以理論上雙方只要把銀行帳本對一下,一邊扣 1000,一邊加 1000,再扣除跨國轉帳所需要的手續費,交易就結束了。

聽起來很容易,但在真實世界中狀況遠比這更複雜,由於匯款方跟收匯方的銀行的帳本往往不直接相連,我們必須仰賴 SWIFT 協議透過中轉行把錢轉到指定銀行的戶頭,如下圖所示:

Image for post
Image for post
圖片來源:IBM

中轉行當然不會免費幫你做事,國際電匯每中轉一次,中轉行就需要收一次手續費,除此之外還有清算對帳的程序要走,所以即便我們身處於如此數位化的時代,跨國轉帳一直都是一件滿麻煩的事情。

一次跨國電匯平均需支付 10~30 美金,要等 1~3 個工作天才會真的到帳

現在我們先把所有法律跟政治問題全部擺一邊,假設現在主流貨幣不是美金而是比特幣,比特幣跨國轉帳需要多少時間 & 手續費呢?

大部分的狀況下,比特幣轉帳手續費都低於 1 美金,而且 10 分鐘就能到帳(要安全一點就等 1 小時)

比特幣是古典公鏈的代表,其共識算法是頑固到不能再頑固的 PoW,可以說是最慢、最沒有效率的區塊鏈了,但在跨國匯款的情境下,依然比 SWIFT 協議快上不只一個 level。

這就是一個典型用「技術上的無效率」換取「業務場景的效率」的例子,因為區塊鏈的共識算法,本質上就是一種自動化對帳的程序,在技術上是比較慢沒錯,但比起銀行跨國匯款所需要牽涉到的繁瑣環節(敲匯、手動資料 Key In、對帳)還是快多了。

當我們用區塊鏈的時候,一定要先捫心自問,我們到底用「技術上的無效率」到底換取了什麼東西,如果一個常規的中心化資料庫,一樣也能夠滿足應用場景的需求,那我們就不需要區塊鏈。

接下來筆者想探討兩個區塊鏈常常被誤解的地方:

發幣只能用區塊鏈

筆者遇過不少企業主都想拿區塊鏈做點事,而他們不約而同都在商業模式裡面加上了「XX幣」,期望自建一個閉環經濟,但奇怪的是,在區塊鏈被廣泛討論之前,他們好像就想不到這種模式,彷彿沒有區塊鏈就不能發幣一樣。

本質上,所謂的「幣」不過是被儲存在資料庫的字串,這個資料庫可以是中心化資料庫,也可以是去中心化的區塊鏈,這個字串不會因為在區塊鏈上就突然自帶價值,若中心化的點數發行機構足以被信任,那用區塊鏈發幣意義就不大。

用區塊鏈(公鏈)發幣的好處:

1. 透明公平:幣的運作邏輯(如總量限制、轉帳條件、增發條件、鎖倉期等等)可被公開審計。

2. 流動性高:天生自帶全球流動性(global liquidity),因為公鏈本就是公開大帳本,用去中心化交易所即可與全世界的公鏈用戶做 P2P 交易。

3. 穩定:如果發幣的公司倒了,幣還是繼續存在(但有沒有價值就是另一回事了)

4. 方便:比起寫一個中心化的點數系統,有時候直接在公鏈上直接用公版的智能合約發幣可能會比較方便(如ERC20),畢竟已經有各種 conventional 的函式可以直接用了。

5. 互操作性:發在同一條公鏈上的幣,可以透過智能合約實現一些互操作性,譬如持有某 A 幣一定數量以上的用戶,在用 B 幣跟某智能合約互動時可以有一些優惠。

但缺點也很明顯:

1. 交易速度慢:區塊鏈不可能比中心化系統快,在以太坊轉帳至少要等3分鐘才會被確認,不過用 DEXON 就沒這個問題了, DEXON 可以做到 2 秒內到帳(偷打廣告)。

2. 用戶門檻高:對一般大眾來說,區塊鏈的進入門檻非常高,用戶要下載錢包、學會管理自己的私鑰、知道地址是啥、知道什麼是區塊確認數、知道怎麼支付手續費等等,這些有的沒的規則,就連非常 tool smart 的網路重度用戶都需要時間學習。

所以說,除非:
1. 你的用戶很在乎幣的運作邏輯會不會被亂改(但這似乎也意味著你根本不值得被信任?)
2. 點數有強烈的交易需求且需要全球流動性
3. 你家工程師懶得寫一套點數系統(這可能不是個理由)
4. 點數需要跟其他點數有互操作性(前提是這些點數要在同條鏈上)

不然還是別用區塊鏈發幣了,你會把用戶搞死的。

不過如果你的目的是募資,那就另當別論了,因為無知的大眾總是會覺得區塊鏈的幣就是潮,就是想買。

智能合約好像很神?

筆者在看一些區塊鏈的應用時,往往會看到「我們可以透過智能合約,實現 XXX 自動化功能」類似的字眼,疑?難道不是智能合約就不能自動化嗎?

其實絕大多數的人對智能合約的理解是錯誤的,大部分的智能合約既不智能,也不是合約。

本質上,智能合約就是「被部署在區塊鏈上的程式」,跟一般程式最大的差別,在於智能合約會被每個全節點儲存並執行,智能合約被觸發執行完畢後,其執行的結果(稱為 state)會被存到區塊鏈上。你可以把它想像成大家一起做一模一樣的事情,得到一模一樣的結果,然後存起來,就這麼簡單。

對於公鏈來說,智能合約比較接近 “persistant script”,是一種一旦條件被觸發,就會強制執行的代碼。由於部署在去中心化的區塊鏈上,代碼是透明公開的,且一但部署,這段代碼就永久存在在區塊鏈上了,理論上無人能 take down 這段代碼(除非 hard fork)。

對於聯盟鏈或私鏈來說,智能合約比較接近大家約定成俗做某件事情的一種慣例,說白了就是一種形式標準化的作業流程,只是用程式去實現它,好處是降低溝通成本,讓大家可以在一個封閉的環境內用同樣的協定處理特定業務,而且處理的結果是同步給大家知道的。

以上兩種「智能合約」,都不一定是真的合約,因為跟合約互動的人不見得有什麼權利義務,其執行的結果也不見得有法律保障,用合約一詞去概括解釋區塊鏈上的程式,完全就是一種定義上的誤導。

連以太坊創辦人 V 神都曾經公開懺悔,他很後悔當初採用智能合約這個詞:

Image for post
Image for post
V 神的懺悔

所以說到底,智能合約根本沒這麼神奇,中心化程式一樣也可以做到自動化,智能合約是為了達成某種特殊手段才會需要使用的程式,大家清醒點,好嗎?

小結

講了這麼多,聰明的讀者應該可以意會到區塊鏈並不是萬靈丹,只有在一些特殊的領域,區塊鏈才能發揮其價值,絕大多數的時候,用中心化的資料庫會是更有效率更好的選擇。

至於在怎樣的情況下才適合使用區塊鏈,筆者會在下一篇文章提及,希望這篇文章能夠讓更多人認識區塊鏈的技術本質,咱們下回見!

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store