我之前已经讨论过去中心化应用程序(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