區塊鏈的正確使用手冊

買賣虛擬貨幣

我先講重點:目前很多企業/組織提出的區塊鏈應用,都不需要區塊鏈,而且不用區塊鏈可能還運作得更好。

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

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

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

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

區塊鏈的本質是甚麼?

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

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

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

相較中心化資料庫,區塊鏈是一種緩慢、無效率、計算上昂貴的資料庫。

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

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

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

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

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

一次跨國電匯平均需支付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 神都曾經公開懺悔,他很後悔當初採用智慧合約這個詞:

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

區塊鏈技術的本質以及常被誤解的用途,在此篇文章筆者將嘗試提供一個泛用、易懂的框架,讓企業決策者可以判斷應用場景是否需要匯入區塊鏈。其實國外已經有不少學者提出了區塊鏈的應用評估框架,像是美國標準技術研究院(NIST)就在其區塊鏈技術回顧的論文中(第42頁)提出了以下的框架:

NIST 的區塊鏈評估應用框架

其他學者提出的框架都跟NIST的大同小異,這當中NIST的框架雖然較為全面,但仍然有其侷限,理由在於,這些框架都偏向把區塊鏈當作協作型資料庫(Collaborative Database),但事實上區塊鏈還有其他的用途,像是博弈類DApp利用公鏈智慧合約開源的特性,解決了線上賭場長久以來的信任問題——莊家可能會操縱隨機數來坑玩家,這種將程式邏輯公開換取信任的應用方式,就完全在以上框架的守備範圍之外。

正因為如此,筆者希望能設計一個包容性更大、更全面的框架給企業決策者參考。

適合區塊鏈的應用場景

以筆者研究超過上百個區塊鏈應用案例的經驗來看,區塊鏈作為一個共享帳本(Shared-ledger),其用途大致上可分為三個種類:

A. 協作型資料庫(Collaborative Database)
B. 數字資產發行平臺(Digital Asset Issuing Platform)
C. 公正程式平臺(Honest Program Platform)

協作型資料庫(Collaborative Database)

這個型別的應用適用NIST 的框架,不過NIST 的框架有點太複雜,我把它稍微做了簡化,如果你的應用場景有以下特性,可能就適合用區塊鏈做協作型資料庫:

1.需要儲存資料
2.有多個資料寫入者
3.沒有適合/可信任的資料儲存者
4.資料需要其他成員查核&審計正確性
5.資料一但被寫入後就不能被刪除或更新

你可能會想,甚麼樣的應用場景會有以上的特性?

通常跨組織的資訊交換會有這種特性,譬如國際船運就是一個典型有多方參與者(貿易商、海關、港口、物流業者),且需要頻繁驗證資訊正確性的場景。

假設你是一個貿易商,你想把貨物從臺灣賣到南美洲,因為路途遙遠,所以你花錢找了兩家船運公司來運東西,但問題來了,每家船運公司都有自己的一套追蹤系統,但只看得到自家旗下貨物的運輸狀況,所以你必須不斷打電話、寫Email 到這兩家公司,才能追蹤到貨品的完整運輸狀況。

除此之外,船運公司也需要跟其他組織溝通,譬如港口、海關、陸運業者等等。船運巨擘Maersk 就曾經估計過,把一個冷藏貨櫃從東非運到歐洲需要經手大約30 個人和組織,超過200 次溝通交流才能實現,這些貿易檔案處理的相關費用佔了實際運輸成本的5 分之1。

這些痛點能用區塊鏈解嗎?

我們來一一檢視國際海運是否需要區塊鏈:

1.需要儲存資料
-->打勾,需要有地方能夠存貨物的運輸狀況。

2.有多個資料寫入者
-->打勾,有很多組織需要寫入貨物資料,譬如海關寫入驗貨狀況,海運業者寫入運輸到哪裡等等。

