APP:可组合钱包的重要性

我曾经讲解过去中心化应用的产品可组合性,当然,用的是非常简单的层叠示意图:

实际上,有两个层级被我省略掉了,就是钱包和SDK;而且,还可以再加上有关“链”的一层:

本文我准备谈谈,为什么这些额外的复杂性会导致人们的视角发生转变:可组合的钱包会对用户和开发者两端都产生越来越重要的影响。一般来说,在走到产品开发的“最后一公里”的时候,也就是开发团队要决定接入尽可能多的钱包时,人们才会想起还有钱包这回事。目前来说这没什么大问题,因为大多数dApp在用户交互上都是很简单的。在互动的前/后没有太多需要管理或表示的东西。

但我们的生态还会变得更加复杂的,那时候怎么办呢?在可预见的未来,我们都要着手管理自己的以token形式体现的数字身份,比如skills、creditscores、socialcircles,等等。这就会在接入我们今天所用的标准协议前产生额外的一个交互步骤、要管理更复杂的网路和用户关系,以及相应的市场。思索这个前景,我们会自问:每个产品都要自己管理一个特定的前景,这合理吗?Web2.0时代的方法就是创建另一个应用市场/网站,但我觉得我不会喜欢再有一个网站来跟踪我怎么管理自己的身份和自己所用的网络。我认为,这样私人的东西应该在钱包层完成处理,因为在这个环境中,个人自主和隐私性是第一位的。

虽然我不介意为了使用不同的协议而跳转到不同的网站,但我也不希望为了管理我的链上交互的不同部分而使用多个钱包。这样很蠢,而且每多一个就多一些安全风险。但如果我只使用一种钱包,那我就把自己跟这个钱包背后的开发团队的内在风险绑定起来了——更不用说总会有他们还没开发的新功能。请记住,我们已经身处一个迅猛发展的世界中,没有哪个团队可以样样精通。

这就是为什么我们需要钱包的可组合性。虽然我想直接开始,但我还没讲到钱包是由哪些部分组成的。在谈到DeFi和许多以太坊dApp时,我们已经有了“货币积木”这个词;因此我准备把钱包的可组合性模块称为“通道积木”。

四个层级中的每一个都应允许用户灵活地选择产品,而每个层级都应由产品提供者提供定制化的积木。

这里有很多东西可以深挖,所以我们先快速回顾下密码学货币钱包的历史,以便更好地理解这些积木,以及我们今天所用的先进钱包服务是如何得来的。

以太坊钱包简史

第一个以太坊钱包的灵感来自BitcoinQt钱包,是由Mist团队做出来的。

图片来源?

Mist钱包看起来跟Qt非常像,都是一个需要下载的软件,然后可以导出交易数据,也支持区块同步/区块浏览:

图片来源?

这个钱包其实是想把一个以太坊节点能够做到的事情都装进一个软件里——那就需要安装大量依赖,整体的用户体验也不好。到2016年,MetaMask出现,是最早的基于浏览器的钱包之一。自此,dApp可以从钱包中解耦出来,只需嵌入钱包的连接方式即可。这一点随着生态系统的成长变得非常重要,因为此前单个团队想跟踪所有EIP的进展和发展出来的token/协议是非常困难的。我想指出的是,虽然这增加了dApp产品的可组合性,这?还不是?上面的“通道积木示意图”中所指的?钱包内?的智能合约集成。这一部分一直到新的集成方式如WalletConnect出现之后才有所改变。

钱包连接方式嵌入示例?

这样一来,钱包的一些责任和负担就移除了,现在它的重点变成了交易构建、签名以及维持与区块链的连接。我不想深究细节,但交易构建意味着要从dApp处接收一些交易参数、并且其它参数要保证完全在钱包控制之下。这使我们走向了对钱包可用的RPC调用,最早由EIP-1193定义。dApp可以发送一些参数如目标地址、数据、gaslimit/price、数值给钱包,但?无法?控制链ID、发送者地址以及nonce等涉及钱包安全的参数。

有了这种新型钱包之后,我们又多了两种复杂的用户体验:

记住其他用户/朋友的地址是很困难的,不安全,而且容易发生人为的错误

交易附带的字节码是不可阅读的,除非你非常熟悉函数选择器以及数据/参数的哈希值。要是你没有合约的ABI,那就有你好看的了。

