在以太坊期待已久的合併之後,現在是思考如何改進智能合約的理想時機。本質上是在區塊鏈上運行的應用程序,智能合約是我們Web3 應用程序的重要組成部分。但與他們互動仍然非常危險,尤其是對於非開發人員而言。許多用戶丟失加密資產的事件都是由錯誤或惡意的智能合約引起的。
作為一名Web3 應用程序開發人員,這是我經常想到的一個挑戰,尤其是當新用戶不斷湧入各種區塊鏈應用程序時。要充分 信任智能合約,消費者需要知道 確切地 當他們進行交易時它會做什麼——因為與Web2 世界不同,如果出現問題,沒有客戶支持熱線可以撥打和追回資金。但目前,幾乎不可能知道智能合約是否安全或值得信賴。
有關的: 流動性質押是跨鏈安全的關鍵
一種解決方案是讓錢包本身更智能。例如,如果錢包可以告訴我們智能合約是否可以安全交互怎麼辦?可能不可能100% 確定地知道這一點,但錢包至少可以匯總並顯示開發人員已經在尋找的大量信號。這將使該過程更簡單、更安全,尤其是對於非開發人員而言。
這裡更深入地了解智能合約的優缺點,為什麼它們現在看起來像狂野西部,以及我們如何改進使用它們的用戶體驗。
智能合約的承諾和危險
對於開發人員而言,使用智能合約作為其應用程序的後端具有巨大的潛力。它還增加了漏洞和漏洞利用的可能性。開發人員可以在不徵求任何人許可的情況下創建智能合約,這很好,但這也可能使用戶面臨相當大的風險。我們現在的應用程序交易數億美元,卻沒有安全保證。就目前而言,我們只需要相信這些應用程序沒有錯誤並履行他們的承諾。
許多非開發人員甚至沒有意識到所涉及的安全問題,並且在與基於區塊鏈的應用程序交互時沒有採取適當的預防措施。普通用戶可能會簽署一筆交易,以為它會做一件事,卻發現智能合約完全做了另一件事。這就是為什麼惡意智能合約是不良行為者的主要攻擊媒介的原因。
為什麼智能合約是狂野西部?
當Web3 應用程序發出智能合約調用時,在您實際執行之前,您並不確切知道交易會做什麼。它會讓你的 不可替代令牌(NFT),還是會將您的錢和代幣發送給黑客?這種不可預測性適用於任何在線應用程序,當然不僅僅是Web3 應用程序; 預測代碼會做什麼是非常困難的。但在Web3 世界中這是一個更大的問題,因為這些應用程序中的大多數本質上都是高風險的(它們是為處理你的錢而構建的),而且對消費者的保護如此之少。
由於Apple 的審核流程,App Store 基本上是安全的,但在Web3 中不存在。如果iOS 應用程序開始竊取用戶的資金,Apple 將立即下架以減輕損失並撤銷其創建者的帳戶。
有關的: 拉丁美洲已準備好使用加密貨幣——只需將其與他們的支付系統集成即可
另一方面,惡意智能合約無法刪除 由任何人. 也沒有辦法追回被盜資產。如果惡意合同耗盡了你的錢包,你不能簡單地與信用卡公司就交易提出異議。如果開發人員是匿名的,就像惡意合同的情況一樣,通常甚至沒有採取法律行動的選擇。
從開發人員的角度來看,如果智能合約的代碼是開源的,那就更好了。流行的智能合約通常會發布其源代碼——這是對Web2 應用程序的巨大改進。但即便如此,也很容易錯過真正發生的事情。預測代碼在所有場景中的運行方式也可能非常困難。 (考慮一下這個又長又可怕的推特 線 由一位經驗豐富的開發人員編寫,即使在閱讀了所涉及的合同之後,他也幾乎陷入了複雜的網絡釣魚騙局。只有在仔細檢查後,他才注意到這個漏洞。 )
使這些問題更加複雜的是,人們在與智能合約交互時常常被迫迅速採取行動。考慮影響者推動的NFT 降價:消費者會擔心收藏品會很快售罄,因此他們經常會嘗試盡快進行交易, 忽略他們可能遇到的任何危險信號 一路上。
簡而言之,使智能合約對開發人員強大的相同功能——例如無許可發布和可編程貨幣——使它們對消費者來說非常危險。
我不認為這個系統存在根本性缺陷。但是對於像我這樣的Web3 開發人員來說,今天有很多機會可以為使用錢包和智能合約的消費者提供更好的保護。
當今錢包和智能合約的用戶體驗
在許多方面,像MetaMask 這樣的錢包感覺就像是為開發人員創建的。它們展示了許多在構建應用程序時有用的深層技術細節和區塊鏈細節。
問題在於非開發人員也使用MetaMask——不了解所有內容的含義。沒有人預料到Web3 會如此迅速地成為主流,而錢包 還沒有完全滿足需求 他們的新用戶群。
有關的: 向攝氏學習——阻止交易所搶你的錢
MetaMask 有 已經在將“助記詞”更名為“秘密詞組”方面做得很好,以防止消費者在不知不覺中與黑客分享它。但是,還有很多改進的空間。
讓我們看一下MetaMask 的用戶界面(UI),然後是我創建的幾個模型,概述了一些可以引導消費者進入“成功的坑。 ” (順便說一下,這裡的MetaMask 作為參考,因為它在Web3 世界中被大量使用,但這些UI 想法也應該適用於幾乎所有錢包應用程序。)其中一些設計調整可以在今天構建,而其他可能需要技術智能合約方面的進步。
下圖顯示了當前MetaMask 智能合約交易窗口的樣子。
我們會看到我們正在與之交互的智能合約的地址、發起交易的網站,然後是我們發送給合約的資金的許多詳細信息。然而,沒有跡象表明 這個合約調用的作用 或任何表明它的指標 安全的 互動。
改進智能合約的潛在解決方案
我們真正希望在這裡看到的是幫助我們作為最終用戶確定我們是否信任這個智能合約交易的信號。打個比方,想想現代網絡瀏覽器地址欄中的綠色或紅色小鎖,它指示連接是否加密。這個顏色編碼的指示器有助於引導沒有經驗的用戶遠離潛在的危險,而高級用戶如果願意的話可以很容易地忽略它。
作為一個視覺示例,這裡有兩個MetaMask 交易的快速用戶體驗(UX) 設計模型——一個可能是安全的,一個不太確定。
以下是我的模型中的一些信號:
- 合約源代碼是否公開? 開源合約通常更值得信賴,因為任何開發人員都可以閱讀它們以發現錯誤和惡意代碼。 MetaMask 已經包含到Etherscan 的各種鏈接,所以這將是一個簡單方便的添加信號。
- 審核分數。 第三方審計是另一個可以確定可信度的信號。 這裡的主要實現問題是如何確定這個分數。是否已經有任何公認的標準?如果沒有,一個簡單的方法是使用支持上傳審計的Etherscan。在此示例中,MetaMask 還可以維護自己的審核員列表,或依賴第三方列表。 (據我所知,MetaMask 已經為NFT API 和令牌檢測做到了這一點。)在未來,很容易想像一個去中心化的自治組織以更加去中心化的方式確定審計分數。
- 這筆交易能做什麼? 它可以調用外部合約嗎?如果可以,是哪些?這將是 非常 很難完美地確定,但我想知道開源合約的簡單版本是否可行。已經有很多自動化的智能合約漏洞掃描器。如果這對Solidity 來說是不可能的,我想知道我們是否可以設計一種智能合約編程語言 做 允許這種級別的靜態分析。也許個別函數可以聲明他們需要的權限,編譯器可以保證一致性。
- 安全提示和教育。 如果智能合約沒有很多可信度信號(參見右側上方的模型),UI 可以建議採取適當的預防措施,例如檢查合約地址是否正確並使用不同的帳戶。這些是橙色文本中提出的建議,而不是紅色文本,因為缺少信號不一定是危險的; 在這裡,我們只是建議用戶選擇對接下來的步驟更加謹慎。
與MetaMask 中的許多現有功能一樣,這些建議的功能可以在設置中關閉。
邁向更安全的未來
未來,可能會有許多基於區塊鏈提供的原始組件構建的以安全為中心的工具。例如,我們很可能會看到保護用戶免受錯誤智能合約影響的保險協議變得司空見慣。 (這些已經存在,但它們仍然相當小眾。)
然而,即使在早期,消費者已經在使用Web3 應用程序,所以我希望看到開發社區為他們添加更多保護 現在. 對錢包的一些簡單改進可能會有很長的路要走。上述一些想法將有助於保護沒有經驗的用戶,同時簡化Web3 老手的交易流程。
從我的角度來看,除了在Coinbase(或其他大公司)上交易加密資產之外的任何事情對普通消費者來說風險都太大了。當朋友和家人詢問有關設置一個自我託管的加密錢包以使用Web3 應用程序時(讓我們面對現實——通常是為了購買NFT),總是首先警告他們風險。這嚇跑了他們中的一些人,但更堅定的人無論如何都想使用它們。當我們的錢包變得更智能時,我們將能夠更好地引導下一波新用戶加入Web3。
德文·雅培 是Airbnb 收購的初創公司Deco 的創始人。他專注於設計和開發工具、React 和Web3 應用程序,最近在The Graph 工作。
本文僅供一般參考之用,並非旨在也不應被視為法律或投資建議。此處表達的觀點、想法和意見僅代表作者個人,不一定反映或代表Cointelegraph 的觀點和意見。