除了加密貨幣,智能合約可能是區塊鏈中被談論最多的概念。

許多文章都在大肆宣揚智能合約的好處,聲稱這項技術將顛覆從保險到供應鏈再到醫療保健的所有行業。

但是,智能合約真的像它們所呈現的那樣改變遊戲規則嗎?

毫無疑問,智能合約會很有用,但重要的是要將現實與炒作區分開來。

為了了解智能合約的應用和局限性,我做了一些深入的研究。以下是我的發現:雖然智能合約技術有很多潛力,但就目前而言,它的成功實施受到技術和法律因素的限制。

理解智能合約

智能合約是基於區塊鏈的程序,一旦相關各方滿足了特定的標準,就會執行協議。智能合約使用條件編程來執行一組預定義的操作。

最接近的類比是流行的If This Then That (IFTTT)軟件,一旦觸發器被激活,它就會自動執行操作。

在將智能合約部署到區塊鏈上之前,開發人員編寫指導智能合約運行的“邏輯”。因此,智能合約可以獨立工作,不需要外部控制。

智能合約固有的自主性是它們如此吸引人的部分原因。就像區塊鏈一樣,智能合約是“無需信任的”,這意味著它們不受第三方控制。也同時意味著該程序可以在沒有受信任的中介的情況下執行合約中的條款。

合約是如何運作的?

要理解智能合約在現實生活中的運作方式,就必須理解合約的工作方式。

合約有三個要素:要約、承諾和交易。

假設你和房東簽了一份合約,以每週25美元的價格租下一套公寓,租期為兩週。合約的三個部分是:

要約

承諾以每週25美元或50美元的價格租下一套公寓,為期兩週。要約明確了雙方的權利和責任,並進一步表明了雙方之間的價值交換。

驗收

同意對方提供的條款。在這種情況下,房東同意把公寓租給你兩週,你也同意按要價每週25美元支付租金。

交易

雙方履行其義務的行為。你付25美元,房東就會給你公寓的鑰匙。這可以看作是對合約的履行。

如果你付了錢,但房東拒絕給你鑰匙,那就違反了合約。同樣,如果你在交了第一周的租金後拒絕支付第二週的租金,你就違反了合約。

根據合約法,如果另一方未能履行其應履行的義務,任何一方都可以向法院提起訴訟。合約允許那些可能相信或不相信自己的人做生意,因為有一個可信的中介(法院)來執行協議。

那麼,智能合約是如何適應這種情況的呢?

作為一種無需信任的機制,智能合約不需要中介來執行協議。相反,代碼是這裡的主要仲裁者。一旦每個部分滿足指定的條件,代碼或“業務邏輯”自動處理協議中包含的條款。

讓我們以計算機科學家Nick Szabo使用的自動售貨機為例,他在1994年首次解釋了智能合約的概念:

你向自動販賣機投幣,就可以得到一杯飲料。你不需要接線員給你一杯飲料;一旦你付了錢並選擇了一種零食,這種機制就會釋放它。

那麼,智能合約真的只是數字自動售貨機嗎?是的。但它們顯然可以做的事情比處理支付更多,比如為去中心化金融(DeFi)系統提供動力,交換NFT,等等。

智能合約為何流行?

由於智能合約在區塊鏈上運行,它們提供了基於區塊鏈的系統的好處。例如,可以通過區塊鏈監控合約各方之間的交易,從而提高透明度。

智能合約是不可變的,這意味著它們不能被修改。一旦合約在區塊鏈上運行,任何一方(甚至智能合約的創造者)都不能重寫規則。

簽訂合約後試圖更改協議條款的事情,對於託管在區塊鏈分類帳上的智能合約來說是不可能的,這使得它對管理交易很有用。

因為智能合約依賴於簡單的邏輯(如果x,那麼y),它們可以更快地處理交易。智能合約的一個常見應用是保險,支持者認為智能合約可以簡化理賠流程,並鼓勵更快的支付。

有了智能合約,人們將不需要昂貴的律師來建立協議——至少在理論上是這樣。這意味著減少了文書工作和花費在簽訂合約前談判的時間。

如果智能合約如此有用,為什麼它們會有問題?這正是我們要找出的。

智能合約有哪些問題?

依賴外部數據源

智能合約需要信息才能運行。

但是,區塊鏈無法與外界溝通,這給智能合約帶來了問題。

