我之前已經討論過去中心化應用程序(dapps)的產品可組合性,但是使用了一個相當簡化的技術堆棧圖:

實際上,我跳過了兩個層面(錢包和sdk),而且使用多鏈dapps增加了一些複雜性:

在本文中,我將討論為什麼這種額外的複雜性會導致人們更加關注可組合錢包對用戶和開發者的重要性。通常,在開發的最後階段,當團隊決定嵌入盡可能多的錢包連接時(假設這是一個團隊同時處理產品的前端和智能合約層),就會想到錢包。這是很好的,因為現在大多數dapps在用戶交互中相當簡單(即,批准+存款,出價/購買,或交易)。在互動前後沒有太多需要管理或撰寫的內容。

但當我們的生態系統變得更加複雜時,會發生什麼呢?在不遠的將來,我們將開始以技能、信用評分、社交圈等證明代幣的形式管理我們自己的數字身份。這導致了新的交互市場,這是我們今天使用的典型協議以及要管理的複雜網絡和用戶關係之前的一個步驟。考慮到這一點,我產生了一個問題:用特定的前端來管理這些內容是否有意義?Web 2.0的方法是創建另一個聚合平台/網站,但我不確定我喜歡讓一個網站跟踪我如何管理我的身份和我的網絡。我認為這種私人的事情應該在個人主權和隱私最高的錢包層面處理。

雖然我不介意為不同的協議訪問不同的站點,但我不想使用多個錢包提供商來管理我的鏈上交互的不同方面。這很笨拙,而且每次都會增加安全風險。但擁有一個錢包意味著我被其背後的開發團隊的內在風險所束縛——更不用說他們已經或尚未添加的功能了。請記住,我們目前生活在一個快速發展的生態系統中,沒有任何一個團隊能夠跟上我們的步伐。

這就是錢包可組合性開始發揮作用的地方。或者我想這麼說,但我還沒有談到真正組成錢包的東西。當涉及到DeFi和許多以太坊dapps時,我們已經有了金錢lego,所以我將稱之為錢包可組合訪問lego:

這四層中的每一層都應該允許用戶靈活地選擇產品,每一層都應該提供產品提供者可定制的lego。

有很多東西需要了解,所以讓我們快速回顧一下加密錢包的歷史,以幫助我們更好地理解所有這些lego,以及我們是如何實現現代錢包的。

以太坊錢包簡史

第一個以太坊錢包是受比特幣Qt錢包的啟發,來自像Mist這樣的供應商。

Mist看起來非常熟悉,以下載軟件的形式出現,帶有可導出的交易數據和區塊管理器/同步:

這個錢包應用本質上是試圖將以太坊的所有東西捆綁到一個應用中——這有很多依賴關係,而且用戶體驗總體較差。 MetaMask在2016年推出,作為我們第一個基於瀏覽器的錢包之一。有了這個,dapps現在可以通過嵌入錢包連接來與錢包分離。隨著生態系統的發展,這變得非常重要,因為單個團隊要跟上eip和開發的代幣/協議的所有演變是極其困難的。我想指出的是,雖然這增加了dapp產品的可組合性,但這還不是前面訪問lego圖中顯示的錢包內的智能合約集成。除了像WalletConnect這樣的新集成之外,這部分暫時還沒有真正改變。

嵌入錢包連接的例子

現在錢包的一些責任和負擔消失了,它的新重點是建立交易、簽名和維護與區塊鏈的連接。我不會太深入,但交易構建意味著接受來自dapp的一些交易參數,但其他參數只在錢包的控制之下。這將進入到EIP-1193最初定義的錢包(也稱為提供者)的可用RPC調用中。 dapp可以發送交易參數,如地址,數據,gas限額/價格和價值,但不能控制鏈id,發送者的地址。

現在有了這個新錢包,我們有了兩個更複雜的用戶體驗:

記住其他朋友/用戶的地址是困難的,可能是不安全的,容易出現人為錯誤。字節碼數據是人類無法讀取的,除非您非常熟悉函數選擇器和數據/參數散列。祝你好運!

對於第一點,ENS在2016/2017年推出EIP-137和我們的第一款社交lego。這允許任何人用一個網絡域名(比如用戶名:vitalik.eth)來表示他們的以太坊地址,並在消息/傳輸中使用該域名,而不是長地址。這只是社交智能合約層的一部分;其他的解耦/使其可組合要復雜得多。

