智慧合約並不智慧,炒作背後的真相是什麼?

買賣虛擬貨幣

就像“區塊鏈”、“人工智慧”、“雲”這些聽起來就高深莫測的詞一樣,“智慧合約”也是容易被用來炒作的概念。試想一下,所有的事情都能不透過司法系統就能如願執行,還有什麼比這個更好的事兒呢?

智慧合約被很多人誇讚,畢竟,如果除去第三方信任的需要,很多事情都會高效起來。但是,智慧合約真這麼厲害還需要法院做什麼?

除去炒作的外衣,下面這篇文章將向大家闡述,為什麼智慧合約很難?以及哪些應用場景非它不可?

簡單點說,智慧合約是什麼?

我們先來說說普通的合約,它是指兩個或兩個以上的當事人之間的協議,用來約束他們在未來將發生的某些事。比如說,小明給小張一筆錢,換取小張房子的使用權(也就是房屋租賃);小明每個月給小張一筆錢,不管小明的車以後出什麼毛病,他都會給他修理(也就是汽車保險)。

智慧合約的不同之處就在於:它的評估和執行都是靠計算機程式碼完成的。所以,小明給小張500塊,讓小張三個月後給他一張沙發,那麼計算機就要確定執行條件(小明給小張500塊了沒有?已經到三個月的期限了嗎?),如果符合,就直接執行交割,不會給任何一方退出、停止合約的機會。

智慧合約的關鍵點在於去信任執行,也就是它不需要依賴第三方就能執行各種合約。不需要等著別人兌現承諾,也不需要等著律師和法律來解決問題,就能及時、客觀地執行既定的事情。

為什麼說智慧合約挺笨的?

使用“智慧”這個詞並不意味著它比普通合約“聰明”多少。也正是因為它不需要第三方就直接執行的特質,它們只會把那些不付錢的租房者鎖在公寓外面,而不是協商之後實在沒有辦法才把他們趕出去。

一份真正“聰明”的智慧合約,應該考慮到所有情有可原的情況,即使在情況不明朗的時候也能做出公平的裁決,換句話說,“聰明”的智慧合約應該像一位公正明智的法官。

相反,智慧合約根本就不智慧。它非常“死板”,只知道遵守規則,完全不會考慮其他合乎情理的因素或人道主義。這麼看來,一旦使用智慧合約就意味著不能有任何模稜兩可的餘地。

智慧合約真的很難

由於以太坊的大量炒作,人們誤以為智慧合約只存在在以太坊中。事實上,在1995年,智慧合約就已經存在了。在2009年比特幣誕生之初,就存在一種十分廣泛的智慧合約語言——指令碼。比特幣的智慧合約和以太坊的區別在於以太坊是圖靈完備的(可以理解成在它能解決任何可計算的問題)。也就是說,以太坊的智慧合約語言支援更復雜的合約,但代價是程式碼會更難分析。

雖然合約允許複雜的情況存在,但執行起來不一定保證能不出錯。即使是普通的合約,越複雜,執行起來就越難,因為複雜性增加了很多不確定性和程式碼解釋的空間。

對於複雜的智慧合約,要保障安全性,就意味著要提前測試、處理所有可能發生的情況,並確保合約遵循作者的意願,而這一點非常棘手。要保證智慧合約圖靈完備,相當於要保證計算機程式沒有bug。這太難了,因為現在幾乎所有的計算機程式都擁有bug。

想想在現實生活中,寫一份邏輯正確、不出錯的合同,得經過多少年的學習和積累才能勝任,要碼出一份完美的智慧合約至少也需要這種水平才行,但目前區塊鏈行業有太多新手,從各種駭客攻擊的事件中我們就能看出這一點。

比特幣解決這個問題的方法就是放棄圖靈完備,這使得程式更容易檢查,合約更容易分析。而以太坊的解決方式就是把負擔放在智慧合約編寫者身上,需要他們一遍遍地檢查、測試,才能達到真正意圖。

智慧合約不是真正的合約(至少在ETH上)

雖然理論上將合約的責任留給編寫者聽起來不錯,但在現實中,這已經產生了一些嚴重的中心化後果。

以太坊推出了“程式碼即是法律”的說法。合約是權威的,任何人都無法否認。那麼從某種意義上說,如果開發者搞砸了自己的智慧合約,是他們罪有應得。直到著名的“DAO事件”,事情就不一樣了。

