作者:Norswap,來源:作者推特@norswap;編譯:松雪,金色財經
我為0xFable 思考了一些關於錢包和用戶入門的問題。以下一些熱門話題。我們將討論:
– 我理想的帳戶架構
– 安全考慮
– 現有web3 登入提供者的概況
顯然,在用戶入門過程中,讓用戶安裝錢包軟體並保護助記詞是行不通的。我們需要一些友善的、相當安全的、並且相當面向未來的東西。
架構
每個用戶都有自己的智慧帳戶,有三個密鑰:
1. 設備密鑰, 最初是本地存儲,但希望以後是密鑰/網路身份驗證。
2. 補充密鑰,例如由提供者控制並透過社交登入解鎖的密鑰。
3. 備份金鑰,例如由第三方保管(可以像電子郵件附件或Dropbox / Google Drive 一樣簡單)。
如果這聽起來技術含量低或不安全,恐怕您已經被提供者的謊言迷惑了,因為它們實際上並沒有比這更安全(而且往往不如這種方法安全,例如,(2) 和(3)都由同一方控制)。稍後將詳細介紹。
在此設定中,您可以使用裝置金鑰進行遊戲操作,無需使用者互動。對於資產轉帳和交易,您可能需要補充金鑰。
簡單模式是讓用戶使用Google/Apple/Facebook/…登錄,然後新增確認提示。這使得入門變得容易。但如果使用者需要更高的安全性,則可以用傳統的EOA 替換該金鑰(儘管這可能應該位於另一台裝置或硬體錢包上)。
任何一對密鑰都可以用來代替第三把鑰匙。
因此,備份金鑰是指在其他金鑰之一遺失(特別是裝置金鑰)或提供者不可用或受到威脅的情況下。將備份金鑰簡單地作為託管在雲端上的檔案使此入門變得簡單且無成本。如果需要,該密鑰也可以由硬體錢包或優質提供者替換。
安全分析
這有多安全?大體上來說,是相對安全的!要同時侵入兩個設備或實體才能導致資金流失,但係統是十分強大的。
大多數情況下,存在會降低安全性的配置風險。例如,將備份金鑰託管在您的Google 雲端硬碟上,同時將補充金鑰指派給您的Google 帳戶。或使用熱錢包作為補充密鑰,與設備密鑰具有相同的風險。
用戶可能會遺失備份。定期提示他輪換設備密鑰可能是個好主意,這會迫使他找到備用密鑰。
如果備份金鑰被簡單地存儲,它也很容易被盜。這比熱錢包更糟糕,熱錢包在磁碟上加密金鑰(並且需要密碼才能在記憶體中解密)。所以定期更換密鑰似乎是個好主意。無論如何,增加的金鑰可用性(允許您使用裝置身份驗證登入應用程式)將解決此問題。
了解社交登入意味著對提供者的信任。提供者本質上有一個密鑰,他可以隨心所欲地使用,但他向您保證,在您使用社交帳戶登入後,他只會根據您的需求使用。不要被看似奇特的密碼學主張所愚弄——這也是它的結論。
最後,請注意,只要免費金鑰是dapp 創建者提供的登入名,或者沒有確認提示,那麼dapp 創建者就很容易欺騙用戶(因為他們編寫了擁有設備密鑰的前端,以及擁有或可以控制免費密鑰)。
供應商情況
到目前為止,據我所知,沒有提供這種功能的人。通常問題在於不是沒有備份金鑰,就是由同一實體(例如Coinbase錢包)提供安全保障。
市場主要分為:
-
提供綜合多密鑰解決方案的供應商,可以使用智慧合約或使用多方計算(MPC,一種密碼學技術)將多個密鑰合併為單一EOA。
-
低層級供應商會代管使用者的金鑰,並允許他們在登入後對事務進行簽署。
全端供應商,例如:Particle Network、Privy、Alembic Tech、Magic、Web3Auth、Turnkey、Dynamic、0xPass、Fireblocks、Portal、Capsule、ZeroDev、Keyp、Circle Developers。
密鑰保管商,例如:Lit Protocol 、Amazon 。
是的,有很多。他們都沒有差別,這也有點滑稽。
無論何時,只要商業模式是透明的,這些服務通常會向您收取每用戶每年0.02到0.05美元。這對我來說似乎相當合理。
有趣的是,所有這些工具都被定位為開發工具。似乎沒有一家公司試圖將這些技術應用於成為用戶的主要錢包。
當然,要與現有的dapp 一起使用,你需要安裝錢包軟體。所以這個系統的好處被減少到了去掉助記詞。但你也可以讓dapp 推廣你最容易入門的方式(如果它們整合你甚至不需要安裝錢包軟體)。你獲得了用戶,dapp 獲得了零成本的輕鬆入門。雙贏。
對供應商的擔憂
除了沒有實現我的理想架構之外,這些解決方案通常會引入大型集中化向量,例如REST API,或一些MPC 計算,如果它們宕機,您將無法自己進行這些計算(是否公開發布?經過審計? )。
目前還不清楚如果您想與提供者終止合作會發生什麼。他們擁有(一些)您用戶的密鑰!這與我對Rollups 即服務表達的擔憂非常相似:https://twitter.com/norswap/status/1714386634299314563
在這條推文之後,一位RaaS 創辦人告訴我,在允許輕鬆退出和避免創辦人欺騙用戶(這會對RaaS 造成不良影響)之間需要進行權衡。這也適用於這裡!
以下是如何使用上述架構輕鬆切換提供者:使用者在鏈上提交其社交帳戶(例如gavin@hooli.xyz)的雜湊值。每個社群登入提供者都有自己的私鑰(每個使用者不需要有一個金鑰,而且通常也不會更安全)。智慧帳戶是指保存目前提供者帳戶的單例合約。切換提供者就像更改此帳戶一樣簡單。
最後,我鼓勵您閱讀這則推文:https://twitter.com/gregthegreek/status/1716390418156281993
他的一個要點是,為每個應用程式發行一個帳戶將是一場用戶體驗噩夢。我同意,這是這些提供者應該真正考慮成為可以跨應用程式運行的成熟錢包的另一個原因。
最後的思考
我們顯然正在朝著理想的入門目標邁進。理想的情況是這些易於使用的錢包與用戶直接建立關係。然後,dapp 可以完全忽略這個問題,只需與錢包建立合作夥伴關係,確定預設的登入錢包是誰。
如果做不到這一點,我的解決方案必須是推出我自己的系統- 將您自己的社交登入提供者插入到上面的架構中並不難。然而,我「寧願」使用外部提供者。如上所述,如果dapp 創建者控制免費金鑰,那麼系統就不是完全去中心化的。