關於第二點,Parity創建了一個方法註冊表,它被廣泛用於在錢包簽名界面中提供人類可讀的消息。 EIP-712在可讀消息簽名中發揮了重要作用,儘管它只是最近才獲得更多的關注。然而,即使有了這些,也很難保證用戶的瀏覽器沒有被黑客攻擊或欺騙而顯示不同的交易/消息。這是擁有熱錢包(一個始終連接到互聯網並且不能安全地與計算環境的其他部分分離的錢包)的最大問題之一。

常見的解決方案是硬件錢包,由萊傑從2014年開始開創。 MetaMask在2018年首次通過Ledger添加了硬件錢包支持,正式將安全層從交易/連接層解耦。我們稍後會回到這一點,由於Ledger作為冷儲存正運行的很好,但是新產品已經有了很大的改進。

上面那個像USB一樣的東西是一個Ledger錢包。

與此同時,我們開始看到許多複雜的協議,直到2020年夏天(其中許多是在2-3年的時間內建立的)。這給了我們越來越多的代幣,它們的估值越來越高,我們需要學會安全管理。為了幫助解決這一問題,創建了dapp的RPC端點,以將代幣添加到錢包跟踪的列表中。更多用於管理資產的工具被創建,比如Argent保險庫和Gnosis多簽名保險箱(鑑於其多用戶和DAO特性,我將這兩種工具歸入社交層)。 dapps還創建了用於共享數據的許可連接(EIP-2255),以防止不受歡迎的電話打到錢包。使用Zerion和Zapper將投資組合管理/資產聚合器和分析器從錢包中分離出來(我們將在下一節中討論這兩個)。

自2019年以來,我們也看到了移動錢包的增長。 Rainbow錢包是最好的例子之一,因為他們在為用戶體驗設計方面做得很好。然而,他們在設計無縫集成方面才剛剛起步。

大多數其他移動錢包(如MetaMask mobile和Coinbase Wallet)嘗試在應用中構建一個dapp瀏覽器,並依賴於深度鏈接,而不是直接集成。這些深度鏈接並不能提供出色的用戶體驗,而且以太坊上為一個錢包團隊構建的產品太多,無法設計一個能夠容納所有這些產品的界面。假設每個錢包應用團隊都針對特定的用例(消息、NFT交易/市場、定義等)優化用戶體驗。然後,我現在的安全問題乘以我使用的錢包的數量。如果每個應用程序的安全性都被解耦,那麼這可能會最小化——但在每個細分市場,dapp開發人員現在將不得不處理進入該系統的準備時間。 Rainbow團隊實際上是從一個錢包聚合器/經理開始的(基於他們2019年的GitHub回購),所以我相信他們已經考慮過這個問題了。也就是說,我們可以看到智能合約接口是半解耦的,但是集成還不能組合。換句話說,所有的dapps都可以推送到錢包,但錢包不能推送到所有的dapps。

既然錢包的層次或多或少已經被定義了,我們可以回到談論存取lego。這些lego和下面的分析部分取決於我的信念,我們將在錢包產品中更多地轉向dapp,比如MetaMask交易和Rainbow展示功能。

這是基於幾週的研究和我在這個行業的個人經驗的總結,所以我完全有可能把一些項目的時間線弄亂了。如果是的話,請聯繫我,我可以編輯這篇文章,做必要的修正/添加。

分析訪問lego

現在我們對以太坊錢包有了更好的理解,讓我們來談談我所說的“訪問”。這裡的Access通常代表用戶對資金和協議的訪問,以及協議(被許可的)對用戶和他們透露的數據的訪問。對於access lego,我想到5個關鍵功能,可以幫助更好地定義錢包可組合性的基本要求:

安全性可以從用戶界面解耦到任何硬件或軟件解決方案中,而無需犧牲自定義。用戶應該能夠訪問任何他們想要的應用程序,而不必擔心過時或集成時間。協議應該能夠訪問用戶,而不必擔心被棄用或推動集成。任何人都不應該擁有集成市場。不應該犧牲用戶和開發人員的體驗。

讓我們深入了解⬇️:

安全定制

我相信硬件到錢包的連接正在成為我所見過的幾乎所有錢包的標準連接方式,無論是通過USB、無線還是藍牙。所以脫鉤通常不是問題所在;相反,問題仍然存在於硬件錢包本身。

種子存儲、生成和恢復都是值得一讀的有趣話題,但當我們擺脫純“冷存儲”時,到時候這些只是硬件錢包的一個方面。合約ABI和消息解碼簽名和事務限制/靈活性為用戶添加了定制(和可讀性),這在每一層中都很重要。

一個很好的產品例子是GridPlus團隊的Lattice1;在這裡,用戶有一個硬件錢包,可以使用SafeCard交換地址。這個錢包有一個64GB的固件環境,並允許用戶從任何合同導入ABI,以幫助解碼正在簽署的交易數據。