DAO是一個“去中心化的自治組織”,他們在以太坊上建立了一個基金會,使用者可以投入資金來購買代幣,然後向DAO諫言獻策該如何使用這筆錢。當ETH的價格在20美元左右時,DAO籌集了1.5億美元的ETH。

但是,由於程式碼有缺陷,導致有駭客找到漏洞,盜走DAO裡面的資金。以太坊為了不眼睜睜地看著駭客盜走資金,決定程式碼不再是法律,並將所有進入DAO的資金還原。合約編寫者和投資者做了一些愚蠢的事情,以太坊開發者卻決定為他們緩解難題。也是因為這件事兒,以太坊經典誕生了,並保留了“程式碼及法律”這一原則。

此外,因為圖靈完備很難實現,開發者紛紛開始迴避這種語言,ERC20和ERC721標準是以太坊中最常用的智慧合約模板,兩種型別的合約都可以在沒有任何圖靈完備的情況下編寫。

智慧合約僅適用於不記名數字資產

畢竟誰都不喜歡上法庭解決問題,即使沒有圖靈完備,智慧合約聽起來也還不錯。但是,使用智慧合約真的就比普通合約要簡單嗎?

比如說,智慧合約用於房地產時,小明可以證明房子的所有權,小張可以用錢買房子的所有權。不需要第三方背書、無需保險機構、不需要法官,所有的一切都能靠機器執行。聽起來很棒,對嗎?

但有兩個問題。首先,由中心化機構執行的智慧合約,它並不能被稱為“去信任執行”,你仍然需要信任這個中心化機構。而不需要第三方背書是智慧合約的關鍵特性,為了使智慧合約真正達到“去信任執行”,就需要一個完全去中心化的平臺。

這就引出了第二個問題。在去中心化的情況下,只有在數字世界和現實世界之間存在某種明確的聯絡時,智慧合約才可行。打個比方,當一座房子在數字世界的所有權發生變動時,現實世界也必須變動所有權。這種對應變動的情況,被稱為“預言機問題”

當小明把房子賣給小張時,智慧合約需要知道,她在現實世界中房子到底有沒有成功過轉讓出去。要做到這一點,就需要一些可信任的第三方來驗證現實世界的情況。

比如,小明把房子轉化成以太坊上的ERC721代幣,然後透過交易將代幣轉給小張。問題來了,小張要怎麼相信這個代幣就是房子的所有權?這時必須要有一些“預言機”出來擔保這枚代幣的背後就是房子的所有權。

此外,即使有權威第三方表示這枚代幣就是代表房子,那如果代幣被盜,會發生什麼呢?房子屬於小偷了嗎?如果代幣丟失怎麼辦?房子不能再出售嗎?這個房子的代幣可以重新發售嗎?如果是這樣,誰有這個權利?

在去中心化的應用場景中,無論是水果、汽車還是房子,將數字資產與實物資產聯絡起來都是一個棘手的問題。實物資產受現實法律監管,這意味在智慧合約中有效,不一定在現實中有效,說白了,還是要依賴第三方。即使是電子書、醫療記錄、電影等數字資產也會遇到同樣的問題,這些數字資產的“權利”最終由其他權威第三方機構或“預言機”來決定。

從這個角度來看,“預言機”是虛擬世界的簡化版法官。除了面臨機器強制執行的規則,你還要面臨複雜的程式碼風險、人為的主觀風險。換句話說,籤一份智慧合約,意味著要相信複雜的程式碼不會出錯,還要信任某人或某個組織有不出錯的能力。

唯一不需要“預言機”還能正常工作的就是不記名數字資產。從本質上講,被交易的資產不僅需要是數字化的,它的所有權還不能依賴智慧合約以外的平臺。只有這種情況,智慧合約才能在無需信任的基礎上被執行。

結論

大家都希望智慧合約能最大程度地發揮它的作用,但多數合約中包含了太多假設和不清晰的判斷體系。除此之外,事實證明圖靈完備的智慧合約並不好用,它很容易透過各種意外把事情搞砸。我們應該給智慧合約平臺標記為容易受攻擊的標籤,而不是圖靈完備的標籤。“DAO事件”的回滾也證明合約的隱形信任”精神“,可以解決比我們想象中還要多的爭議。

智慧合約真的很難,很難保證事情不被搞砸,很難完完全全實現“無需第三方的信任”,這也導致它無法大規模應用,目前真正能運用到的場景還只是像比特幣這樣的去中心化平臺的不記名數字資產,智慧合約的未來還有很長的路要走。

免責聲明:

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

推荐阅读

;