每日最新頭條.有趣資訊

概念炒作的背後,“智能合約”的真相是什麽?

編者按:本文編譯自Medium,作者Jimmy Song,原文標題The Truth about Smart Contracts。

就像“區塊鏈”,“AI”和“雲”一樣,“智能合約”也是如今收到熱捧的新概念。

試想一下,有什麽能比相確信合約在未來會按照約定被執行而不需要任何司法介入更好? 智能合約的承諾包括:

合約可以被自動地、無需信任地和公正地執行

在合約制定,履行和強製執行過程中取消中間人

或許不再需要律師

我能夠理解智能合約為何會被熱炒。 畢竟,如果我們不需要擔心對方是否會按照約定履行合約,那麽很多事情的效率會大大提高。

話說,到底什麽是智能合約? 這是源於以太坊的概念麽? 這是未來合約訂立的方式麽?

在這篇文章中,我將探究智能合約的種種細節以及與之相伴的“工程現實”問題(劇透:它並不簡單,並且很難保證可靠性)。

什麽是智能合約?

正常的通常意義上的合約是雙方或多方之間的協定,將他們約束在未來發生的某些事物上。 譬如,Alice可能會向Bob支付一些錢來使用Bob的房屋(又名租金)。 Charlie可能會同意修複對Denise的汽車未來發生的任何損壞,作為回報Denise每月向Charlie支付一筆費用(又名汽車保險)。

所謂“智能”合約,其不同之處在於合約的所有條款都是由電腦代碼評估和執行的,這使得它無需任何信用背書。 因此,如果Alice同意支付向Bob支付500購買沙發,交貨期為3個月。則通過電腦代碼可以判斷合約的某些條款是否成立(Alice是否付款給了Bob?3個月的交貨期是否到期?)並執行合約 (將託管下的沙發交付給Alice);合約雙方都沒有反悔的權利。

智能合約的關鍵特點是它的執行力不依賴任何信用背書。 也就是說,你不需要依賴第三方來執行各種條款。 既不需要依靠對方對合約的履行言行一致,也不需要在合約執行出現問題時依靠律師和法律制度來糾正事情;智能合約可以及時客觀地執行合約約定的各個事項。

智能合約非常“傻瓜“

使用“智能”一詞意味著這些合約具有某種天生的智慧。 然後事情並非如此。 所謂”智能“的部分在於合約的執行不依賴任何一方的合作。 相比把拖欠房租的租客請出房子,一個“智能”的合約會直接將沒有按時付款的租客鎖在房子外面。 對於合約約定後果的無條件執行是智能合約顯得強大有力的原因,而不是智能合約具有天生的智慧。

一個真正意義上的智能合約應當考慮到所有情有可原的情況,著眼於契約精神,即便在情況非常不明朗的條件下也試圖做出公平的裁決。 換句話說,一個真正的智能合約就像一個非常好的法官。 與之相反,現實中的智能合約非常不智能。 它事實上只是基於規則並嚴格按照規則行事,不能將任何次要因素或法治精神考慮在內。

換句話說,由於智能合約不依靠任何信用背書,同時也意味著合約的訂立不能有任何模棱兩可的太空。這一點引發了下一個問題。

擬定智能合約非常困難

由於以太坊大量的宣傳,使得人們錯誤地認為智能合約只存在於以太坊。 然而事實並非如此。 2009年伊始,比特幣就已經擁有了一種被廣泛使用,名叫Script的語言來擬定智能合約。 事實上,智能合約的存在可以追溯到1995年,要早於比特幣。比特幣的智能合約語言同以太坊版本的區別在於以太坊的語言具有圖靈完備性。 也就是說,以太坊的Solidity語言允許更複雜的合約,其代價是會增加分析難度。

這種語言的複雜性帶來了一些重大的後果。 雖然複雜的合約可以允許更複雜的情況,但複雜的合約也很難保證安全。 即使是普通的合約,實施難度也會因為複雜性的提高而加大;因為複雜性帶來了更多的不確定性和解釋太空。 憑借智能合約,確保安全意味著處理合約可能被執行的所有可能方式,並確保合約執行符合擬定者的意圖。