3.沒有適合/可信任的資料儲存者
-->打勾,這個場景牽涉太多單位,找誰來存end to end的資料都不適合,找海運公司?找某政府海關?找某大港口?就算有人肯存,其他單位可以完全相信它不會亂來嗎?

4.資料需要其他成員查核&審計正確性
-->打勾,譬如船運公司A要接力運輸船運公司B的貨品時,A必須確認B送進港口的東西已經被海關驗過沒問題了,這時候A不能片面信任B的說詞,還必須要去跟海關再三確認才行。

5.資料一但被寫入後就不能被刪除或更新
-->打勾,貨物運輸紀錄本身是一種流水帳型的資料(log),理論上只會一直新增紀錄,不會修改過去的歷史。

Bingo!我們得到了一個合理的區塊鏈應用!

IBM與船運巨擘Maersk在2018年發起的區塊鏈專案—— TradeLens,就是一個讓各家船運公司、貿易公司都能夠共同分享、上傳資訊的協作型資料庫,讓聯盟的成員能夠掌握end to end的貨物運輸資訊,其運作方式如下圖所示:

在一次IBM 的測試中,TradeLens 可以有效減少40% 的貨物運輸時間,這聽起來很棒,但專案發展了整整一年之後,這套系統有被業界大規模採用嗎?

答案是,沒有。

之所以沒有被大規模採用,主因並非技術障礙,而是政治問題。其他船運同業並不希望加入一個由Maersk主導的計畫,他們擔心自己的權利在這個平臺無法跟Maersk平起平坐,像是世界第五大的船運公司Hapag-Lloyd就曾公開批評 TradeLens是一個不能用(unusable)的平臺,但明眼人都知道,並不是不能用,而是它不想用。

把區塊鏈拿來當協作型的資料庫,技術上並不難實現,真正難的地方是如何讓各方都願意參與其中,TradeLens 上如果只有Maersk 一家船運公司,其存在就毫無意義,像國際海運這種由寡頭佔領的市場,由任何一個寡頭出面做平臺,其他人難免會不服氣。

區塊鏈可以解決資訊傳遞效率的問題,但無法解決「誰也不服誰」的政治問題。

要避免政治問題,此種應用比較適合由獨立的第三方(譬如產業工會或是政府)來推動,像是財金資訊公司推動的金融函證區塊鏈即是如此,財金公司的股東由各大銀行跟政府組成,某種程度上可說是銀行業的集體意識,這種單位做平臺大家比較容易服氣,但改成某間銀行來主導可能就會失敗。

看完了TradeLens 的案例,我們再來看第二個誤用區塊鏈的例子——航空公司哩程系統。

有某間航空公司跟數百家餐廳、住宿業者合作,讓客戶在這些合作商家消費也可以累積航空哩程數,並且宣稱在點數系統中匯入了區塊鏈技術,大幅度提升後端作業效率並減少人力核對點數成本。(這是真實案例)

這真的需要區塊鏈嗎?讓我們再套用一次框架:

1.需要儲存資料
-->打勾,需要有地方能夠存點數餘額。

2.有多個資料寫入者
-->打勾,有很多合作商家需要寫入資料以更新點數餘額。

3.沒有適合/可信任的資料儲存者
-->打叉,航空公司自己做一箇中心化的資料庫讓合作商家串API同步點數餘額狀況即可,沒有信任問題。

4.資料需要其他成員查核&審計正確性
-->打叉,這個應用場景是「一對多」而非「多對多」的關係,亦即商家A跟航空公司串接資料時,並不需要同步讓商家B知道,而且商家B也不需要審計「商家A跟航空公司串接資料」的真實性。

5.資料一但被寫入後就不能被刪除或更新
-->看狀況,如果資料庫只紀錄點數最新的餘額,不管中間消費歷程,就不需要這個特性。

