第二章 文獻回顧
2.2 智能合約的解釋
如圖 2-5,智能合約(Smart Contract)指的是寫在區塊鏈上自動執行的合約代碼。
它可以將買方和賣方之間原本需要手動進行的協議條款直接寫入代碼行,並且存 儲在分佈式的區塊鏈網絡中。不同於比特幣區塊鏈之中單純紀錄交易,開發者可 以編譯智能合約程式碼並將其發佈上鏈,運行後外界便可和其互動。一個開發完 備存在於區塊鏈網絡中的智能合約能執行許多任務,也代表大家也能在這樣的模 式底下建立屬於自己的區塊鏈去中心化應用應用程式(Decentralized Application)。
圖 2-5 智能合約示意圖
智能合約這個術語至少可以追溯到 1995 年,是由多產的跨領域法律學者尼 克•薩博(Nick Szabo)提出來的。他在發表在自己的網站的幾篇文章中提到了智 能合約的理念。他的定義如下:「一個智能合約是一套以數字形式定義的承諾
3.協議: 是技術實現(technical implementation),在這個基礎上,合約承諾被實 現,或者合約承諾實現被記錄下來。選擇哪個協議取決於許多因素,最重要的 因素是在合約履行期間,被交易資產的本質。再次以銷售合約為例。假設,參 與方同意貨款以比特幣支付。選擇的協議很明顯將會是比特幣協議,在此協議
而從智能合約的運作來看,在英文裡面,Code 這個單詞既有法典的意思,也 有密碼的意思,這也暗示了智能合約(Smart Contracts)的意義和功能。智能合約 是一種電腦程序可以直接控制數位資產。描述了基於比特幣的智能合約的工作方 式,通過在區塊鏈上用類似 javascript 程式語言,寫入類似 if-then、else、else if 的 語法,這時候如果預先寫完的函式條件被觸發,程序將會執行合約中的其它條款 並且自動觸發支付。多方之間的定期交付合同被以代碼的形式寫入區塊鏈。每個 人都是匿名的, 但合約的記錄被記載在公共的帳本中。當有人觸發事件的時候,
比如說達到了執行價格,到期、合約按照編好的程式碼將會自動執行。監管者可 以了解市場上的活動透過這個技術,也可以保護每個人的隱私。
以以太坊為例,當編寫程式的人寫好 solidity 程式碼(.sol)後,需要先將程式 碼編譯(compile)成 EVM(以太坊虛擬機)能讀懂的二進位 Contract Byte Code,最終 才能部署到以太坊的區塊鏈上執行。成功部署到區塊鏈上的智能合約,會有一個 和錢包地址(Address)一樣格式的合約地址(Contract Address)。部署成功後智 能合約可以自動執行。之後如果要呼叫智能合約,使用者可以使用合約部署的錢 包地址(Owner Account),或根據撰寫的條件在智能合約裡,讓擁有其他錢包地址 的人,也能根據需求,呼叫這個智能合約。那所謂的呼叫智能合約,其實就是發 起交易,只是這交易式在合約的地址上進行,但交易的不只是加密貨幣而已,也 可以是智能合約提供的函式呼叫方法。