執行具有圖靈完備性的上下文中是極其棘手和難以分析的。 安全可靠地執行圖靈完備的智能合約相當於證明一個電腦程式沒有錯誤。 我們知道這是非常困難的,因為幾乎所有現存的電腦程式都或多或少存在缺陷。

考慮到需要多年的學習和非常過硬的考核才能夠勝任編寫普通合約的工作這樣一個事實。 智能合約的編寫至少需要與之相當的能力,但目前還有的合約是由很多不懂得如何確保其安全性的新手編寫的。 從當前很多存在缺陷的智能合約中可以清楚地看出這一點。

比特幣的解決方案簡單地放棄圖靈完備性。 這使合約更容易分析,因為合約可能的結果更容易列舉和檢查。

以太坊的解決方案是將確保可靠性的責任托付給智能合約的起草者。 合約的起草者應確保合約按照他們的意圖進行。

智能合約並非真正的合約(至少在以太坊)

雖然在理論上將確保合約可靠性的責任交給起草者是個不錯的辦法,但實際操作中這已經產生了一些嚴重的集權後果。

以太坊以“代碼即法律”的觀點發起。 也就是說,在以太坊合約是最終的權威,沒有人可以否決合約。 這個觀點向智能合約開發者表達的意思是他們必須依靠自己。 如果你搞砸自己的智能合約,那麽從某種意義上講,你是咎由自取。 當DAO事件發生時,這導致了崩潰。

DAO是“分散的自治組織(Decentralized Autonomous Organization)”的簡稱,他們在以太坊創建了一個基金,以此來展示該平台可以做什麽。 用戶可以將資金存入DAO,並根據DAO投資收益獲得回報。 投資決策會由去中心化的眾包形式做出。 DAO在以太幣價值20美元時募集了大約1.5億美金。上述的這些事情看上去很美好,不過千里之堤潰於蟻穴。 因為代碼的可靠性沒有很好地保護,最終導致有人想出了一個途徑盜取了DAO所有的資金。

許多人將盜走DAO的人稱為“黑客”。 在這種意義上,這個“黑客”找到了一種方法,以智能合約起草者沒有考慮的方式從合約中盜取了資金,這是個真實的例子。 但從更廣泛的意義上講,此人根本不能為稱作黑客,他只是一個正在利用智能合約中的瑕疵獲利的人。 這與有想法的注冊會計師(CPA)利用稅務漏洞為其客戶節稅並無太大區別。

在此之後,以太坊決定不再視代碼為法律,並將存入DAO的所有資金歸還。 換句話說,智能合約的起草者和投資者做了一些愚蠢的事情,而以太坊的開發者決定將他們解救出來。

這起事件的影響完全有據可查。 Ethereum Classic平台因此誕生,保留了DAO並延續“代碼即法律”的原則。 除此之外,開發人員開始回避使用以太坊圖圖靈完備屬性的智能合約,因為它證明很難保證可靠性。 當前ERC20和ERC721標準是以太坊中使用最為頻繁的智能合約模板,需要著重指出的是,這兩種合約都可以在沒有任何圖靈完備性的情況下編寫。

智能合約只是用於數字化的無記名票據(digital bearer instruments)

即使不具備圖靈完備性,智能合約仍然聽起來不錯。 畢竟,誰喜歡不得不去法庭上獲得本就該屬於他們的東西呢? 相比普通合約,使用智能合約來實現這一點不是更容易麽?

例如,房地產行業不就能因為智能合約受益麽? Alice可以證明她擁有房子, Bob可以為房子付款並獲得它。 沒有所有權問題,機器可以快速、無需信任地執行合約,不需要法官,行政機構或產權保險。 聽起來很棒,不是麽?