為了解決這個問題,智能合約開發者依賴於“預言機”——應用程序從現實世界中提取數據,並在鏈上提供給智能合約使用。

然而,對預言機的依賴凸顯了智能合約的另一個局限性:

我們必須相信預言機能夠提供準確的數據,否則智能合約將會產生錯誤。智能合約在軟件開發中容易出現“垃圾輸入,垃圾輸出”(GIGO)問題。

我們可以通過使用來自不同預言機的信息來解決這個問題,但這只會增加交易成本,因為預言機必須付費。此外,使用來自不同預言機的信息會破壞共識。

請記住,系統中的所有節點必須就合約的狀態達成一致,否則交易將被視為無效。當節點從預言機獲得不同的信息時,可能無法達成共識。

不變性

智能合約的一個問題在於它們的不變性。在區塊鏈中,“不可變性”意味著協議中的規則一旦部署在區塊鏈上,就不能被單方面更改。

雖然這有助於檢查可能希望操縱合約信息的不良參與者,但它使智能合約更難使用。

這種嚴格的系統也使得修復代碼中的錯誤變得困難。如果一個bug碰巧影響了智能合約的功能,開發人員可能無法實施任何解決方案。

保密的信息

每個人都可以訪問區塊鏈上的所有信息,因為節點保存了區塊鏈歷史的副本。同樣,這有助於提高透明度和防止欺詐,因為每個人都可以看到數據。

但並不是每個人都希望保密的合約信息公開。這就是為什麼法律規定律師不能透露當事人之間訴訟的細節。

可以把它看作是在網頁的HTML中隱藏信息。用戶不會在他們的瀏覽器窗口中看到這些信息,但是一個簡單的CTRL + U(查看源代碼)函數就會顯示出來。

智能合約也是如此——任何人都可以通過調整區塊鏈軟件來顯示合約的完整狀態。就這樣,所有的私人信息都進入了公共領域。

對於想要完全隱私的企業和個人來說,缺乏保密性是使用智能合約的一大缺點。

安全漏洞

像任何程序一樣,智能合約經常會產生錯誤。然而,智能合約和常規程序的不同之處在於,智能合約代碼中的錯誤可能會造成昂貴的影響。

如今,智能合約為DeFi行業提供動力,該行業的價值估計超過1000億美元。智能合約功能上的一個簡單漏洞,就意味著可能會有數百萬人因惡意利用此類錯誤而蒙受損失。

我們不止一次看到這種情況。就在上週,允許用戶在Solana和以太坊區塊鏈之間發送和接收加密貨幣的跨鏈橋Wormhole被黑客損失了3.2億美元。

根據Chainlysis的這次故障,黑客利用了橋樑智能合約中的一個漏洞,讓他們可以抽乾Solana網絡中的12萬個WETH。這是一系列針對DeFi平台的攻擊中最新的一起,這些平台的運作都依賴智能合約。

這並不意味著智能合約的安全性不會隨著時間的推移而改善。然而,在真正的矽谷式“fail fast and early”模式中,大多數項目主要關注的是營銷和獲取用戶,而不是解決系統中的問題。

簡單的操作

當人們聽到“智能合約”時,他們會聯想到無數可能的應用程序。

代碼不能涵蓋且不能寫入二進制代碼的合約中的模棱兩可的條款。這是智能合約的另一個問題。

當然,強制執行特定產品的支付和轉賬的智能合約很容易編程。當你試圖加入“貨物必須完好無損地到達”或“貨物必須在合理的時間內到達”這樣的條款時,問題就開始了。

如何確定“良好狀態”的含義或計算“合理的時間”並將其寫入代碼?

簡而言之,在需要對協議中的條款進行解釋的情況下,智能合約幾乎毫無用處。然而,它們可以用於更簡單的應用程序,如加密貨幣交易,其中的數據(價格數據、簽名、地址等)在區塊鏈上,並且術語很容易被理解。

智能合約需要更智能

儘管智能合約存在局限性,但它們也有自己的用途。但是,在區塊鏈夢想者的夢幻般的願望成為現實之前,他們需要大規模的發展。

開發人員必須努力解決智能合約的最大問題。例如,一個允許修改智能合約的協議——前提是各方都同意——將會改善這項技術的應用。

也許隨著時間的推移,智能合約會變得真正智能,並實現專家確定的所有可能性。就目前而言,智能合約要改變世界還有很長的路要走。