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

在波哥大舉辦的Devcon 6大會中,Tomasz Tunguz還提到了Web3.0的一些統計數據:各主流公鏈DAU累計約為250萬,而傳統互聯網的DAU為50億,前者勉強夠上後者的0.05 %。因此,Web3.0離規模應用還有很遠的距離。

新一代智能錢包:合約錢包 vs MPC

錢包的三個問題

Web3.0大規模普及,需要解決一些關鍵問題,包括錢包私鑰帶來一個用戶體驗問題與兩個安全問題。

1.一個用戶體驗問題:

A. 助記詞與私鑰難記、難保存,導致用戶使用門檻過高

2.兩個安全問題:

B. 助記詞和私鑰的洩露,導致資產被盜。

C. 助記詞和私鑰的丟失,導致資產丟失。

為什麼只能通過私鑰的方式進行驗證?為了回答這個問題,我們需要了一些背景知識和概念。首先是以太坊上的賬戶類型。以太坊一共有兩種賬戶:外部賬戶(EOA)和合約賬戶(CA)

合約賬戶就是智能合約,其代碼由以太坊虛擬機來運行。而外部賬戶就是我們平常用來發起交易的錢包賬戶,它之所以被稱為“外部“是因為這種賬戶本身是沒有代碼的,因此獨立於以太坊虛擬機之外,由用戶通過私鑰進行控制。

新一代智能錢包:合約錢包 vs MPC

合約賬戶(CA)雖然有自定義邏輯,但它是無法主動發起事務的。因此任何合約狀態的改變都依賴外部賬戶來發起,並由外部賬戶(EOA)支付Eth。

如何驗證事務的合法性呢?以太坊上的驗證方式為檢查事務的發起人和資產賬戶的擁有者是一致的(同一個人)。因此需要用戶通過錢包對交易進行簽名。而以太坊默認的驗證邏輯是通過secp256k1非對稱密鑰算法實現,用戶必須掌握用於簽名的私鑰。這就是為什麼無論如何優化錢包的用戶體驗也無法繞開私鑰的問題。

新一代智能錢包:合約錢包 vs MPC

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

MPC Wallet

MPC,全稱為Multi-Party Computation,是一種重要的加密安全措施。其包含了很多種技術方案,在本文的語境下主要指MPC-TSS。而MPC錢包,是通過對私鑰進行多方計算在鏈下實現“多簽“、”跨鏈“等等更複雜的驗證方式。

簡單來說,就是將一個私鑰打碎成多片,將私鑰碎片交與一個去中心化的網絡(Multi-Party多方)進行計算和加密。當需要私鑰簽名時,則將多方碎片再拼接起來形成一個完整的私鑰。 MPC的核心思路為分散控制權以達到分散風險或提高備災的目的,有效避免了單點失敗等安全問題。

新一代智能錢包:合約錢包 vs MPC

MPC錢包“多方參與”的概念與“多簽錢包”有些類似,但實際上,雖然都可以實現“多簽”的功能,二者的實現途徑是不一樣的。

之前我們所熟知的多簽錢包,比如Gnosis Safe等等,是建立在智能合約上的錢包,合約中定義了驗證邏輯,比如如果需要驗證一筆交易,需要一個以上的私鑰,或者五個中至少三個私鑰進行驗證。這類錢包屬於後文即將提到的智能錢包的一種。

而MPC錢包,則是將一個私鑰分解成多個片段,驗證過程只涉及到一個私鑰。並且計算網絡是鏈下的,與智能合約並無聯繫。

Smart Wallet

智能合約錢包,正如其名,是基於智能合約(CA)而不是外部賬戶的錢包。市面上已經有不少的智能合約錢包,但因為這些智能合約是自定義的,缺乏統一的行業標準,且存在合約漏洞以及與其他合約兼容性等等問題未獲得廣泛的應用。

即將來臨的以太坊上海昇級,智能合約錢包又因為“賬戶抽象”提案EIP-4337的重大進展而再次成為了熱議的話題。那麼賬戶抽像到底是什麼意思呢?實現了賬戶抽像後,又能給用戶帶來怎樣全新的體驗?在了解以太坊上的賬戶抽象之前,我們首先需要了解“抽象”的概念。

“抽象”是計算機科學最重要的概念之一,指在向外界提供必要的關鍵信息的同時隱藏其後台的實現細節,使得開發者在處理一個抽象層的任務時,只需要專注於這一個抽象層

賬戶抽象同理,我們作為錢包用戶,需要考慮很多因素,比如gas price、gas limit、事務阻塞等等複雜的費用邏輯。其根本原因是錢包不夠“抽象”,導致需要處理很多本不應該由用戶處理的問題。那如何解決呢?

邏輯很簡單,我們可以將外部賬戶和合約賬戶抽象,使外部賬戶與合約賬戶相“結合”,通過智能合約賦予EOA錢包更加複雜的邏輯。智能合約錢包能夠實現的功能也不止“多簽”這一個場景了。

新一代智能錢包:合約錢包 vs MPC

如果EIP-4337能夠實現以太坊賬戶的系統性升級,作為用戶能獲得什麼新的體驗呢?理論上只要能通過智能合約代碼定義的功能都能實現。首先,智能合約錢包可以通過非secp256k1的驗證算法進行驗證,用戶不需要面對長長的密鑰對和助記詞。

智能合約還可以賦予密鑰更多的邏輯。比如在多籤的場景下,給每一個私鑰定義不同的權限:50USDC以下的交易需要私鑰A簽名,50USDC以上的交易需要私鑰B簽名,超過2000USDC的交易需要私鑰ABC共同簽名等等。

