前言
在現實生活中,我們會透過簽署合約的方式,以證明與確保執行的各項條件。但在去中心化系統要怎麼做到呢?關於這個問題,區塊鏈發展了一套當條件滿足之後即可自動執行結果的機制。這就是本文要介紹的主角 – 智能合約。
在這篇文章,你將會知道:
什麼是智能合約?
智能合約怎麼運作?
智能合約的特點、風險與局限性?
智能合約並非區塊鏈獨有的概念。在 1990 年代,學者 Nick Szabo 即提出了當滿足某條件時即自動執行合約的電子協定概念。可以簡單的將它想像成一個自動販賣機,顧客選擇完商品並支付金額後,販賣機就會吐出對應的商品。
而區塊鏈上的智能合約,除了保留智能合約的原始概念外,透過區塊鏈的分散式網路以及不可竄改的特性,雙方或多方可以利用預先寫入智能合約中的條件,當條件滿足後自動執行後續的動作,無須信任的第三方(如律師、銀行)介入。
簡單來說,智能合約就是在區塊鏈上運行,只要達成某些特定條件就會自動執行結果且不能被竄改的程式。
假設小拓與小荒打賭明天會不會下雨,於是他們部屬了智能合約到鏈上,條件是「如果明天 18:00 時,XX 地區下雨,小拓要給小荒 100 元;若沒下雨,則小荒要給小拓 100 元」,並先將雙方打賭的 100 元存入智能合約地址中。
智能合約會自動查詢指定時間與地點的天氣狀況,結果發現 XX 地區有下雨,則觸發對應的條件,將合約地址中的 200 元轉入小荒的地址,完成履約。整套自能合約執行的過程,都會被記錄與保存在區塊鏈上。
在上面的例子中,小拓與小荒間完全依照事先的約定進行合約,沒有第三人居中裁決,而智能合約也自行按照合約蒐集資訊與執行合約,也完全沒有一方賴帳的問題。
智能合約運作原理說明
智能合約可以簡單地被看做是一種「用程式語言撰寫並自動執行的協議」,而運用在區塊鏈上,除了包含了區塊鏈的分散式、公開透明與不可竄改等特點外,一般認為智能合約具有以下三大特點:
自治:智能合約只要一啟動就會自動運行,不需要額外的介入執行。
自足:智能合約可以在沒有第三方的幫助下,自動蒐集與調動執行需要的資訊或資源。。
去中心化:透過區塊鏈的分散式網路,智能合約可以自動運行,而無須依賴特定中心化的伺服器。
換句話說,從開始執行到執行完畢,智能合約能自動蒐集相關資源與執行,無須另外其他人為的介入。例如保險的情況,智能合約可以自動查閱意外事件是否發生 (如查找醫護紀錄或路況等資訊,確認是否有車禍發生) ,並可自動執行理賠程序,再藉由區塊鏈保存相關事證,提升理賠的效率與資訊安全性。
智能合約提供了更高的執行效率,並降低了傳統合約中執行的時間與費用成本。更重要的是,智能合約的各方無須信任交易的對方,你只需要相信「程式」會幫你做到這一切!
雖然智能合約聽起來可以解決傳統合約上的一些問題,但智能合約仍然有以下的風險與局限性:
智能合約仍然是由「人」編寫的,所以仍可能會有因為人為疏失,或程式語言的指令衝突等問題,影響智能合約的完備性,而產生漏洞。但由於智能合約是運行在區塊鏈系統上,使得這些問題即便發生了,也很難即時修補。
而這樣的問題可能會相當嚴重。例如 2016 年的 「The DAO」事件,由於其智能合約的轉帳函數漏洞,因此被盜取了約 360 萬枚以太幣 (當時市值約 4 千多萬美元)。由於「The DAO」的人員無法修改該智能合約,最後導致以太坊社群決定進行硬分岔,還原被盜的損失,而這項決定,也嚴重影響了以太坊的名聲。
以前面小拓與小荒打賭的例子為例,如果他們都不在 XX 地區,那麼只能仰賴智能合約所收集的資訊來完成他們之間的協議。然而在這個資訊爆炸的時代,真真假假的資訊很多,由於智能合約是自動運行,所以即便它收到與事實不符的資訊,它也會按照這個資訊與條件執行合約。又由於區塊鏈不可竄改的特性,想要在事後修正也會相當困難。
要怎麼確認資料的真實性?如果智能合約如果需要獲取真實世界的資訊,它通常會要再搭配一個工具,也就是「預言機(Oracle)」。預言機的功用,在於將外部的資訊轉譯到區塊鏈上,再讓智能合約去抓取它想要的資料。
然而誠實的說,預言機並沒有辦法解決網路上假資訊的問題 (事實上不論是中心化或去中心化系統都沒有辦法很好的解決),但目前預言機可以透過參考多方資料,並在轉譯過程中對資料加密等方式,來降低資訊失準的問題。
雖然使用了「合約」一詞,但智能合約仍與法律上的合約有所不同。在與現實世界法律的磨合上,智能合約仍有許多問題待解決。例如,通常未成年人是無法單獨簽訂契約的,但由於區塊鏈上的匿名性,導致很難認定智能合約的使用者是否成年,也讓法律行為的效力很難被確認。此外,使用者間的法律行如果無效,或遇到了利用漏洞竊取資產的情形,也很難藉由使法院等機構介入處理並追回資產,特別是在跨國且分散的區塊鏈網路中。
針對這部分的問題,目前有一些如去中心化身分認證 (DID) 等的解決方案。DID 是區塊鏈上,為使用者建立去中心化身分識別的方式,讓使用者在不用經過第三方驗證的狀況下,也能創建與管理自己的身分,同時也能保護用戶的數據與隱私。但智能合約並不能取代或終結現實法律的運作,而是要盡可能將現有的法律框架溶入智能合約中,如此才能與現實對接。
區塊鏈上的智能合約,能自動蒐集相關資源與執行,無須另外其他人為的介入。相較於傳統合約,提供了效率與安全度更高的執行手段。雖然智能合約有很多特點,但仍有許多技術與現實法律等層面的問題待解決。但在區塊鏈的世界,卻是一切應用的基礎,舉凡加密貨幣、Defi,到大家耳熟能詳 NFT ,都是利用智能合約的技術運行的。
未來,區塊鏈與智能合約可以在很大的程度上,解決與改善人類社會各方互動的問題。下一篇,就讓我們來看看區塊鏈如何改變世界?區塊鏈的應用範例!
延伸閱讀:
【新手入門系列 1 】 零技術入門區塊鏈,就從這五個問答開始!【新手入門系列 2 】 區塊鏈「礦工」挖的是什麼「礦」? – 共識機制與挖礦介紹【新手入門系列 3 】 什麼是區塊鏈錢包?冷錢包與熱錢包又是什麼?【新手入門系列 5 】 區塊鏈如何改變世界?區塊鏈的應用範例
發佈者對本公告的內容承擔全部責任