原文:《 IOSG Weekly Brief | 錢包2.0時代: MPC錢包vs. 智能合約錢包#146

作者:Chloe,IOSG Ventures

在波哥大舉辦的Devcon 6大會中,Tomasz Tunguz提到了Web3.0的一些統計數據:各主流公鏈DAU累計約為250萬,而傳統互聯網的DAU為50億,前者勉強夠上後者的0.05% 。從供給側來看,約有1.6萬名開發者在Web3.0開發,而世界上開發者總數達到了2700萬,Web3開發者占卜不足0.06%。因此,Web3.0離mass adoption還有很遠的距離。

錢包,作為Web3.0的入口,其用戶體驗直接影響到加密行業何時能迎來大規模化採用。儘管各大錢包在這方面卯足了勁,可在普通用戶的眼裡,錢包使用體驗依舊不盡人意。託管錢包雖然易用,但是安全性是一個很大的隱患,錢包被盜事件層出不窮。自託管錢包雖然相對安全,但保管長長的助記詞和私鑰的方式與傳統互聯網的用戶名-密碼體系相比複雜了很多。據Chainalysis 的研究報告顯示,截止2021 年約有20% 流通中的比特幣,因所有者不記得私鑰而丟失。很多人可能會有疑問,為什麼我們不能將傳統的驗證方式應用到Web3.0來呢?

為什麼我們只能通過私鑰的方式進行驗證?為了回答這個問題,我們需要了一些背景知識和概念。首先是以太坊上的賬戶類型。以太坊一共有兩種賬戶:外部賬戶和合約賬戶。合約賬戶就是智能合約,其代碼由以太坊虛擬機來運行。而外部賬戶就是我們平常用來發起交易的錢包賬戶,它之所以被稱為“外部“是因為這種賬戶本身是沒有代碼的,因此獨立於以太坊虛擬機之外,由用戶通過私鑰進行控制。

MPC錢包 VS 智能合約錢包,誰是Web3錢包的未來?圖片來源: https://lh3.googleusercontent.com

合約賬戶雖然有自定義邏輯,但它是無法主動發起事務的。因此任何合約狀態的改變都依賴外部賬戶來發起,並由外部賬戶支付Ether。那如何驗證事務的合法性呢?以太坊上的驗證方式為檢查事務的發起人和資產(Ether)的所有人,也就是這個外部賬戶的擁有者是一致的。因此用戶需要通過錢包對交易進行簽署。而以太坊默認的驗證邏輯是中本聰設計的secp256k1,也正是通過此算法生了密鑰對。簽名的正確性可以通過驗證該簽名是否出自跟某個共鑰對應的私鑰檢驗,因此用戶必須掌握這個私鑰。這就是為什麼無論如何優化錢包的用戶體驗也無法繞開私鑰的問題。

MPC錢包 VS 智能合約錢包,誰是Web3錢包的未來?

圖片來源:https://www.ledger.com/academy/blockchain/what-are-public-keys-and-private-keys

前文提到,外部賬戶並不具備代碼邏輯。如果想要引入更複雜的邏輯來實現其他的功能,比如多籤等等,是無法在外部賬戶上直接進行的。那麼,目前有什麼樣的方式可以解決此問題呢?筆者將介紹被認為最可行有效的兩種解決方案: MPC錢包和智能合約錢包。

MPC Wallet

MPC,全稱為Multi-Party Computation,是一種重要的加密安全措施。其包含了很多種技術方案,在本文的語境下主要指MPC-TSS。而MPC錢包,是通過對私鑰進行多方計算在鏈下實現“多簽“、”跨鏈“等等更複雜的驗證方式。簡單來說,就是將一個私鑰打碎成多片,將私鑰碎片交與一個去中心化的網絡進行計算和加密。當需要私鑰簽名時,則將碎片再拼接起來形成一個完整的私鑰。 MPC的核心思路為分散控制權以達到分散風險或提高備災的目的,有效避免了單點失敗等安全問題。

MPC錢包 VS 智能合約錢包,誰是Web3錢包的未來?

圖片來源:https://sepior.com/products/advanced-mpc-wallet

MPC錢包“多方參與”的概念與“多簽錢包”有些類似,但實際上,雖然都可以實現“多簽”的功能,二者的實現途徑是不一樣的。之前我們所熟知的多簽錢包,比如Gnosis Safe等等,是建立在智能合約上的錢包,合約中定義了驗證邏輯,比如如果需要驗證一筆交易,需要一個以上的私鑰,或者五個中至少三個私鑰進行驗證。這類錢包屬於後文即將提到的智能錢包的一種。而MPC錢包,則是將一個私鑰分解成多個片段,驗證過程只涉及到一個私鑰。並且計算網絡是鏈下的,與智能合約並無聯繫。

