智能合約錢包確實是未來的發展方向
作者: Cassiop,Web3 投研分析師,專注於鏈遊和基礎設施賽道
封面: Photo by Shubham's Web3 on Unsplash
1. 為什麼需要無助記詞錢包
「無助記詞錢包」並不是任何一種具體的錢包技術,而是一種功能體驗:用戶不再需要保管複雜的助記詞,而是通過郵箱密碼即可登錄。由此,用戶使用錢包的門檻大大降低,使用體驗上接近 Web2 產品。
這類錢包的本質是允許密碼丟失,也就是在密碼丟失的情況下仍然可以保全資產安全、並且最終恢復對錢包的訪問。所以,用戶不再需要謹小慎微地在線下自行保管助記詞,而是可以用安全級別較低的方式來存儲密碼,包括雲端存儲、移動端本地存儲、第三方託管等等。如此,產品就可以在用戶體驗上做文章,設計新手友好的登錄體驗。
實現無助記詞有多種技術路線,包括 MPC、智能合約等。但不論何種技術,在獲得使用便利性的同時,也都存在某種信任假設——或是需要信任託管中介、或是需要信任智能合約,錢包的安全性並不唯一掌握在用戶自己手中。對於安全要求極高的人來說,這未必是個最佳選擇;但是對於普羅大眾而言,無助記詞錢包確實能夠降低 Web3 的進入門檻。
2. 無助記詞錢包有哪些實現方案
本文介紹市面上主流的三種實現方案。
2.1 MPC 錢包
第一種主流的方式是 MPC(Multi-party Computation,多方計算)。這是一種鏈下的解決方案,是錢包之外的另一層技術,換言之可以和任何類型的錢包結合,使用了 MPC 技術來保管私鑰的錢包都可以稱作 MPC 錢包。
MPC 錢包使用 SSS 或 TSS 技術生成私鑰的多個分片,分發給多個參與方。在使用錢包時,各方通過自己的分片,在不暴露每一方分片的情況下,生成完整的數據來簽名。
MPC 錢包可以靈活地設置閾值策略,比如可以要求 3 個分片中至少 2 個分片參與簽名,也可以要求 2 個分片全部參與簽名。但是需要注意,雖然允許密碼丟失,但是分片的存儲方案仍然會影響錢包安全,比如由項目方託管的存儲更多依賴於項目方不作惡。目前 MPC 錢包的閾值策略和存儲方案並不統一,還沒有一個行業標準;每種錢包所使用的不同方案,也體現了不同的安全設計策略。
MPC 錢包的私鑰分片方案可以有效避免單點故障:即使丟失了單個分片,也可以保全錢包內資產,而且可以在不改變私鑰的情況下更新各個分片,做到密碼恢復。此外,MPC 錢包的所有實現都在鏈下,最終只生成一個私鑰簽名,因此相比智能合約的多簽更節約資源。
典型的 MPC 錢包包括 Web3Auth、Particle Network、Openblock 等。
Web3Auth 採用 SSS(Shamir Secret Sharing,Shamir 私鑰分割)方案來進行密鑰分割。SSS 區別於 TSS(Threshold Signature Scheme,門限簽名方案)的地方在於,SSS 需要首先由單方生成一個私鑰,然後再通過密碼學分割私鑰並分發給各方,簽名時也必須先重構完整私鑰,因此私鑰仍然有在前端暴露的風險;而 TSS 不論在密鑰生成還是簽名的階段,都是通過分佈式計算進行、而不需要進行重構,因此避免了暴露風險。SSS 方案使得 Web3Auth 存在一定安全缺陷,MPC 錢包的後起之秀通常都使用 TSS。
下圖展示了 2-3 模型,也是 Web3Auth 採用的基礎模型,即需要 3 個分片中的 2 個分片參與才能完成簽名。其中,設備分片存儲在用戶的本地設備中;OAuth 登錄分片由節點網絡進一步分割存儲;備份分片由用戶自行存儲,可以存儲在單獨的設備或通過密碼訪問。
用戶在登錄時,首先通過 Gmail 等第三方登錄,獲得 OAuth 登錄分片;再用存儲在本地設備的設備分片,就可以重構完整私鑰。當用戶登錄新設備時,必須同時用到第三個分片,也就是備份分片來實現登錄。此外,通過用戶也可以自己設置不同的閾值模型,比如 3-4、4-5 等等。
Particle Network 採用 TSS,相對 SSS 更安全。其閾值模型採用 2-2,客戶和官方分別保管一部分分片。客戶端的分片由 Particle 或第三方雲服務提供商存儲在雲端,通過郵件 OTP 或社交登錄驗證後調用。但是,客戶端密鑰本質上不受保護,服務提供商可以訪問該密鑰,這一方案依賴於客戶信任 Particle 或者第三方提供商 [1]。
獲客方式是所有錢包都面臨的難題,因為絕大部分 ToC 市場都已經被佔據。Web3Auth 和 Particle Network 都採用 ToB 策略,通過服務項目方來獲得用戶量。值得一提的是,使用了 Particle Netowork 錢包服務的 Web3 遊戲 Power of Women 曾一度登頂美國區谷歌商店遊戲總榜,成為了 Web3 遊戲破圈的一個標杆案例。MPC 錢包提供了絲滑的登錄體驗,對於 Free to Play 的遊戲來說是一個非常重要的降低門檻的方式,可以預見未來低門檻的 Web3 項目很可能會大規模採用類似的登錄體驗。
2.2 智能合約錢包
上文說的「MPC 錢包」是使用了 MPC 技術來保管私鑰的錢包,「智能合約錢包」則是錢包本身的一種類型。
在 EVM 有兩種錢包類型,一種是 EOA 錢包(Externally Owned Accounts ,外部控制賬戶),由任何人通過私鑰控制;另一種是 CA 錢包(Contract Accounts,合約賬戶),部署在區塊鏈上,由合約代碼控制,這也就是智能合約錢包。
目前我們使用的絕大多數錢包都是 EOA 錢包,如小狐狸。事實上,智能合約錢包由於可以自定義合約代碼,實現的功能遠比 EOA 錢包豐富,例如賬戶找回、預設執行邏輯等;但是目前普及度並不高,主要是由於使用成本高,每筆交易都會比 EOA 錢包多出一筆 gas fee。因此,目前的使用場景主要在於「多簽」這樣的機構管理層面,個人用戶採用較少。此外,智能合約錢包沒有私鑰、無法驗簽,因此交易實質上仍然需要由一個 EOA 錢包來調起,個人用戶如果要用智能合約錢包,還需要另外保管 EOA 錢包密鑰,仍然有較高的複雜度。
在針對個人用戶的智能合約錢包賽道,Argent 是一個先行者,2019 年就開始運營至今。Argent 包含兩個產品:
1)移動端 App 錢包「Argent」,在 ETH 和 zkSync 上,實現無助記詞功能;在 ETH 上還有「Argent Vault」產品,提供社交恢復功能;
2)瀏覽器插件錢包「Argent X」,只在 StarkNet 上,是基於賬戶抽象(Account Abstraction)的錢包,後文會再做解釋。
我們先來看第一個產品,移動端錢包 Argent,其中的「Vault」也就是傳統的智能合約錢包。
前文說過,EVM 上的智能合約錢包沒有私鑰、無法驗簽,發起交易時仍然需要另一個 EOA 錢包,因此使用 Argent 移動端時,實質上是首先生成了一個 EOA 錢包,接著再生成一個智能合約錢包「Vault」,這一步需要額外支付 gas fee。
「無助記詞功能」是在生成 EOA 錢包這一步,通過手機本地存儲私鑰來實現的。用戶只需要郵箱或者電話就可以註冊生成 EOA 錢包,私鑰存儲在手機本地、無法導出;與此同時會有一份備用私鑰存儲在雲端,在用戶更換設備時使用。具體步驟為:備份私鑰被加密後存儲在用戶的 iCloud 雲端,而解密密鑰由 Argent 掌握。用戶更換設備時,從 iCloud 獲取加密後的私鑰,再通過郵件電話驗證後從 Argent 獲取解密密鑰,從而獲得備份私鑰。此外,Argent 在發送解密密鑰前等會先通知用戶並等待兩天,給用戶充足的緩衝時間,防止盜竊行為。
「社交恢復功能」在是在生成「Vault」後,通過智能合約錢包實現的,目前只在 ETH 上。值得一提的是,目前「Vault」功能只針對 5 萬美元以上存款的用戶才提供,門檻不低。設置 Vault 後,用戶可以添加 Guardians(守護人),可以是任何錢包,包括 EOA 或者 CA,這些被指定的錢包在用戶丟失密鑰後可以簽名生成一個新的賬戶設定為錢包 Owner,以此來實現社交恢復。此外,錢包 Owner 還可以設置是否需要 Guardians 批准交易、是否在指定時間段內任意交易等等。
根據 Dune 顯示,目前有 7 萬多個 Argent 合約錢包,總計存儲了 7.6 萬個 ETH。
接著再來看第二個產品,瀏覽器插件「Argent X」。事實上,Argent 公司近期的高估值更多是由 Argent X 之稱的,因為這是 StarkNet 上的第一個錢包,也是基於賬戶抽象的錢包,代表了錢包賽道的新方向。
「賬戶抽象」是以太坊社區對於錢包發展方向的一個共識概念,可以簡單概括為:將 EVM 中的實體(賬戶)與移動資產的所有權的實體(密鑰對或簽名者)進行解耦,換言之就是把所有賬戶都變成 CA[2]。前文提到,EOA 和 CA 是 EVM 中的兩種賬戶類型,CA 無法驗簽,因此必須依賴 EOA 主動發起交易;而在實現了賬戶抽像後,CA 將不再依賴 EOA 就可以發起交易,實現更多的自定義功能。
聽起來很美好,但這裡仍然有很多問題,一是技術實現上仍然有很多工作,比如 Argent X 現在的功能非常有限,還沒有做到在 ETH 實現的 Guardians 社交恢復功能;二是智能合約錢包歷來面臨的 gas fee 問題依然存在,在 Layer2 上雖然有所好轉,但是依然不如同鏈上的 EOA 錢包。gas fee 問題最終的解決方案,是通過批量交易來攤薄額外支出,從這一點來講智能合約錢包確實是未來的發展方向,有潛力做到比 EOA 錢包更便宜。當然,這就要看賽道上各路英雄的開發速度了。
2.3 MPC+智能合約的混合方案
前文介紹的「MPC 錢包」和「智能合約錢包」其實是兩個維度的描述,前者是疊加在錢包之外的一層鏈下驗證技術,後者則是錢包本身的一種類型(相對於 EOA 錢包)。這兩種錢包並不衝突,事實上也確實存在兩者相結合的混合方案:Unipass 就是在智能合約錢包的基礎上,疊加了 MPC 技術。
智能合約錢包的典型功能,就是可以設置多個密鑰來管理同一個賬戶。例如在 Argent Vault 中,用戶可以添加 Guardians,在在用戶丟失密鑰後生成一個新的賬戶並設定為錢包 Owner;在 Gnosis Safe 中,用戶可以添加多個錢包來實現門限簽名。Unipass 同樣通過一系列具有角色權重的密鑰來管理賬戶,較之 Argent Vault 和 Gnosis Safe 更為豐富,主要有三種角色:
1)Owner:設定為這類角色的密鑰可以控制賬戶,有最高權限;
2)Operator:這類密鑰可以轉賬、交互合約、授權等,是用戶最常用的角色;
3)Guardians:這類密鑰可以在其他密鑰丟失時,用來恢復賬戶,效果等同於 Argent Vault 的社交恢復。Unipass 更先進的地方在於,Argent Vault 只允許綁定 EOA 錢包作為 Guardians,而 Unipass 則可以綁定郵箱而非錢包來做社交恢復,大大降低了用戶門檻。
上述功能體現了智能合約錢包的特性,而 MPC 則體現在上圖中的 Master Key 中。Master Key 是默認會為用戶生成的主密鑰,包含 Owner 和 Operator 角色,可以說是 Unipass 賬戶中最重要的密鑰,而這一密鑰的生成管理使用了 MPC 技術。
MPC 方案在分片存儲上存在這樣一個困境:如果客戶端分片由用戶保管,那麼就存在丟失風險;如果客戶端分片實質上仍然由第三方保管(如 Particle Network),就存在中心化風險,密碼可以被服務商訪問。Unipass 選擇了前者:客戶端分片中的 Password 由用戶自己保管,允許丟失,萬一丟失的情況下可以通過 Guardians 來進行社交恢復。相對於純 MPC 錢包,Unipass 在保持去中心化的前提下,通過智能合約的社交恢復來保證賬戶安全。
此外,Unipass 也支持 ERC-4337 協議,未來可以提供賬戶抽象所實現的功能。
3. 總結
本文從「無助記詞」的場景出發,探討了幾種典型的實現方式。第一種是以 Web3Auth 和 Particle Network 為代表的純 MPC 錢包,這類錢包仍然是 EOA 錢包,只是將私鑰分片。MPC 方案簡單高效,但是面臨中心化或者密鑰丟失風險。第二種是以 Argent 為代表的智能合約錢包,Argent 通過手機本地存儲密鑰來實現無助記詞功能,並通過智能合約的社交恢復來保障賬戶安全,應對密鑰丟失。第三種則是 Unipass 的 MPC+智能錢包混合方案,將最主要的密鑰通過 MPC 技術實現無助記詞,再通過智能合約的角色權重管理來實現社交恢復,達到和 Argent 一樣的目的。
可以看到,「無助記詞」本質是這樣一種取捨:用較低安全級別存儲密鑰的方式,來提升用戶登錄便捷度。相應地,要么用部份託管的手段來應對密鑰丟失風險,要么通過智能合約的社交恢復來保證安全。智能合約錢包並不能直接實現無助記詞功能,但是其社交恢復卻能給低安全級別的密鑰存儲帶來托底保障,而且去中心化的實現方式更符合 Web3 價值觀。
不過另一個值得思考的問題是:什麼樣的用戶需要無助記詞錢包?Web3 用戶幾乎人手多個小狐狸賬號,是否會註冊新錢包完全取決於項目方集成了什麼錢包,在這樣的背景下,無助記詞錢包似乎更適合 Web2 用戶。但是這部分用戶原本就是需要教育、獲客成本更高的群體,很難轉化成高價值 Web3 用戶。無助記詞錢包面臨著類似社交賽道的問題:如何吸引大批量、低資產屬性的用戶。
參考资料:
[1]https://mp.weixin.qq.com/s/TF2FCQDyyApzEVHQjxgZRg[2]https://www.ethereum.cn/Technology/account-abstraction免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。本文內容僅用於信息分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。