智能合約很傻?聽 Jimmy Song 揭開智能合約的真相區塊鏈
審視智能合約的內涵以及與之相關的工程現實,能發現它沒那么簡單,安全性也很難保證。
就像「區塊鏈」、「AI」和「云」這樣的詞語一樣,「智能合約」也是一個時髦詞兒。
畢竟,篤信合約必然能在不動用司法力量就能精準執行,這種感覺實在是太好了。智能合約的承諾包括:
自動、去信任和公正地執行合同
在合同建設、合同執行和合同強制實施方面消除中間人
擺脫律師的存在
我對當下的熱情感同身受。畢竟,如果無需信任對方就能執行合同,那么我們做事的效率將會得到多大的提升?
說到底,智能合約究竟是什么?而且那不是以太坊的領域嗎?這不是未來的方式嗎?
在本文中,我將審視智能合約的內涵以及與之相關的工程現實 劇透:它沒那么簡單,安全性也很難保證。
什么是智能合約?
普通合同是在兩個或更多方之間達成協議,將他們與未來的某些東西聯系起來。愛麗絲可能會向鮑伯支付一些錢以換取使用鮑伯的房子的權利,即租金。查理可能會同意修復丹尼斯汽車在未來發生的任何損壞,以換取丹尼斯每月的付款,即汽車保險。
「智能」合約的不同之處在于條款由計算機代碼評估和執行,實現了去信任的目標。如果愛麗絲同意現在向鮑伯支付 500 美元,用于購買 3 個月后交付的沙發 即沙發期貨,那么一些代碼可以確定在條款得以滿足的情況下 愛麗斯是否付了鮑伯錢?3 個月到了嗎?予以執行 由托管方交付沙發,任何一方都沒法反悔。
智能合約的關鍵特征是它具有去信任的執行力,也就是說,你不需要依賴第三方來執行各種條件。智能合同會執行應該及時和客觀發生的事情,而不是指望另一方兌現承諾,甚至更糟,依靠律師和法律制度來糾正錯誤。
智能合約其實很傻
使用「智能」一詞意味著這些合同具有一些與生俱來的智慧。它們并沒有。合同的「智能」之處在于不需要對方配合就能執行協議。一個「智能」的合約可以把欠費的房客鎖在他們的公寓門外,但是卻不能想辦法將拖租的房客給踢出去。智能合約的強大之處在于它能對商定后果予以執行,而不在于合同天生擁有什么智慧。
真正智能的合同會考慮到所有情況,尊重合同的精神,即使在最黑暗的情況下也要做出公平的裁決。換句話說,一個真正智能的合同扮演的是一個好法官的角色。可是在這種情況下,「智能合約」根本不是智能的。它實際上是逐句逐句完全按照規則辦事,完全不能將任何次要因素或法律的「精神」納入考量中。
換句話說,要求合約無需信任,意味著合約中完全不能有任何模棱兩可的空間,這就引出了下一個問題。
智能合約真的很難寫
由于以太坊的大量集中營銷,人們錯誤地認為智能合約只存在于以太坊中。這不是事實。
比特幣從 2009 年開始就有一種應用非常廣泛的智能合約語言,叫做 Script。事實上,智能合約早在 1995 年就存在了,那時候比特幣還沒影子呢。比特幣的智能合約語言與以太坊的區別在于以太坊是圖靈完備的。也就是說,以太坊的智能合約語言 Solidity 令更復雜的合同成為可能,但卻使它們更難以分析。
復雜性有一些重大后果。雖然復雜的合同可以包容更復雜的情況,但復雜的合同也很難確保安全。即使在普通合同中,合同越復雜,執行也會越難,因為復雜性會增加更多的不確定性和解釋空間。通過智能合約,安全意味著可以以所有可能的方式執行合同,并確保合約符合撰寫者的意圖。
圖靈完備環境中的執行極其棘手且難以分析。確保圖靈完備的智能合約相當于證明計算機程序沒有任何漏洞。我們知道這也太難了,因為現有的幾乎所有計算機程序都存在漏洞。
想想看,需要多年的學習、通過艱深的律師執業資格考試,才能勝任撰寫普通合同的工作。寫智能合約至少需要達到這種能力水平,但目前許多智能合約都是由不了解安全性要求的新手編寫的。從各種已被證明存在缺陷的合同中可以清楚地看出這一點。
比特幣解決這個問題的方法就是干脆放棄圖靈完備。這使得合同更容易分析,因為更容易枚舉和檢查程序的可能狀態。
以太坊的解決方案是將重任推到智能合約編寫者身上。合同編寫者需要確保合同符合其意圖。
智能合約不是真正的合約 至少在以太坊上
在理論上,將保證合同安全的責任留給作者看上去很美,但在實踐中,這已經產生了一些嚴重的中心化后果。
以太坊推出了「代碼即法律」的想法。也就是說,以太坊的合約是終極權威,任何人都無法否決合約。這個想法的用意是向智能合約開發者表明,他們每個人都是獨立的。如果你搞砸了自己的智能合約,那么從某種意義上說,一切都是你自找的。當 DAO 事件發生時,這種局面戛然中止。
DAO 代表「去中心化的自治組織」,它在以太坊創建了一個基金,用以展示這個平臺的能力。用戶可以向 DAO 存款并基于 DAO 的投資獲得回報。決策本身是眾包和去中心化的。當 ETH 交易價格在 20 美元左右時,DAO 在 ETH 籌集了 1.5 億美元。這在理論上聽起來都不錯,但是有一個問題:代碼并不是十分安全,導致有人找到了一種方法抽干了 DAO 的錢包。
許多人稱這個掏干了的 DAO 的人是「黑客」。從某種意義上說,「黑客」找到了一種以違背撰寫者意圖而從合同中取錢的方式,這是事實。但從更廣泛的意義上講,這根本不是黑客,只是利用智能合約中的特性來為自己的利益服務。這與一個挺有想法的注冊會計師找出稅收漏洞為客戶節省資金并無太大差別。
接下來發生的事情是,以太坊現在認為代碼不再是法律了,全數返還了存入 DAO 的資金。換句話說,合約編寫者和投資者做了一些愚蠢的事情,而以太坊開發人員決定出頭當上帝。
這一事件的后果已有詳細記錄。以太坊經典誕生了,DAO 的錯誤沒有人為回滾,保留了「代碼即法律」的原則。此外,開發人員開始回避使用以太坊的圖靈完備屬性,因為它被證明很難確保安全。ERC20 和 ERC721 標準是以太坊中最常用的智能合約模板,而且需要指出的是,兩種類型的合同都可以在沒有任何圖靈完備的情況下編寫。
智能合約僅適用于數字化無記名票據
即使沒有圖靈完備,智能合約聽起來也不錯。畢竟,誰喜歡為了獲得本應屬于他們的東西,還非得打一場官司?使用智能合約不是比普通合同更容易使用嗎?
例如,智能合約是不是能使房地產受益?愛麗絲可以證明她擁有這所房子。鮑伯可以支付房款并換取房子。不存在所有權疑問,無需信任,由機器快速執行,無需法官、官僚體系,也不用買什么產權保險。聽起來很棒,對嗎?
這里有兩個問題。首先,由中心化組織執行智能合約時,并非真正去信任。你仍然只能選擇信任中心化組織。可是智能合約的關鍵特性正是去信任,因此中心化執行根本說不通。為了使智能合約真正無需信任,你需要一個真正去中心化的平臺。
這引出了我們的第二個問題。在去中心化的環境中,只有在數字版本和物理版本之間存在某種明確的聯系時,智能合約才有效。也就是說,每當房屋所有權的數字版本發生變更時,所有權的物理版本也必須變更。數字世界需要「了解」物理世界。這被稱為「預言機問題」Oracle problem。
當愛麗絲將房子轉讓給鮑伯時,智能合約需要知道她確實將房子轉讓給鮑伯。有幾種方法可以做到這一點,但它們都有同樣的基本問題:必須信任某些第三方,以驗證物理世界中的事件。
例如,房子可以在以太坊上表現為不可替代的令牌。愛麗絲可以通過原子交換將房子轉讓給鮑勃以獲得一定數量的 ETH。而這正是問題所在:鮑伯需要相信該令牌確實代表了房子。必須有某種「預言機」確保轉移給他的房屋令牌確實意味著房子成為了他的合法財產。
此外,即使政府當局認同令牌實際上代表房屋,可是如果令牌被盜會發生什么呢?房子現在歸小偷所有了嗎?如果令牌丟失怎么辦,房子就再也不能出售了嗎?房屋令牌可以重新簽發嗎?如果是這樣,由誰來負責簽發?
將數字資產與實物資產聯系起來存在一個棘手的問題,無論是水果、汽車還是房屋,它們都處在去中心化的環境中。實物資產受到你所在地區的管轄,這意味著除了你創建的智能合約之外,它們在某種意義上還需要信任別的某些東西,也就是說擁有智能合約并不一定意味著在現實世界中擁有對同一事物的所有權,而且跟普通合同一樣要碰到信任問題。需要信任第三方的智能合約也就消除了它原本去信任的殺手特性。
即使是電子書、病歷或電影等數字資產也會遇到同樣的問題。這些數字資產的「權利」最終由其他權威機構決定,預言機需要獲得信任。
從這個角度來看,預言機只是扮演低配版的法官角色。你得到的并不是機器執行和簡易強制執行,而是必須使用主觀性和人類判斷風險對所有可能結果進行編碼的復雜性。換句話說,通過使合同變得「智能」,你在撰寫合同的同時就必須去信任某一方,這使得編寫過程反而更加復雜了。
唯一不需要預言機就可以獨自運作的是數字化無記名票據。從本質上講,交易雙方不僅需要數字化,而且合約標的必須是無記名票據。也就是說,令牌的所有權不能具有智能合約平臺之外擁有依賴性。只有當智能合約持有數字化票據時,智能合約才真正去信任。
結論
我希望智能合約比目前看起來更有用。可惜,我們人類似乎都認為,但凡一提到合同,與之相應的必然是一大堆假設和既定的判例法。
此外,事實證明使用圖靈完備可以輕輕松松搞砸智能合約并導致各種意外。智能合約平臺哪兒是圖靈完備,簡直是圖靈脆弱。 DAO 事件也證明合同的「精神」是隱含信任的,并且比我們意識到的更有助于解決糾紛。
智能合約簡直太容易搞砸,太不可靠,太難以實現去信任化,并且大多數事情都得借助外力。所以在我看來,只有在一個應用場景,智能合約確實提升了去信任化,那就是比特幣等去中心化平臺上的數字化無記名票據。
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。