Smart Wallet

智能合約錢包,正如其名,是基於智能合約而不是外部賬戶的錢包。市面上已經有不少的智能合約錢包,但因為這些智能合約是自定義的,缺乏統一的行業標準,且存在合約漏洞以及與其他合約兼容性等等問題未獲得廣泛的應用。最近,智能合約錢包又因為“賬戶抽象”提案EIP-4337的重大進展而再次成為了熱議的話題。那麼賬戶抽像到底是什麼意思呢?實現了賬戶抽像後,又能給用戶帶來怎樣全新的體驗?在了解以太坊上的賬戶抽象之前,我們首先需要了解CS中抽象概念。

“抽象”是計算機科學最重要的概念之一,指在向外界提供必要的關鍵信息的同時隱藏其後台的實現細節,使得開發者在處理一個抽象層的任務時,只需要專注於這一個抽象層。舉一個貼近生活的例子:當我們作為觀眾想使用電視機的時候,我們只需要熟悉作為電視觀眾需要了解的操作,比如如何打開和關閉電源、調整音量、切換頻道、連接其他設備如游戲機、 DVD等等。觀眾並不需要了解電視內部的實現細節,比如電視是如何通過纜線接受信號,如何轉換信號,如何將這些信號呈現在電視屏幕上等等。這些實現細節是造電視的人需要了解的。作為觀眾,我們只需要通過外部接口,比如電源按鈕、遙控器、DVD等控制電視。

賬戶抽象同理,我們作為錢包用戶,仍需要考慮很多因素,比如gas price、gas limit、事務阻塞等等複雜的費用邏輯。其根本原因是基於外部賬戶的錢包不能夠被很好地“抽象”,直接導致用戶需要處理很多本不應該由用戶處理的問題。那如何解決呢?邏輯很簡單,我們可以將外部賬戶和合約賬戶抽象,使外部賬戶更貼近合約賬戶,這樣就可以通過智能合約賦予錢包更加複雜的邏輯。智能合約錢包能夠實現的功能也不止“多簽”這一個場景了。

MPC錢包 VS 智能合約錢包,誰是Web3錢包的未來?

圖片來源:https://miro.medium.com/

如果EIP-4337能夠實現以太坊賬戶的系統性升級,作為用戶的我們能獲得什麼新的體驗呢?理論上只要能通過智能合約代碼定義的功能都能實現。首先,智能合約錢包可以通過非secp256k1的驗證算法進行驗證,用戶不需要面對長長的密鑰對和助記詞。同時,智能合約還可以賦予密鑰更多的邏輯。比如在多籤的場景下,給每一個私鑰定義不同的權限:50USDC以下的交易需要私鑰A簽名,50USDC以上的交易需要私鑰B簽名,超過2000USDC的交易需要私鑰ABC共同簽名等等。此外,通過移動端與區塊鏈交互會變得更加容易,我們可以授權一個專屬於手機的密鑰,且可以定義這個密鑰加上限制,比如只能與固定幾個智能合約交互,或者智能驗證數額較小的交易等。其他能夠實現的功能還包括一鍵授權批量交易、交易黑名單等等。總之,智能合約錢包的想像空間非常大。

總結

介紹完兩種錢包,讀者可能會產生疑問,這兩種解決方案到底哪一種更好呢?筆者認為很難進行比較,因為MPC錢包和智能合約錢包本質上不在同一個層面解決問題。 MPC錢包是鏈下方案,既可以控制基於外部賬戶的普通錢包,也可以控制智能錢包。二者各有用例,並不衝突。因此,筆者將為大家分別列舉兩種方案的機遇和挑戰。

MPC錢包作為鏈下方案,並不涉及到以太坊共識層或合約層的改動,用戶的使用成本更低,且在短期內更具可行性。此外,在一些特殊的使用場景比如跨鏈密鑰等更具優勢。智能合約錢包是以太坊的系統性升級,可以給用戶帶來更多全新的體驗和用例。但賬戶抽像是一個需要“興師動眾”的大工程,要求其他智能合約、開發者、以及以太坊架構都配合升級。過大的實操難度使從2015年就提出的願景到今天也沒有完全落地。而智能合約錢包對於用戶而言,最直接的問題就是錢包的使用成本將會提升,從創建錢包開始就需要支付費用。

筆者認為,智能合約錢包是我們的最終願景,MPC是短期內更可行的方案,且在一些特殊場景更具優勢。因為成本問題,未來智能錢包在以太坊主網實現的可行性和可能性都較低。讀者可以更多關注Layer2上的賬戶抽象和智能錢包進展。目前EIP-4337是最可行的賬戶抽象方案,已經有不少智能合約錢包項目在探索這條路徑,智能錢包的全面落地可能比我們想像的更近。