區塊鏈技術概觀(五):以太鏈與智慧合約

作者 | 發布日期 2017 年 09 月 14 日 13:03 | 分類 Fintech , 數位貨幣 , 科技教育 follow us in feedly

今天我們先來談談智慧合約(Smart Contract)。之前筆者稍稍提過以太鏈是最早把智慧合約講得很大聲的區塊鏈技術,那麼智慧合約具體來說是什麼呢?其實在 1990 年代,就有許多專家想要利用具有足夠公信力的系統來自動執行商業合約,兼通資科與法律的專家 Nick Szabo 在 1994 年就提出了讓合約能自己依照條件自動執行的觀念,因為這種合約不用人力執行,又具備公信力,因此看起來非常聰明又厲害,所以稱之為智慧合約。



智慧合約的概念及執行

雖然智慧合約可以自動執行,但在商業世界中合約執行不全然可全面數位化或全面在統一媒體上進行,所以智慧合約執行中間,當然還是需要人參與。好比說我們買賣一棟房子,即便雙方都談好用以太幣付款,但實際上房產轉移的授權目前是登記在各政府管理機構,因此我們的智慧合約雖然可以依照雙方的條件設定自動執行,但能否執行完成,仍要看合約執行狀況而定。為了達成這種目的,智慧合約的寫作必然以程式語言撰寫,且大多不會用到太複雜的程式語言,僅需要有商業邏輯、基本代幣、變數等功能即可。我們舉一個範例,好比甲乙雙方同意以以太幣 100 枚買賣一輛車,雙方即可用以太幣錢包設立一個智慧合約,即是寫一段程式,先由乙方帳戶扣住以太幣 100 枚,然後檢查甲乙雙方是否同意此交易成立(通常是由送錢者下達指令),然後交易成功。

問題來了。當初發明智慧合約的目的聽說是……「聽說」是要取代公證人和律師的,當然就前段文字看起來,肯定律師都要失業了!但世界絕對不像笨蛋想的那樣簡單啊。如果甲方交車後,乙方仍然不同意轉帳要怎麼辦?如果智慧合約有時間限制,時間一到,錢可是會自動退回乙方的!或甲方明明沒交車,卻強迫乙方轉帳又如何?或是車輛保固有問題又該如何?現實世界變化多端的情況,無法在同一個區塊鏈媒體反映出來,因此智慧合約到目前為止能處理的事仍相當有限,畢竟合約有爭議時的處理方式仍必須回到現實世界。近來有許多腦補作家老是喜歡講有了 XXX 科技後,OOO 就要失業了。水電工協會認為這種危言聳聽的言論實在很不可取,同時他們分析的方法也充滿諸多不科學之處。

以太鏈上的智慧合約

區塊鏈上的智慧合約通常必須以高階敘述型語言寫作,各位相當幸運的是,水電工協會認為這系列文章介紹寫程式不符合主旨,所以您一行也看不到。同時我們在前幾篇都有提到,區塊鏈十分麻煩的一點,就是它是一個共識型的演算法,也就是說,這個程式的執行不是只在一台電腦上,而是在上千台電腦(挖礦主機)上執行,且必須得到相同的結果。如果老是跑出不同的結果,那麼根本沒有公信力可言(試想我們公證一個合約,結果有一半的挖礦機認為現在合約成立了,而另一半認為合約根本不成立,那麼我們要相信誰?)以太鍊的智慧合約在設計上,可接收各種區塊鏈出現的訊號(稱為事件 event),進而決定程式走向,也就是當用戶把合約寫出來公告後,就有上千台挖礦機盯著新區塊中有沒有與這個合約相關的控制事件出現,如果有,就會執行對應動作。合約的執行結果有可能寫回新事件進區塊鏈,也可能只是轉帳事件(與比特幣一般轉帳是一樣的動作)。

由於執行智慧合約要花額外的計算力,對挖礦節點及網路運行成本都有影響,因此以太網路定義了一種叫 Gas(瓦斯)的單位,智慧合約每執行一種函數就會花掉固定的 gas,而 Gas 本身要靠以太幣來購買,同時間內能使用的 gas 數也有限制。以太鏈就曾因為 gas 消秏值定義過於寬鬆,而造成差點全面瓦解的危機。

以太鏈社群非常自豪地提出智慧合約等同一個 VM 的說法,但是就底層協定及區塊鏈的性質來看,其實還差很遠。以太鏈的智慧合約程式執行上不會如一般電腦,因為區塊鏈本身特性使然,它就只能當一個動態的公開儲存媒介,因此想要在上面跑程式,必然是以事件驅動,無法由單一電腦本身不斷執行。打個比方,如果我們流程寫明這筆款項 3 天後若沒有得到同意就會自動退回,結果 3 天後都沒有人觸發這個智慧合約,那麼這筆錢就會卡在合約裡,一直到合約用戶有一天觸發它才會真的退回款項。除非您這個程式的執行結果根本不必要公證至區塊鏈上,否則必然如此。不過如果不公證,又何必使用區塊鏈智慧合約呢?

