跳至主要內容

程式碼即法律?智能合約解析

透過以太坊上的智能合約與去中心化金融 (DeFi) 的視角,探索「程式碼即法律」的概念。本影片涵蓋了智能合約是什麼、它們如何運作,以及程式碼是否應成為最終仲裁者的哲學問題。

Date published: 2020年11月18日

這是一部由 Finematics 製作的解說影片,透過以太坊上的智能合約視角探索「程式碼即法律」的概念,涵蓋了智能合約是什麼、它們如何運作、相較於傳統合約的優勢,以及為什麼它們是去中心化金融 (DeFi) 的基礎建構區塊。

本逐字稿是 Finematics 發布的原始影片逐字稿 (opens in a new tab)的無障礙副本。為了提升閱讀體驗,已進行了輕微的編輯。

簡介 (0:00)

你是否聽過「程式碼即法律」這種說法,也就是利用科技來執行規則?在這種情況下,我們還需要律師嗎?或者我們可能生活在一個完全自動化的世界裡,由程式碼決定我們能做什麼和不能做什麼。隨著目前智能合約的發展,這種未來場景可能比我們想像的還要近。

智能合約是一段可以自動且以確定性方式執行的程式碼。智能合約的程式碼通常儲存並執行於區塊鏈上,使其無須信任且安全。智能合約還具備接收、儲存和發送資金的能力——甚至可以呼叫其他智能合約。它們遵循「若...則... (if-then)」的語意,這使得它們相當容易編寫。

智能合約旨在消除決策過程中的人為因素。人為因素通常被證明是標準傳統合約中最容易出錯且最不可靠的元素。

自動販賣機經常被用來作為智能合約的絕佳比喻,因為兩者有一些相似之處。典型的自動販賣機的程式設計方式,允許根據輸入執行特定動作和狀態轉換。它也以完全確定性的方式運作。例如,如果你想買一罐兩美元的可樂,但你只有一美元,無論你嘗試多少次,你都無法得到飲料。另一方面,如果你投入三美元,機器會給你一罐可樂並找零。甚至找零的方式也是根據可用的硬幣以及機器想優先消耗哪些硬幣,以預先定義和程式化的方式來選擇的。

智能合約可以完全依賴區塊鏈上可用的資訊——例如,「如果你給我十個代幣 A,我就給你十個代幣 B」。或者它可以依賴外部資料來源,例如 ETH 或標準普爾 500 指數的價格。後一個例子讓智能合約變得更加困難,因為它們必須信任現實世界的資料。透過使用預言機服務可以將所需的信任降至最低,但即使是預言機服務也必須被信任。目前已經有一些專案透過使用特定的激勵措施,使預言機更有可能提供正確的資料。切林克 (Chainlink) 就是在這個類別中脫穎而出的專案。

以太坊智能合約 (3:09)

以太坊是一個支援智能合約的區塊鏈,讓程式設計師能夠實作自己的智能合約。智能合約可以使用名為 Solidity 的程式語言來編寫,該語言是專門為此目的而創建的。在以太坊中,所有部署的智能合約都是不可變的——這意味著一旦部署,它們就無法被修改,這會產生某些我們稍後將討論的風險。

以太坊上的智能合約也是去中心化的,這意味著沒有單一機器控制該合約。事實上,以太坊網路上的所有節點都儲存著具有完全相同狀態的同一個合約。雖然以太坊目前是最受歡迎的通用智能合約平台,但它並非唯一一個,它有一些競爭對手,包括 Cardano、Tezos、EOS 和 Tron——但並非所有競爭對手都具有相同的特徵。

智能合約定義 (4:23)

「智能合約」一詞是由著名密碼學家尼克·薩博 (Nick Szabo) 在 1990 年代初期創造的。這個名稱雖然不是最不言自明的,但卻被保留下來並被廣泛使用,尤其是在區塊鏈產業中。為了了解智能合約的好處,讓我們將一個假設的智能合約與傳統領域中的同等事物進行比較。

智能合約範例 (4:46)

假設我們想編寫以下合約:如果 Alice 發送 X 數量的代幣 A,而 Bob 發送相同數量的代幣 B,這些代幣將被兌換——Alice 將收到 Bob 的代幣,而 Bob 將收到 Alice 的代幣。

在一個沒有智能合約的世界裡,要在 Alice 無須信任 Bob 且 Bob 無須信任 Alice 的情況下實現這一點,其中一種方法是與第三方建立一個託管合約。第三方將從 Alice 那裡收集代幣 A,等待 Bob 提供相同數量的代幣 B,然後將各自兌換後的代幣發送給 Alice 和 Bob。

智能合約問題 (5:45)

這種方法已經顯示出 Alice 和 Bob 可能面臨的一些問題:

  • 信任中介機構——無法保證第三方在收到 Alice 和 Bob 的資金後不會捲款潛逃。我們必須依賴中介機構的聲譽和潛在的保險。
  • 非確定性結果——如果出現問題,可能會根據多種因素產生不同的結果,包括潛在案件解決的司法管轄區。

另一方面,智能合約將以完全自動化和確定性的方式運作,確保雙方在滿足存入代幣的初始條件時都能收到資金。智能合約還可以在其內部持有資金,這在傳統世界中是無法實現的。

