什麼是智慧合約?

買賣虛擬貨幣

根據谷歌趨勢資料顯示,目前,程式設計師對智慧合約程式設計的興趣已經處於歷史最高水平,其中中國高居全球榜首,隨著區塊鏈技術的發展,相信日後智慧合約將會與我們的生活密切相關,今天就為大家介紹一下什麼是智慧合約。

智慧合約基本概念

智慧合約英文名稱Smart Contract,90 年代由跨領域法律學者尼克·薩博(Nick Szabo)博士首次提出的,幾乎與網際網路同齡。但由於缺少可信的執行環境,智慧合約並沒有被應用到實際生活中,然而由於區塊鏈的誕生他開始重新走入人們視野,並逐步開始得到重視和應用。

不同於法律意義上的合約概念,區塊鏈領域的合約表達的是可以“自治自理”的 計算機協議,這套協議具有自我執行、自我驗證的屬性。

如果完全從技術角度來看,智慧合約等價於一段事先就被規定好邏輯和條款的計算機程式碼被啟用執行的狀態,同時,智慧合約也提供了通用的使用者介面,使用者可以透過介面與使用者互動。

從定義中我們可以得知,智慧合約由多個協議組成,這些協議包含了使用者介面,能表達使用者的承諾,它可以安全有效地確定公共網路上的關係。

換句話說,智慧合約是一個由計算機處理、可執行合約條款的交易協議,其總體目標是滿足協議既定的條件,例如支付、抵押、保密協議。這可以降低合約欺詐造成的損失,降低仲裁和強制執行所產生的成本以及其他的交易成本。

我們舉個實際的例子解釋一下,今年 4 月 9 日,上海某建設銀行支行開放了“無人銀行”,銀行中充斥了眾多機器和顯示屏,智慧櫃員機、VTM 機、外匯兌換機、VR 裝置和兩臺機器人代替了傳統的櫃檯。

這裡的智慧櫃員機、外匯兌換機器人眾多電子裝置都可以認為是智慧合約的一種表現形式,使用者在辦理銀行業務時,如辦理大額匯兌業務,業務流程和邏輯依據已經定在程式中,使用者只需要按照操作一步一步進行,辦理完成後即可獲得單據。

這裡“既定的業務流程、機器人模樣的人機互動介面、雙方同意承諾”組成了智慧合約的概念,它甚至具有一定的法律效力。

薩博提出的是智慧合約的概念,以及我們舉的例子,都是廣義的智慧合約概念。智慧合約具有多種實踐形式,而在區塊領域所說的智慧合約概念,我們其實是指 Blockchain-based 這種形式。

在薩博的智慧合約概念中提到了開放式網路,而我們知道開放式網路的基本要求就是拜占庭容錯,透過前面文章的講解我們知道,區塊鏈天然具有拜占庭容錯特性。所以如果在區塊鏈上實踐智慧合約這個概念,兩者會非常契合,天造地設。

首先實踐了智慧合約這一概念的是比特幣,比特幣指令碼(bitcoin script)包含了 5 種標準交易指令碼,這些指令碼的功能不僅僅提供了普通單人支付的情況,它還提供了多方共同簽名支付的指令碼,叫做多重簽名支付,多重簽名支付可以看成是薩博語義下的智慧合約。

除了比特幣,將智慧合約這個概念發揚光大的區塊鏈專案就是以太坊了,2013 年底以太坊的創始人 Vitalik 釋出了白皮書《以太坊:下一代智慧合約和去中心化應用平臺》,並一直致力於將以太坊打造成最佳智慧合約平臺,所以說 比特幣引領區塊鏈,以太坊復活智慧合約。

智慧合約與以太坊

以太坊 Ethereum 專案的目標是打造一個去中心化的新一代網際網路應用平臺,這個平臺稱作 Dapp 平臺。  

這些 Dapp 基於以太坊智慧合約虛擬機器開發、編譯、部署,並且可以自定義業務邏輯,部署後全網可見且自動執行,理想情況下不存在宕機、審查、欺詐、第三方干預的情況。

以太坊核心概念包括:智慧合約虛擬機器 EVM 和 Solidity 程式語言、賬戶模型、以太幣和 Gas,交易和訊息。

以太坊的核心概念首先是智慧合約,智慧合約包含兩部分,一部分是開發語言,主要以 Solidity 為主,Solidity 與 Javascript 語言在使用上十分接近,這極大地降低了 Dapp 開發人員的學習成本。

Dapp 開發者編寫好程式碼以後,使用 Solidity 編譯成十六進位制位元組碼,然後部署到 EVM 上,也就是把合約廣播到全網,等礦工打包後就形成了常年執行的 Dapp 了。

另一部分就是EVM,EVM是以太坊智慧合約虛擬機器,我們可以等價理解它為 Javascript、Python 等指令碼語言的執行引擎。

它是一個輕量級的虛擬機器隔離環境,它並不提供訪問本地網路、程序、檔案系統的功能,它更像是一個封閉的容器,這個容器裡面裝了一個正在執行Dapp,可以看成是無法和外界互動的 Docker Container。

Dapp 在執行過程中,可以被請求或其他事件觸發,然後執行相應的邏輯,這些請求和事件是由以太坊上的交易產生的,不是來自本地作業系統的事件。

Dapp 執行過程中,每次狀態發生變化,則意味著全網同步更新,大家的計算結果都是一致的,這有兩個特性:

1、所有 Dapp 的計算結果經過全網共識,一旦確認過幾乎無法被偽造和篡改;
2、由於必須經過全網共識,所以這限制了整個網路的容量。

智慧合約示例程式碼

這裡以生活中常見的雙方打賭場景為切入點,寫一個簡單的合約程式碼,比如,張三和李四打賭,週末拜仁和皇馬的足球比賽誰會贏。如果拜仁贏了,張三給李四 100 元;如果反過來,李四給張三 100 元;如果打成平局,則不贏不輸。

張三和李四都怕對方不認賬,所以,他們需要找一個他們都信得過的人來做公證,兩人都把 100 元錢給這個公證人。然後,如果拜仁贏了,公證人把全部 200 元給李四;如果皇馬贏了,則全部給張三;如果是平局,則分別退還 100 元。 

上面這個模型什麼都好,就是有一個問題,這個“公證人”跑路了怎麼辦?因為他們只賭 100 元,公證人犯不著為了 200 元跑路。但是,如果有一萬人把賭金交給公證人呢?如果張三李四賭金是 100 萬呢?公證人的人性會受到極大的挑戰,他還有那麼可信嗎?針對此問題只需將雙方的賭局約定寫入智慧合約,透過智慧合約執行這一問題即可迎刃而解。

合約程式碼如下:

目前Solidity 是最受歡迎的智慧合約程式語言,如果大家致力於區塊鏈智慧合約的開發可以學習下Solidity 這門語言。

關於區塊鏈與智慧合約的誤解

誤解 1. 區塊鏈技術的主要受益者是不法分子

區塊鏈技術最初進入大眾視野的時候,基本被描述為犯罪中心,尤其是在暗網上。儘管區塊鏈逐漸作為安全業務解決方案被廣泛接受,人們還是有著區塊鏈可以讓罪犯匿名作惡的負面聯想。

然而,恰恰相反的是,大多數的公共區塊鏈都是完全可跟蹤和安全的,因為該技術可以讓公司企業跟蹤自身與客戶之間的所有資訊往來。

誤解 2. 區塊鏈不可更改不會被黑
雖然區塊鏈是公司企業可用的最安全選擇之一,然而,卻沒有哪一種系統是 100% 對駭客和更改免疫的。

理論上,區塊鏈網路中的任何個人或組織,都可以集結足夠多的挖礦資源來奪取控制權,雖然這種事情發生的可能性很低。

誤解 3. 政府可以關停區塊鏈網路
實際上,區塊鏈網路的去中心化特性決定,除非每個網路的參與者都停止使用,否則幾乎不可能關停任何一個區塊鏈網路。無法關停,正是區塊鏈技術之所以成為安全業務解決方案極佳選擇的眾多因素之一。

誤解 4. 智慧合約就是具有法律約束力的合同
事實上,智慧合約只是程式裡的一段程式碼,按照交易雙方之間的協議說明執行。它沒有任何法律的約束力,而且它們也只能在區塊鏈的網路中存在。與其將智慧合約看作是真正的合同,不如說它們更像是某種安全工具。

誤解 5. 智慧合約操作完全自治
有些人認為,智慧合約是完全自治的,能夠自主分析自身環境並響應任何修改。事實上,智慧合約之所以是安全解決方案的原因之一,就在於它們只會在收到交易或訊息時執行。

誤解 6. 所有智慧合約都有相同特徵
很多人對於區塊鏈技術和智慧合約都有的誤解是,世界上就一種區塊鏈技術或者只有一種智慧合約。其實,根據所依託的區塊鏈網路不同,智慧合約的功能特性完全不同。

免責聲明:

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

推荐阅读

;