以太生態系

以太鏈的發展並不單純把自己當成比特幣來用,而是希望能利用區塊鏈的力量來發展更多新應用,所以在設計上以智慧合約的能力為基底,發展出許多可加的能力,中間運作的要件之一就是代幣(Token)。代幣是以太鏈中可用於智慧合約或區塊鏈事務的東西,像遊樂場代幣一樣,以太鏈的智慧合約程式,如果搭配外部相關程式,就可以組成 DAPP(分散型應用程式),好比您可以把用不到的電腦計算力租給有需要的人,就安裝某個有租用功能的程式,這程式會讓租用人以某個代幣 A 來支付包租公所有費用,這樣一來以太鏈就成了公證人,雙方就可利用它來交易過剩的計算力。這個代幣也都可換成以太幣,因此以太幣就成了通用貨幣,支援其上所有應用程式。要發行代幣或是 DAPP 都需要一定支持,因此寫計畫書就成為重要的一關,有興趣的讀者可自行前往相關社群研究。

代幣也可做工作用,好比 DAO 代幣就是以太幣設計用來表決重大事項的一種代幣,好比 DAPP 能否發行、是否要引入新技術、產生分支時用戶支持那一邊等,都可以用代幣直接投票。

現存的以太鏈分散式應用專案

台灣創業市場一直以來都走得讓人很無言,除了短視近利,還有不斷把雜貨生意往網路上搬的模式變成台灣創投主流。我們來看看全球玩家在最近的區塊鏈生態是怎麼玩的,以下是幾個成功利用以太鏈功能開發的分散式應用程式專案:

Augur:顧名思義,這是個使用以太幣來玩的未來事件交易所,它提供一組 API 給安裝以太鏈節點程式的電腦,可以自行設定交易事件的目標,完成後就可開始交易。包括總統大選誰會勝出,到流星雨會不會撞到地球,都可以交易。

Melonport:顧名思義,這絕對不是一個賣香瓜的程式,有誰會用智慧合約賣香瓜呢?(農產運銷公司表示肯定有機會)這是個讓您自行利用以太鏈成立資產管理及交易的程式,您可以成立自己的基金並管理,不過很肯定的是,它目前只能處理區塊鏈相關投資,如果是實體法幣,這個程式無法和銀行串連收發帳喔。

Golem:有一句口號已經喊到水電工協會都快把它做成鑲金招牌掛在會議室了:「窮人的超級電腦」。Golem 似乎想翻轉這件事,讓窮人雖然用不起超級電腦,但是至少可以把自己的小電腦變成超級電腦的一部分,而且有錢拿!(不過這樣一來,使用單位要付的錢可能就不是很經濟了)Golem 號稱用戶都可出賣多餘的計算能力,大家還記得過去那個一切為人類的時代,我們熱血的水電工們免費下載尋找外星人、合成蛋白質的應用場景吧?在 Golem 上一切差不多,差別只在於這次您的工作量愈大,可以收到的錢就愈多。

總結

以太區塊鏈是一個相當激進的社群,只要能賺錢什麼都敢做,而比特幣社群的領頭者一直在中本聰的陰影下遵守「避免資源集中化」的絕對指導原則,但在以太鏈就不是如此了。以太鏈除了設置複雜的智慧合約,足以讓不夠力的挖礦主機垮台,同時也有代幣機制,讓有資源的人可以大玩逼死散戶的遊戲。以太幣的區塊封裝技術甚至要由 Pow 轉成 PoS,新的協議 CASPER 即將取代現有的 GHOST,雖然在多方反對聲浪中似乎很難如期上線,但新版以太幣已設置了冰河時期及難度炸彈功能,一旦未來主流區塊轉至 CASPER,若現有礦工不就範,就必須自己修改程式,否則未來舊的以太幣計算節點都會面臨難度提升,且解開區塊也沒有什麼以太幣可分的窘境。雖然以太幣社群聲稱往 PoS 前進是一種進步,能提高安全性 20 多倍且省下挖礦消耗的電力,但水電工協會的資安專家對這種口號一向冷笑以對。新版的協議不談技術面,光政治和經濟面就搞出一堆問題:它將使話語權落入少數有大量以太幣的人手上,同時降低以太幣流動性;未來如果有駭客要找以太鏈麻煩,目標也明確得很!(現實世界中大家應該很難想像,如果華倫‧巴菲特出什麼事,美元就會變成廢紙這種荒唐事吧?)

不過以太鏈社群努力在上面開創各種經濟體系的精神還是值得注意,他們一直努力試圖讓自己成為各種數位貨幣資產的元幣,雖然目前這個元幣的地位,肯定還是穩穩的非比特幣莫屬!

(首圖來源:shutterstock)

延伸閱讀: