關於「智能合約」(Smart contract),我們不妨可理解為「能夠自動執行合約條款,產生效果的電腦程式」。此能直白地理解智能合約為契約約款內容程式碼化,並藉由程式接受觸發條件後自動執行的特色,也因借助程式載體,處理數位化資產時,更為容易操作與驗證。此外,儘管智能合約尚因選擇的「鏈種」(像私有鏈、聯盟鏈、公有鏈(註一)等),而有不同的去中心化程度,但都同樣仍維持區塊鏈所具備之不可竄改、可追溯性、匿名的特點。因此,基於這些特點,共構出智能合約具有接收、發送、儲存等價值,及處理資訊的功能。
智能合約的要件及運行方式
智能合約的組成,可簡單分為「合約主體」(Subject of Contract)、「數位簽名」(Digital Signature)、「合約條款」(Contract Terms),及「去中心化平台」(Decentralized Platform)。也就是說,合約主體確認交易條件並以程式碼設計智能合約後,再透過合約所有參與者以私鑰(Privacy Key)進行認證(即「數位簽章」)來啟動合約,而此份簽訂的智能合約條款將經編譯後寫入去中心化平台(分佈於各個節點之間),再等待合約所設計好的條件觸發後執行智能合約,產生效果。而值得提到的是,有時觸發這些條件需借助物理世界所傳遞至區塊鏈的訊息,也就是「神諭」(Oracle),協助節點判斷條件是否達成(註二)。
這些要件所建構成的智能合約如何運行,讓我們試著以一筆藉由區塊鏈及智能合約的銷售汽車案例為例:假設阿明於區塊鏈平台上有註冊帳戶(對外公鑰為A、私鑰為A’),阿明想要透過智能合約出售自己的一台汽車。於是,阿明先將想要出售的汽車儲存於特定上鎖的倉庫中(簡稱「智能櫃」,附帶一提,當然,車上也要有車鑰匙),並獲得打開智能櫃取車的公鑰(區塊鏈位址)假設為X’(已儲存於區塊鏈中);阿明同時以私鑰簽署的智能合約約款為「如果有支付者以太幣400ETH匯入帳號A(阿明的帳號),則以X’公鑰所鎖住的汽車自動移轉給該支付者。」,並傳入以太坊平台上,也同時將出售汽車廣告與此智能合約讓公開於網路上。
今天有位消費者阿正想購買此台車,並透過他的私鑰B’簽署這份合約,並移轉自己公鑰位址B內的以太幣400 ETH至阿明的公鑰位址A,此時智能合約將透過各節點認證,確認阿明是否有此台車、阿正是否有足夠以太幣支付阿明,待節點確認所有條件為真實後,阿正即會取得智能櫃的密碼,區塊鏈上同時記錄阿正為這台車的所有人、阿明的帳號取得以太幣400ETH 、阿正的帳號減少以太幣400ETH。後續,阿正即可持他的私鑰取車(當然,還有車的鑰匙)。
迎接區塊鏈潮流
智能合約除運用於前述購物情境下,更出現於數位串流、保險、證明文件、金融、物流、能源等範疇。相較於常聽的數位串流(例如,音樂、影視音)透過智能合約將分潤自動化外,目前保險業者鑒於被保險人出險時至實際請領到保險金之期間冗長,且報銷人力成本不容忽視,也因此保險業者開始使用智能合約自動完成部分流程。例如,據悉法國安盛保險(AXA)推出「Fizzy」航班誤點保險商品,除了保持存在於智慧合約內的保險紀錄與可接近性外,如航班誤點超過2小時,Fizzy將會自動向乘客進行補償。由此主打透明、自動化特色。在此發展下,保險業者降低管理成本同時,亦得做出更準確的定價。
此外,當物流業搭配智能合約時,使物流公司、供應商、運輸公司等單位,彼此之間的資料一致,免除物流訂單確認、追蹤的人力成本,更可降低錯誤率,而提升營運效率,交易時間也可縮短。如:快桅集團(MAERSK)使用的供應鏈平台TradeLens,即有透過智能合約實現跨國貿易多方數位化協作方式。
藉由上述的介紹我們可以發現智能合約的發展性,未來更可期待的是智能合約「可信賴」、「可跨系統溝通」的自動化機制價值,發展於未來資訊萬千的場景。然而,不可忘記的是,在現有法律架構及社會秩序下,智能合約與契約條件等折衝議題,更為重要:以上述汽車買賣為例,如果智能櫃裡的汽車並未附上鑰匙、車輛是泡水車怎麼辦?以及產權移轉的登記議題、違約時的處理,甚或合約條件的強制執行等,都仍留待討論,這些議題的思考,我們將留待本系列第三篇文章說明。
注釋:
註一於此簡要說明:
(1)所謂「公有鏈(Public blockchain)」,指的是向全世界任何人公開,所有人都可參與進入,發送、接收、認證交易的區塊鏈型態,其基本上被認為是完全去中心化的,但也因如此,由於節點眾多、其認證時間較長,導致交易效率較低,且成本亦高。
(2)而「私有鏈(Private blockchain)」是完全私有的區塊鏈,其權限限於一個組織中,而有一定程度的限制。其共識過程由預先選好的節點控制,而被認為是「部分去中心化」,因此有一定的集中風險,但也能保有較好的交易速度及執行效率。
(3)「聯盟鏈(Consortium blockchain)」與私有鏈有些類似,因為其開放程度和去中心化都有所限制;兩者差別在於,聯盟鏈的組成往往是一個產業鏈或行業服務;而有私鏈則是為一個組織(例如,公司)的內部服務。
註二:
在智能合約中,交易的進行往往繫於特定條件或事件的成就(例如,保險理賠與否取決於保險事故的發生)。但這些事件或條件往往是發生於區塊鏈外部,此時即須借助一個機制或來源,檢索、驗證,並將外部事實數據資訊提供予智能合約,協助智能合約的執行,而這裡所稱提供外部資料機制或來源即為「神諭」。惟神諭的真實性其實也會隨著訊息量、公開性、易於檢索性程度,而連帶影響節點驗證時間、成本等。詳細說明可參考https://taylorpearson.me/smart-contract-applications/。