區塊鏈上智慧合約的講解

2020-10-20 12:00:28

智慧合約

  • 智慧合約是在區塊鏈上執行的應用或者程式。通常情況下,智慧合約是一組具有特定規則的數位化協定,且這些協定能夠強制化執行。這些規則由計算機程式碼預先定義,所有節點會複製和執行這些計算機原始碼。
  • 智慧合約不需要依靠雙方互相信任的前提,只需要雙方根據事先協商好的內容形成合約,在特定的觸發條件下執行合約,省略了對於第三方中介的需求,從而降低了運營的成本。
  • 簡單的講,智慧合約是一個確定性的計劃。當滿足某些條件的時候,則會執行特定的任務。因此,智慧合約系統通常遵循「if...then...」的條件語句。智慧,僅僅體現在它可以自動執行,不需要人工參與。
  • 再次精簡:當我們設定銀行自動還款,這樣每到還款日,銀行賬戶會自動從餘額中扣除固定的金額轉給信用卡,如果銀行賬戶錢數不夠那麼付款就會失敗,將會觸發另外一套工作流程。智慧合約也依據這個邏輯自動化執行,除了智慧合約是部署在區塊鏈上,由多方執行,而不是單方控制。

智慧合約的特徵

  • 分散式。智慧合約在以太坊網路的所有節點中被複制和分發,這種方式與基於中心化伺服器的其他解決方案區別顯著。
  • 一致性。在滿足要求的情況下,智慧合約僅執行其預先設計的操作。而且,無論任何節點執行,結果都是一致的。
  • 自動化。智慧合約可以自動執行各種任務,就像自動執行程式一樣。但是,在大多數情況下,如果未觸發智慧合約,它將保持「休眠」狀態,並且不會執行任何操作。
  • 不可篡改。智慧合約一經部署,則無法更改。只有預先實現了特定功能,才能執行「刪除」。因此,我們可以說智慧合約可以提供防篡改程式。
  • 客製化化。在部署之前,智慧合約可以通過多種不同方式進行編碼。因此,它可用於建立許多不同的分散式應用程式。這與以太坊具有圖靈完備的區塊鏈特徵相關。
  • 無需信任。兩方或多方可以通過智慧合約進行互動,而無需相互瞭解或取得信任。此外,區塊鏈技術可確保資料準確無誤。
  • 透明性。由於智慧合約基於公有區塊鏈,因此其原始碼不僅不可篡改,而且對任何人都是透明的。

智慧合約更改或者刪除

  • 以太坊智慧合約一經部署,則無法再繼續新增新功能。但是,如果其合約建立者在程式碼中預留了名為SELFDESTRUCT的函數,那麼將來可以「刪除」智慧合約,也可以用新的合約替換它。如果未在合約程式碼中預留該函數,則它們將無法被刪除。
  • 值得注意的是,所謂的可升級智慧合約支援開發人員在不可篡改方面擁有更大的靈活性。有許多方法可以建立可升級的智慧合約,每個合約都可具有不同程度的複雜性。
  • 舉一個簡單的例子,我們假設將智慧合約分為多個較小的合約。其中一些被設計為不可變更的,而另一些則啟用了「刪除」功能。這意味著可以刪除和替換部分程式碼(智慧合約),而其他功能保持不變。

侷限性

  • 智慧合約由人工編寫的計算機程式碼組成。這也帶來了許多風險,程式碼容易受到攻擊和漏洞的影響。理想情況下,它們應由經驗豐富的程式設計師編寫和部署,特別是涉及敏感資訊和大量資金時。
  • 除此之外,有人認為中心化的系統也可以提供智慧合約的大部分解決方案和功能。主要區別在於智慧合約在分散式的對等網路中執行,而不是執行在中心化伺服器上。因為它們基於區塊鏈系統,所以它們往往是不可篡改的。
  • 在某些情況下,智慧合約的不可篡改性優勢明顯,但其他情況下卻很糟糕。例如,由於其智慧合約程式碼存在缺陷,名為「The DAO」的分散式自治組織(DAO)在2016年被駭客攻擊時,損失高達數百萬枚以太幣(ETH)。由於他們的智慧合約是不可變更的,開發人員無法修復程式碼。這最終導致出現了硬分叉,誕生了第二個以太坊鏈。簡而言之,一條鏈進行「回退」,並將資金返還給了合法的所有者(這是當前以太坊區塊鏈的一部分)。而另一條鏈決定不受此次攻擊影響,堅持區塊鏈上發生的事情永遠不可改變(這個鏈現在稱為以太坊經典)。需要注意的是,造成該問題並不是以太坊區塊鏈的原因,它是由智慧合約的錯誤執行所引發的。
  • 智慧合約的另一個限制與其不確定的法律地位有關。智慧合約在大多數國家仍處於灰色地帶,且不適應當前的法律監管框架。例如,許多合約都要求交易雙方彼此實名認證且超過18歲。但區塊鏈技術提供的匿名性,加上缺乏中間人,可能會影響這些要求。雖然有潛在的解決方案,但目前看,智慧合約的法律可執行性是一項真正的挑戰,尤其是在沒有邊際的分散式網路中。

圖片

參考連結