为了解决第一点,ENS在2016/2017年月EIP-137一起推出,成为了我们的第一块社交积木。现在,大家都可以用一个网站域名来表示自己的以太坊地址,在消息/转账中使用即可免去输入长长的地址。这只是社交智能合约层的一部分;其余部分要花更大的精力来解耦/实现可组合性。

关于第二点,Parity创建了一个“方法注册表”,被广泛用户在钱包的签名界面给出人类可读的信息。EIP-712在此发挥了重要作用,尽管它到最近才获得更多关注。不过,即使有了这些设置,还是很难保证你的浏览器没有被黑或被从而显示出不真实的交易/信息。这是使用热钱包的最大问题之一。

常见的解决方案是一个硬件钱包,开拓者是Ledger,从2014年起步。MetaMask在2018年首日添加硬件钱包支持,正式地解耦了安全层和交易层/连接层。我们后面还会再回顾这一点,因为Ledger作为冷存储钱包固然很棒,但一些新产品也有很大改进。

正上方的即是一个Ledger钱包?

于此同时,我们看到,许多复杂的协议在2020年夏天开始在DeFi世界里领一时之风气。这给了我们越来越多的代币,学会安全管理也变得越来越重要。为了帮助大家跟上圈子的进步,人们创建了一种新的RPC端点,让dApp可以在钱包所跟踪的代币列表中添加种类。更多管理资产的工具被创建出来,比如Argentvaults和Gnosismulti-sigsafes。人们还给dApp的数据分享创建了“许可连接”标准,以防止对钱包的恶意访问。资产管理/资产聚合器、分析器,也因为Zerion和Zapper而从钱包中解耦了出来。

自2019年开始,手机钱包也出现了增长。Rainbowwallet是最佳范例之一,他们的用户体验设计得非常好。但要讲到无缝集成,他们也才刚刚开始。

大多数其它手机钱包都尝试并且在应用内开发了一个dApp浏览器,依赖于deeplink而非直接集成。这些deeplink无法提供很好的用户体验,但在以太坊上开发的产品又多到钱包团队无法设计出一个可以与所有产品交互的大一统接口。假设每个钱包应用团队都专门为一个应用场景做优化——那么,我的安全风险都跟我所用的钱包数量成正比。也许它们都是最小化的,因为安全模块已经完全解耦——但因为市场已变得碎片化,开发者就必须为进入不同的系统排定优先级。Rainbow钱包团队一开始想做钱包聚合器/管理器,所以我认为他们已经考虑过这个问题了。也就是说,我们可以看到,智能合约的接口已经是半解耦的了,但这一集成还不能自由组合,因为钱包团队正是瓶颈。换句话说,所有dApp都可推送到某个钱包来使用,但一个钱包并不能保证所有dApp都支持他们。

现在,一个钱包的所有层级,我们都或多或少有所了解了,现在我们再回头讨论通道积木。这些积木和下列的分析,部分基于我自己的信念:我们未来会走向在钱包产品中直接使用dApp,比如MetaMask提供的币币互换和Rainbow的展示功能。

这些分析是我个人经验和几个星期的研究工作的总结,我完全有可能弄混了一些项目的时间线。如有错漏,请联系我,我可以编辑文章及作出必要的订正/补充。

分析通道积木

有了对以太坊钱包的更多了解,我们就可以谈谈我所谓的“access”的意思了。这里的“Access”通常代表用户对资金和协议的方案,也代表协议访问用户以及他们回传的数据。有了通道积木,我们就可以想象出五种关键的属性、帮助我们更好地定义钱包可组合性的基本要求:

安全性可以从用户界面中解耦出来,放到任意硬件或软件的解决方案中,且无需牺牲定制化特性;

用户能够访问任意应用,而不必担心换代和集成时间;

协议可以访问用户,而不必担心被弃用和需要手动推动钱包集成自己的产品

没有人能控制整个集成市场

不必牺牲用户和开发者体验

一个一个聊:)

安全定制化

我相信硬件-钱包服务的连接方式会越来越标准,对我看过的每一款钱包几乎都如此,无论连接方式是USB接口、无线连接或是蓝牙连接。所以,解耦通常不是问题所在;相反,问题在于硬件钱包本身。

助记词存储、生成和恢复都是值得一读的话题,但当我们都开始使用纯粹的“冷存储”时,就只是硬件钱包的一部分。合约的ABI、解码消息的签名、交易的限制/灵活性给用户带来了定制化的空间,我在上面介绍每一层时都提到了其重要性。