這裡有兩個問題。 首先,由中心化組織負責執行智能合約並不是真的不可靠。 你仍然需要信任這個中心化組織才能執行合約。 無需信任是智能合約的關鍵特徵,因此中心化的執行機構使得隻呢呢合約失去了意義。 為了讓智能合約真的無需信任機制,你需要一個真正的無中心的平台。

第二個問題就此引出。 在去中心的環境下,智能合約只有在數字版本與實體之間存在某種明確的聯繫時才能有效代替普通合約。 也就是說,只要房子的數字版本改變所有權,其實體必須改變所有權。 數字世界需要聯繫物質世界。 這被稱為“測試準則問題”(oracle problem)。

當Alice將房子轉讓給Bob時,智能合約需要獲知她實際上將房子轉讓給了Bob。 有幾種方法可以做到這一點,但它們都有相同的基本問題。 那就是有一個被信任的第三方在現實世界中驗證轉讓行為的發生。

例如,房子可以在以太坊上表現為一枚不可替代的令牌。 Alice可以通過原子交換(Atomic Swap)將房子轉移給Bob以獲得一定數量的以太幣。 問題在於,Bob需要相信這枚令牌實際上代表了房子。這裡必須有一些測試準則確保代表房子的令牌的轉讓在實際上意味著該房子實際所有權的合法轉讓。

此外,即使政府當局承認令牌實際代表房屋,那麽如果令牌被盜,情況又會怎樣, 這房子現在屬於小偷嗎? 加入令牌丟失怎麽辦? 房子不能再出售了嗎? 代表房屋的令牌可以重新簽發麽? 如果可以的話,應該由誰來執行呢?

在去中心化的的背景下,將數字與實物資產聯繫起來是一個棘手的問題,無論它是水果,汽車還是房屋。 實物資產受您所處區域的政府或其他機構管轄,這意味著除了你創建的智能合約之外,他們還需要相信一些其他的東西。 這意味著,智能合約中的所有權並不一定等於現實世界中對同一事物的所有權,並且會像普通合約一樣面臨信任問題。 需要信任第三方才能履行的智能合約也就不再具有無需信任任何人這個其最大功能(或者說優點)。

即使是電子書,健康記錄或電影等數字化資產也會遇到同樣的問題。 這些數字資產的“權利”最終由其他一些權威機構決定,而測試準則需要被信任。

從這個角度來看,測試準則只是現實中法官的簡化版本。 除了獲得僅依靠機器來履行合約和簡化的強製執行規則的好的,你實際要面臨的複雜工作是用代碼將合約所有的可能情況以及主觀性和人為判斷的風險全都考慮在內。 換句話說,簽訂一份“智能”的合約意味著你需要編寫複雜的代碼,同時還需要信任某個人或組織。

唯一不需要測試準則的合約標的就是數字化的無記名票據。 本質上,交易雙方不僅僅需要數字化的,而且合約標的必須是無記名票據。 也就是說,令牌的所有權不能在智能合約簽訂平台之外擁有依賴關係。 只有當智能合約的標題是數字化的無記名票據是,智能合約能在無需信任的基礎上被執行。

結論

我非常希望智能合約可以比它目前看起來更加實用。 不幸的是,我們人類對於合約的理解包含了大量的假設和無需清楚說明的判例法。

此外,事實證明,利用圖靈完備性是一種破壞智能合約的簡單方法,並導致各種意想不到的行為。 我們應該標記那些不具備圖靈完完備性的智能合約平台,而不是有圖靈完備性的那些。 DAO事件也證明了被隱隱相信和幫助解決爭端的契約精神確實存在,這點超乎我們的想象。

智能合約簡直太容易搞砸,難以保證可靠性,很難廣泛地做到無需信任、並且依賴太多外部事物使它適用於大多數場景。 智能合約唯一具有無需信任這一特點的場景是比特幣這樣的基於去中心化平台的數字化的無記名票據。

編譯組出品。編輯:郝鵬程

獲得更多的PTT最新消息
按讚加入粉絲團