在「有可信任資料庫」的狀況下,單純的資料同步是不需要區塊鏈的,航空公司高管宣稱的「後端系統效率提升」,在我看起來可能只是藉著區塊鏈專案的名義把原本不夠數位化的地方做得更好罷了,看起來是區塊鏈奏效,但實際上並非如此。那為甚麼要用區塊鏈呢?可能是為了PR 效果,也可能技術顧問公司賣區塊鏈solution 可以開更高的價碼吧!誰知道呢?

實務上,協作型資料庫通常會用聯盟鏈實現,因為一些機密的資料並不適合/不需要放在公鏈上給所有人看,不過也有一些應用變體會把資料存公鏈上,譬如MIT自行研發的數位證書協議Blockcerts,就是讓所有需要發數位證書的單位,都可以透過這套協議把證書紀錄在比特幣的區塊鏈上。

以往發行數位證書的單位需要有一個後臺,讓使用者可以驗證證書的有效性,但現在用Blockcert 就只要負擔少少的資料上鍊費用,不用再僱用人開發/維護後臺,就可以安心地把證書存在區塊鏈上,而使用者也可以用Blockert 協議開發的APP 統一管理不同機構發放的數位證書,解決了數位證書管理不易的痛點。

總結一下把區塊鏈當成協作型資料庫的好處以及需要注意的地方:

好處:
1.降低跨單位資訊傳輸成本
2.解決「沒人能存資料」的問題

需要注意的地方:
1.可能會有「誰也不服誰」的政治問題,建議由第三方單位推動
2.在意資料隱私的話建議使用聯盟鏈,反之若資料適合存在公鏈上,建議不要重複造輪子,先看看是否有開源協議可以使用

上面提到區塊鏈可作為協作型資料庫,接下來要介紹另外兩種應用類別,數字資產發行平臺&公正程式平臺:

數字資產發行平臺(Digital Asset Issuing Platform)

區塊鏈很適合作為數字資產的發行平臺,如果你希望數字資產有以下特性,或許就適合用區塊鏈來發行數字資產:

1.數字資產需要跨地域、跨系統的流動性
2.數字資產需要跟其他數字資產有互操作性(前提是這些資產要發在同一條鏈上)
3.需要公開數字資產的資訊/運作邏輯以取得信任

區塊鏈本質就是一個共享大帳本,當有越來越多的資產以token的形式發行在區塊鏈上,這些token的流動性就會越來越高,而當一個資產的流動性提升,它本身價值也會被放大。

舉例來說,如果有某企業選擇用以太坊ERC20 標準發行點數,那這個點數從建立第一天開始就會有二級市場,使用者可以透過去中心化交易所把點數換成其他ERC20 token。如果用中心化系統發行數字資產,使用者交易「跨單位發行的數字資產」時,往往要透過一個交易清算單位,或是OTC (over the counter) 做線下交易,流動性就比較差。

除了流動性之外,另一個明顯的好處就是提升不同數字資產的互操作性(interoperability),譬如持有某A幣的使用者,每天可以分到一定數量的B幣,或是持有C幣一定數量以上的使用者,用D幣買東西的時候可以打折等等,這種數字資產之間的互動可以透過智慧合約來實現,用中心化系統不是不能做,只是實作上會比區塊鏈麻煩很多,想想LINE Point如果要和樂天點數實現這種互操作性,系統上的串接會有多麻煩?

最後一點是信任,區塊鏈上數字資產的總供給量、增發邏輯、轉帳條件、持有量分佈等等,都可以被公開審計。這有甚麼用呢?如果某遊戲廠商用區塊鏈發行虛擬寶物,他可以公開虛寶的總量以證明稀缺性,甚至以程式嚴格控制虛寶總量必須低於玩家總數的千分之一等等,向玩家證明不會有虛寶通膨問題,這我稱之為「可信賴稀缺性」( proven scarcity)。

有一些開源或是帶有公益性質的專案,也比較適合用區塊鏈發幣,像是FileCoin 和BAT(Basic Attention Token )之所以採用公有鏈作為發幣的平臺,除了募資方便之外,也跟其專案本身的性質有關係,這兩個專案都是開源的專案,用中心化系統發幣未免有點奇怪,用區塊鏈發行代幣,讓代幣自行運作再適合不過。