一个很好的产品案例是来自GridPlus团队的Lattice1;这种硬件钱包要搭配专门的SafeCard使用,并用SafeCard实现了地址的可变更。钱包硬件有一个64GB的固件环境,你可以从任意合约导入ABI,来帮助解码你正在签名的交易的数据。

来自https://wallet.gridplus.io/,教导用户管理Lattice1。这种办法可以说比“方法注册表”更安全

我相信这种类型的集成方法会变得越来越重要,因为与你的钱包绑定的价值和身份/声誉会日渐提升。

集成市场

第二、三、四种属性都可以归结为一个概念——为你所用的钱包创建一种集成dApp的市场。从某种意义上上,这里的主要“钱包”是一个平台,所有安全模块和集成都可以接入的平台。几乎总会是“交易和连接”层。

我相信MetaMasksnaps是朝着正确的方向迈出了一步:所有dApp开发者都可以接入已有的MetaMask钱包UI,只需自己开发接口和集成方法即可;而用户可以自己挑选这些碎片的组合——?由此形成了钱包内的一个市场。如果我喜欢某一套用户投资、收藏或社交的产品,我可以从dApp团队处获得产品,然后私下在我的钱包里使用。既不需要钱包团队手动开发对下一个ENS、BrightID或者prooftoken的支持,也不需要给每个月都有成打出现的新DeFi协议服务。这样的市场对于小众的社区和DAO来说也很重要,他们可能有自己的常用dApp/产品列表。如果集成工作总要由钱包团队来做、来推动,那99%的时间里都只会有主流应用。

至于市场的所有权,我乐观地相信,这些插件都应被列在一个开源的库中。我不会希望Web3.0世界再来一个GooglePlay或者Apple应用市场,不论从准入限制还是价值抽取来说。最重要的是,没人希望所有这些dApp插件都会因为MetaMask被弃用而烟消云散。

用户和开发者体验

用户体验不应受制于集成速度/dApp功能缺失。我相信这一点上面已经说得很清楚了。开发者体验当前主要受制于两个问题:

因为产品的可组合性,任何人都能开发任何应用。但谁来负责开发特定的某个东西呢?

得到钱包或者一个集成平台支持的条件是什么呢?

我认为,因为缺乏标准化的协议SDK,所有人都很受罪,尤其许多前端/钱包开发者不得不开发自己的连接方式。此外,大多数钱包都没有一个清楚的dApp集成方法,而Zapper依赖于一个不透明的请求系统。这对所有人都不好。

但也有一些正面案例。一些协议,比如Uniswap和Superfluid,就多有自己的很棒的JavascriptSDK。我在钱包集成环节提过MetaMasksnaps,但Zerion也有很好的集成方法SDK和开放的适配器市场。拥有一个迅捷且独立的协议-钱包集成方法,可以极大优化开发者体验,任何一个开发者都可以将所有部件装在一起。我还要强调,基础协议的接口也是如此,额外的功能如分析和用户教育,应该直接做在dApp页面上,以提供更稳健、更分众化的用户体验,捕获仅凭钱包不足于捕获的用户。我觉得这样做是对的,因为这些功能对于访问功能来说都不是核心。

把所有这些都放在心上,钱包团队就可以专注于开发可组合的平台和市场,而dApp开发者则专注于开发SDK和插件以方便集成。有更多的标准也会有所帮助,因为许多EIP都是为钱包和库而提出的。

结语

本文的观念是我在为BuildWithConsensys作研究并与钱包开发交流时产生的。在我研究期间,我看了DanFinlay在Devcon5上的演讲的视频。我感觉他对钱包可组合性的想法并没有获得dApp可组合性那么多的关注。他从很早开始就一直在推进这一点,因为Dan曾在这篇文章中写道:

"在Devcon2上,我上台呼吁创建一个去中心化的标准化机构。我请求其他web3钱包的开发者加入,围绕一个共享的测试套件,为开发者提供一个跨客户端的、稳定的平台。虽然有人表露出真切的激情和兴趣,最终,无动于衷和协调的代价,使这个梦想变成幻想。"

因此,虽然本文提供了一些信息,但它也是一种请求,希望我们能够花些时间思考这个问题,并开发这个重要的领域,直至我在上面设想的新应用成为现实。在Dan的文章中,他认为这会给我们提供给一个更安全、更好用、更有用的以太坊体验。而在我看来,这意味着每个人都有可组合的通道来访问以太坊。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:0ms0-4:334ms