此外,通過移動端與區塊鏈交互會變得更加容易,我們可以授權一個專屬於手機的密鑰,且可以定義這個密鑰加上限制,比如只能與固定幾個智能合約交互,或者智能驗證數額較小的交易等。其他能夠實現的功能還包括一鍵授權批量交易、交易黑名單等等。總之,智能合約錢包的想像空間非常大。

應用案例

1. Safe Vault

Safe Vault (安全金庫)-無需信任的以太坊自託管合約保險箱,是一系列開源且安全的以太坊智能合約。可以安全“託管”你存入的資金(ETH 和ERC20 資產),只有金庫的所有者能夠根據預先定義的合約比例提取。

新一代智能錢包:合約錢包 vs MPC

無第三方&完全去中心化

安全金庫(Vault)利用默克爾樹提供數據檢索與存儲。通常處理Merkle樹很複雜並且需要鏈下存儲, 並且經常導致一些業務以中心化服務的方式運行。但安全金庫(Safe Vault)則完全不同。不需要依賴第三方。工作原理如下:

1.默克爾樹存儲在IPFS上:默克爾樹存儲在IPFS(將來同步存儲到ARWEAVE)

2. IPFS哈希存儲在以太坊上:默克爾樹的IPFS 哈希然後存儲在鏈上智能合約中.

安全金庫(Safe Vault)不在任何中心化雲服務上存儲默克爾樹及關鍵應用數據, 並且完全不依賴第3方服務。一切數據都在IPFS和以太坊上。任何人都可以安全運行自己的金庫程序(Safe Vault).

安全風險評估:

合約安全: 金庫(Safe Vault)智能合約開源,接受第三方開放審核,具備可靠的安全性.

運行安全: 金庫(Safe Vault) 基於Web3.0 免費客戶端界面,所有代碼均在客戶側本機運行,並與以太坊區塊鏈進行交互。開源的Vault平台允許您生成鏈上金庫(合約錢包)、與智能合約交互等等.

資金安全:每一個金庫(Safe Vault) 都是具有自己獨立地址的智能合約,由於沒有私鑰,資金一旦存入金庫地址,將會按合約代碼永遠確定地存放與運作,完全保障資金安全.

隔離安全: 資金存儲在金庫, 主人錢包地址具備取款權(相當於金庫鑰匙), 如果主人錢包私鑰洩露, 由於金庫與主人錢包是完全隔離的, 黑客不知道金庫信息( 1.不知道洩露的是金庫鑰匙; 2.不知道金庫地址), 因此錢包私鑰洩露時,金庫依然能夠保障安全.

定向攻擊: (1). 如果黑客通過社會工程攻擊,得知某個錢包是金庫所有者的錢包(2). 對其發起定向攻擊,並成功獲取了錢包的私鑰或助記詞; (3 ). 此時金庫與主人錢包之間的信息隔離已被打破,黑客可能通過分析工具追溯主人錢包交易歷史數據,獲取金庫合約地址,並利用主人錢包私鑰對金庫合約發起提款操作.

99% 的安全提升

對於錢包私鑰和助記詞洩露問題,SAFE VAULT 用隔離安全來改善解決,對於錢包密鑰丟失的問題,SAFE VAULT 下一步將引入新的安全模塊:“計時器所有者”,讓合約計時器經過指定的休眠時間後,允許合約激活指定第二所有者,對於避免因為錢包私鑰丟失導致資產死鎖,這是一個安全和有意義的新途徑。

風險評估綜合分析表明,使用Metamask + Safe Vault相較於一般熱錢包提升99% 安全性; 但為了100%的資金安全, 依舊建議用戶: (1).保護好主控錢包私鑰或助記詞的安全; (2).保持金庫地址的私密性, 維護金庫與主控錢包之間的信息安全隔離。

SAFE VAULT下一步將提供通用、獨立、可擴展、開放的Web3.0 API標準和服務,同時項目緊密追踪以太坊賬戶抽象和ERC-4337提案成熟,並將逐步引入MPC技術, 用戶可以謹慎體驗。

2. OPENBLOCK

近期出現的MPC錢包中,我們注意到OpenBlock,這是一個2014年就存在的歷史比較長的錢包,近期通過與OPEN-TSS 合作推出了全新的MPC加密協議錢包,應用了2-3門限簽名方案(TSS),審批者模式以及多層多維度安全防護系統。具備較好的用戶體驗和易用性,但缺憾是目前沒有看到OPENBLOCK錢包關鍵代碼開源計劃,用戶可以謹慎體驗

總結

上面介紹到兩種錢包,大家可能會產生疑問,這兩種解決方案哪一種更好呢?我們認為二者是互補的方案,因為MPC錢包和智能合約錢包本質上不在同一個層面解決問題。 MPC錢包是鏈下方案,既可以控制基於外部賬戶的普通錢包,也可以控制智能錢包。二者各有用例,並不衝突。

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

我們認為,智能合約錢包是我們的最終願景,MPC是短期內的熱點方案,且在一些特殊場景更具實施優勢。

考慮成本問題,智能錢包在以太坊主網實現的可行性和可能性都較低。可以更多關注Layer2上的賬戶抽象和智能錢包進展。目前EIP-4337是最可行的賬戶抽象方案,已經有不少智能合約錢包項目在探索這條路徑,智能錢包的全面落地可能比我們想像的更近。

Reference

Safe Vault: https://safe.io

OpenBlock: https://openblock.com