那有沒有缺點呢?當然也是有的,如同上一篇所提到的,區塊鏈的交易速度不可能比中心化系統快,譬如ERC20 代幣的轉移就先天就受到以太坊的限制,至少要等2~3 分鐘才會到帳,如果很在意交易速度,建議可以使用速度較快的公鏈(如DEXON) 或是聯盟鏈(如幣安鏈)來發行數字資產。

另外就是上手難度的問題,要在區塊鏈上交易數字資產,必須理解私鑰、地址、交易手續費、區塊確認數等知識,對一般大眾來說太難了,需要有配套措施提供更好的UX,譬如客製化錢包、私鑰代管服務等等。

總結一下把區塊鏈當成數字資產發行平臺的好處以及需要注意的地方:

好處:

1.提升數字資產流動性
2.提升數字資產互操作性
3.可藉由公開數字資產的運作邏輯以取得信任,適合開源或是公益專案

需要注意的地方:

1.交易速度較慢,如果很在意速度建議使用DEXON或是聯盟鏈
2.上手難度高,可能需要搭配客製化錢包&私鑰代管服務降低使用門檻

公正程式平臺(Honest Program Platform)

當區塊鏈引入圖靈完備的程式語言後,就從單純處理數字貨幣的帳本變成了一臺去中心化的電腦,開發者可在其上透過智慧合約實現各種更復雜的邏輯,區塊鏈的智慧合約有三個特性:

1.開源
區塊鏈的智慧合約程式碼是公開的,每個與合約互動的人都可以檢查其程式碼有沒有問題

2.不可竄改
智慧合約的程式碼跟交易紀錄一樣,一旦被部署在區塊鏈上之後就無法修改

3.無法被阻止
只要觸發一開始寫好的條件,智慧合約就會自動執行,理論上無人能阻止程式碼運作。

(2跟3都是在區塊鏈是安全的前提下才成立,如果所有節點共謀作惡,那就不成立了。)

白話一點來說,智慧合約屬於一種「下好離手」、「運作方式透明公開」的程式,在一些運作機制不透明的產業,譬如線上博奕,人們很難相信程式不會偏袒莊家,畢竟後端的程式碼都掌握在博弈廠商的伺服器上,但如果改用區塊鏈的智慧合約就不一樣了,因為程式運作邏輯可被公開審計,玩家不用擔心莊家操縱隨機數,也可以確保莊家不會跑路,因為智慧合約會保證賠付。

智慧合約開源特性也可以應用在群眾募資上,群眾募資一直有個痛點— —專案方拿了錢之後交付成果不如預期,以太坊的創辦人Vitalik曾經提倡過一種新型態的募資方式—  DAICO,其核心概念是投資人先把錢(ETH)打進智慧合約中,這些錢會按一定的速度分批釋放給專案方,如果專案方做得不好,投資人可透過代幣投票,減慢專案方領取ETH的速度,甚至在必要的時候投資人可以直接撤銷專案,把剩餘存在智慧合約裡的錢拿回來,藉此降低專案方跑路的風險,也保障投資人的權益。

由募資平臺執行中心化的程式也可以實現上述規則,只是會產生新的信任問題,募資平臺的利益跟專案方緊密掛鉤,難保募資平臺不會與專案方共謀,竄改投資人的投票結果,反觀智慧合約規則透明公開,沒有造假空間,更有公信力。

把區塊鏈「公正程式平臺」特性發揮得最淋漓盡致的應用類別,莫過於近期大紅的DeFi (Decentralized Finance,分散式金融),DeFi利用智慧合約開源以及分散式網路的特性,將傳統金融產品轉變為無需信任且透明的協議,這些協議可以在無須中介機構的情況下執行,且使用者無須准入許可,是一種人人可用、執行邏輯與資料全程公開透明的金融協議。

目前最熱門的DeFi 專案就是MakerDAO,它是一個去中心化的抵押貸款平臺,以往我們可以抵押房子來借錢,譬如抵押市價1000 萬的房子來借600 萬,以超額抵押來抵銷不履約的風險,而在MakerDAO 上我們是超額抵押「以太幣」來借「Dai」(Dai 是一種1:1 錨定美金的穩定幣),如果抵押品價值下滑,智慧合約會自動觸發清算機制,最低清算率是150%。

舉例來說,我可以抵押市價400 美元的以太幣借100 個Dai, 如果以太價格崩盤,抵押的以太幣價值從400 美元下滑到150 美元以下,這就觸發了清算機制( $100*150%=$150 ),我可以選擇抵押更多的以太幣,確保抵押品的市值保持在借款的150% 以上,或是不作為任由系統拍賣我的抵押品,而後者必須額外上繳一筆罰款。以上的這一切,都由智慧合約完成,無需人力介入,這意味著更低手續費的可能性,DeFi 不但能有效降低使用者參與金融市場的成本,也讓世界上20 億無法進入正規金融體系的人,有了另一個新的選擇。

講完了好處跟應用方向,接下來講區塊鏈智慧合約的限制,區塊鏈的智慧合約被儲存&執行在分散式網路中,這意味著每一次程式碼執行,都必須在每個節點上被執行一次,假設網路有一萬個節點,同樣的程式碼就必須被執行一萬次,因為以上的特性,所以區塊鏈的智慧合約:

1.只能實現簡單的邏輯:一些需要大量運算資源的程式(譬如Deep Learning),並不適合放在智慧合約裡。

2.不適合應用在高頻場景:如果程式會在短時間內接受大量的request,且使用者的等待耐心時間極短(低於1秒),那就不適合用區塊鏈的智慧合約實現。

還有一點必須注意的是,如果你的智慧合約需要外部資訊輸入,那智慧合約如何取得資訊就必須考量進去,實務上一般常見的作法就是投票。

譬如我們剛剛提到,當以太幣的市價滑落時可能會觸發MakerDAO的清算機制,那麼智慧合約從哪裡得知以太幣的市價呢?如果直接拿CoinMarketCap的價格,那似乎有點太過武斷,如果有人跟CoinMarketCap官方串通共謀,那豈不是天下大亂?為了保持去中心化的特性,MakerDAO參考了多種價格來源,並且設定了一種特別的智慧合約來管理以太幣市價的source feed,而所有source feed的增刪都是由MKR (MakerDAO的治理代幣)的持有者投票決定,有興趣的讀者可以閱讀Maker DAO的官方檔案。

事實上所謂的多重簽名籤包(Mutisig Wallet)本質上也是一個智慧合約,大家把錢打進去,然後規定只有超過半數的參與者簽名後才能拿錢出來,這也是一種投票的概念。

總結一下把區塊鏈當成公正程式平臺的好處以及需要注意的地方:

好處:

1.可藉由公開程式的運作邏輯以取得信任
2.降低人力參與/去中介機構,可降低成本
3.條件觸發即自動執行,無人能夠阻止

需要注意的地方:

1.只能實現簡單的邏輯,區塊鏈不適合執行太複雜的程式
2.不適合應用在高頻場景,如果程式需要高頻、低於1秒延遲的處理速度,可能用中心化的系統更為適合
3.觸發條件若需要外部資訊輸入,需考量設計方式,如果資訊輸入來源單一,那就失去用區塊鏈的意義了(控制輸入來源=控制程式運作)。

結論

希望能讓大家更瞭解區塊鏈的用途和限制。要設計出一個可以容納區塊鏈所有應用的框架,坦白講是一件很困難的事情,因為區塊鏈本身並非為了特定應用而被髮明的技術,每個人看到的區塊鏈價值可能都不一樣,所以設計出的區塊鏈應用也會大異其趣。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;