從https://wallet.gridplus.io/管理Lattice1。這甚至比eth-method-registry更安全(特別是當智能合約所有者沒有註冊他們的合約時)。

隨著價值和身份/聲譽與用戶的錢包聯繫在一起的持續增長,我相信這樣的整合將變得越來越重要,。

集成市場

功能2、3和4都可以被捆綁到一個概念中——為用戶的錢包創建一個dapp集成市場。從某種意義上說,主要的“錢包”是可以插入安全性和所有集成的平台。這可能總是“交易和連接”層。

我相信MetaMask snaps是朝著正確的方向邁出的一步,它允許dapp開發者通過構建自己的界面和集成來插入現有的MetaMask錢包UI,用戶可以選擇他們想要的利基組合——在錢包中形成一個市場。如果我喜歡某一套產品用於投資、收藏或社會識別,那麼我可以從dapp團隊自己那裡獲取,然後在我的錢包裡私下使用。錢包團隊無需手動構建下一個ENS,BrightID或證明代幣。或每月彈出的數十種新的DeFi協議中的任何一種。市場對於長尾社區和DAO很重要,它們可能都有自己最常用的dapp /產品列表(或者更有可能開始構建自己的)。如果集成總是由錢包團隊構建或推動,那麼只有最主流的dapp才能在99%的情況下實現。

關於市場所有權的話題,我樂觀地認為這些插件都應該在開源存儲庫中列出(類似於Dune Analytics在回購中展示所有幕後視圖的方式)。我不希望Web3.0再次出現谷歌Play或Apple App store的訪問限制和成本影響。最重要的是,如果某天MetaMask因為某種原因被棄用,沒有人會想浪費所有的dapp插件。

用戶和開發者體驗:

集成速度/缺少dapp功能不應該限制用戶體驗。我認為這一點已經說得相當清楚了。開發人員的經驗目前面臨兩個問題:

由於產品的可組合性,任何人都可以構建任何東西。但是誰負責建造什麼呢?與錢包或聚合平台集成的標準是什麼?

我認為我們缺少協議SDK的標準化,導致許多前端/錢包開發者不得不尋找並建立他們自己的連接。最重要的是,大多數錢包沒有一個乾淨的dapp集成方法(deeplinks不算),而Zapper依賴於一個不透明的請求系統。這對各方來說都是相當痛苦的。

但也有積極的例子。一些協議,如Uniswap和Superfluid,都有自己優秀的Javascript sdk。我已經提到了錢包集成方面的MetaMask快照,但是Zerion(雖然不是錢包)也有一個很好的集成SDK和開放適配器市場。擁有從協議到錢包的快速而獨立的集成方法,將為開發人員帶來極佳的體驗,在這種體驗中,任何開發人員都可以實際地將各個部分組裝在一起。我想強調的是,這適用於基礎協議接口,分析和教育等廣泛功能應該直接構建在dapp頁面上(錢包之外),以提供錢包無法獲取的更強或細分用戶體驗。我認為這樣做很好,因為這些功能並不是訪問的核心。

考慮到這一切,錢包團隊可以專注於構建可組合的平台和市場,dapp開發者可以專注於SDK和插件開發,以方便集成。有更多的標準化可能和許多為錢包和庫創建的eip一樣有幫助。

總結

寫這篇文章的想法是在我為Build with Consensys做研究並與錢包構建者交談時產生的。在我的研究中,我偶然發現了一些來自DevCon5 2019年的Dan Finlay (MetaMask的創始人)的舊視頻。我覺得他對錢包可組合性的想法沒有像dapp的可組合性那樣有激情。正如Dan在這篇文章中所提到的,他很早以前就開始推動這一理念:

“在Devcon 2上,我上台呼籲建立一個去中心化的標準機構。我請求其他web3錢包開發人員走到一起,聚集在一個共享的測試套件周圍,為開發人員提供一個跨客戶端穩定的平台。雖然有一些真正的激情和興趣(Casey Detrio說),但最終的不作為和協調成本將這個夢想降級為幻想。”

因此,儘管本文提供了部分信息,但它也呼籲我們(作為用戶和開發人員)在我談到的新應用程序到來之前,多花些時間思考和構建這個重要的空間。用Dan的話來說,這將幫助我們提供一個更安全、可用和有用的以太坊體驗。用我的話來說,這意味著每個人都可以組合訪問以太坊。

原文鏈接:https://medium.com/coinmonks/1the-importance-of-composable-wallets-for-users-and-developers-accb2aadff49