速度 (6:47)

根據中介機構的不同,Alice 和 Bob 可能需要等待幾天甚至幾週才能結算代幣的轉移。如果他們想在星期天兌換代幣,而中介機構沒有營業怎麼辦?有了智能合約,這類問題就會消失,合約可以在滿足初始條件後的幾秒鐘內履行。

成本 (7:16)

傳統合約之所以昂貴,不僅是因為中介機構必須獲利——如果合約出現任何問題,仲裁和執行等方面也存在巨大的隱藏成本風險。

可重複使用性是另一個優勢:負責兌換 Alice 和 Bob 代幣的同一個智能合約,可以被任何其他想要兌換代幣的人使用。在傳統世界中,他們都必須簽署獨立的合約,並向中介機構支付各自的費用。

詐欺 (7:58)

詐欺是另一個隱藏成本,這次是針對中介機構本身。中介機構必須在啟動兌換之前確保 Alice 和 Bob 的代幣都是合法的。詐欺在傳統金融中非常普遍,大多數公司都有龐大的團隊專門致力於防止詐欺。有了智能合約,代幣可以在區塊鏈上進行驗證,而且透過數位簽章,可以立即清楚地知道 Alice 和 Bob 是否有資格花費他們的代幣。

使用案例 (8:42)

智能合約的使用案例不斷增加,範圍從支付和去中心化金融 (DeFi) 到供應鏈和群眾募資。智能合約也是去中心化應用程式 (dapp) 的基礎建構區塊。

去中心化金融 (DeFi) (9:07)

去中心化金融 (DeFi) 是嚴重依賴智能合約的新興產業之一。在這個領域中已經建立的一些事物包括:

  • 去中心化穩定幣——透過巧妙地使用智能合約和特定的激勵措施,我們可以創建與美元掛鉤的穩定幣,而無須在現實世界中儲存美元。MakerDAO 就是實現這一目標的專案之一。
  • 自動化流動性提供——一組智能合約可以允許使用者以完全無需許可和去中心化的方式提供流動性並兌換代幣。尤尼斯瓦普 (Uniswap) 和 Kyber Network 就是此類協定的好例子。

群眾募資與供應鏈 (10:05)

另一個使用案例是為供應鏈提供更高的透明度,這正是像 OriginTrail 這樣的協定發揮作用的地方。談到群眾募資,你可以想像一個合約,一旦達到特定目標並經過社群驗證,就會解鎖資金。

未來的智能合約 (10:29)

如果智能合約能夠促進共乘、公寓租賃等更多事務呢?慈善事業又如何?你可以想像一個完全自動化的基金,將資金直接發送給最需要的人,而沒有任何中介機構。例如,該基金可以確定某個地區遭受了颶風襲擊,並將資金重新導向世界上的那個地區。目前,這聽起來似乎不太可能,但實現這類目標的所有必要元素正在建構中。

智能合約的使用案例幾乎是無限的,但在我們實現這一切之前,我們必須解決幾個問題:

  • 錯誤 (Bugs)——談到智能合約時,主要風險之一是困擾著所有其他軟體的問題。最好的例子是 The DAO 駭客事件,由於攻擊者能夠從智能合約中抽乾資金,導致價值數百萬美元的以太幣損失。這導致以太坊進行硬分叉,並在以太坊社群中產生了許多分歧。自 The DAO 駭客事件以來,以太坊社群提出了許多額外的安全措施。如今,幾乎所有受歡迎的智能合約都經過了安全審計,通常是由多個團隊進行。目前也有一種趨勢,即使用形式化驗證方法來證明某些合約將始終以預期的方式運作。
  • 協定變更——即使智能合約沒有任何錯誤並且已經過審計,我們仍然無法保證平台層級的變更不會引起問題。協定本身的升級可能會導致某些智能合約開始表現出與預期不同的行為。
  • 現實世界資料——預言機服務可以提供一種可靠的方式,將現實世界的資訊引入區塊鏈。但想像一下,你租了一間公寓或一輛車,並造成了一些意外損壞。在沒有任何人工干預的情況下,智能合約怎麼可能知道這件事?有許多例子讓人難以想像,現實世界中發生的意外事件如何能被智能合約所察覺。

除了上述問題之外,還存在涉及法規和稅務的風險,但這些最終都可以被解決。

我們能取代律師嗎? (13:58)

那麼我們真的能用程式碼取代律師嗎?不完全是——至少現在還不行。在未來,越來越多的合約可能會被自動化,尤其是在金融領域。但即使在一個完全自動化的世界裡,律師也能提供可以轉化為程式碼的寶貴知識。圍繞著加密貨幣產業也有許多監管挑戰,這將讓律師們忙碌好一陣子。儘管如此,如果我是一名律師,我會開始學習智能合約和程式設計,因為它們在未來將扮演重要的角色。

總結 (14:53)

智能合約的優點:

  • 完全自動化
  • 確定性結果
  • 無須信任
  • 快速、精確且安全
  • 具成本效益且透明

智能合約的缺點:

  • 軟體錯誤
  • 協定變更
  • 法規與稅務的不確定性

儘管智能合約帶有某些風險,但我們仍處於非常早期的階段,而且目前的大多數問題都是可以解決的。

這個頁面對您有幫助嗎?