对于 MetaMask 眼下的大部分用户来说,Snaps 确实还不算是一个特别必须的功能。
作者:gin-lsl,ZAN Team
封面:Metamask
MetaMask Snaps(https://metamask.io/snaps/)是一个有很长远理想的项目。不过,抛去它所披着的 “理想” 的外衣,笔者更愿意称它为 Web3 世界的小程序。或者给它取一个花哨点的名字:dApplet。
作为开发者,特别是中国国内的开发者,应该对它的概念并不陌生。我们近些年常会听到 “生态打造”、“超级 App” 之类的互联网黑话,商业巨头们总是想要将互联网打造的越来越封闭,以便让自己从服务提供者的角色转变为标准制定者的角色。
现在,这股风潮似乎也开始慢慢向 Web3 领域飘荡了。
到今天(2024 年 6 月),虽然 Snaps 已经出现了快要一年时间了,从概念提出更是至少 4 年了,但是普通用户对它的了解却几乎没有。笔者身边有一些非常关注加密货币市场的朋友,每天打开 MetaMask 就像吃饭睡觉一般自然,却仍然连 MetaMask Snaps 是什么都不知道。不过,在笔者向他们解释 “就像小程序那样” 之后,脸上也总是会立马出现一抹难以言喻的微笑(他们都是开发者,大部分是前端开发者)。
这场景莫名让人联想到微信小程序刚出来时的境况,由于功能入口不明显,使用量很是低微。后来将入口改到在首页下拉出现小程序列表后,使用量才开始大幅增长。MetaMask 既然想打造生态,那么如何吸引用户进入生态大门,恐怕会成为一个亟待解决的重要问题。
小程序从出现开始,在互联网行业就争议不断。前端工程师普遍对它的出现嗤之以鼻,认为它就只是互联网巨头为了垄断流量、封锁生态的商业工具,对于技术发展并没有太多贡献。Web3 的 Snaps 不知又能对社区有多少贡献呢?浏览 MetaMask 提供的文档,愈来愈觉得未来的 Snap 开发者将会饱尝带着镣铐跳舞的艰辛。
从 MetaMask 开启 Snaps 的公共测试版到目前已有将近一年的时间,然而其官网列出的可用的 Snaps 数量其实还不是很多,截止 2024 年 6 月,满打满算也只有 68 个。要知道,在正式公测之前,早在 2020 年左右,官方就已经提出了 Snaps 的概念,Web3 公司与开发人员其实已经有相当长一段时间来对它进行充分的了解。
笔者还没有见过专职开发 Snaps 的开发人员,不过身边 Web2 中的小程序开发者还是有不少的,对小程序的普遍看法就是开发体验比较差。小程序开发使用的依然是前端生态,但却是阉割版的,厂商因为各种各样的原因对开发者实际能做的事情进行限制。并且各厂商的技术能力、提供的文档质量参差不齐,导致开发者要在各种平台踩过各种奇奇怪怪的坑之后,才能被人称赞一句 “有经验”。
再回到 Web3,出于安全等因素考虑,Snaps 极有可能面临着相似的状况,它不得不在一个隔离的安全上下文中运行,所使用的是 “安全 ECMAScript”,实际上是对 JavaScript API 做了一些限制,例如无法访问 DOM、Node.js、浏览器插件 API 等。
由于可理解的安全考量,一个最基本的 Snaps 其实做不了太多事情。它的大部分功能都需要先具有相应的权限,所以 Snaps 在安装时就需要向用户申请相关的权限。可用的权限包括生命周期、交易、签名、CRON 等:
https://docs.metamask.io/snaps/reference/permissions/#eth_accounts
所以,相比于繁荣的 Web3 生态,目前可用的 Snaps 少的可怜,MetaMask 将它们做了一些分类。
Snaps 类型
按照 MetaMask 官网的分类,大致能分为 4 种类型:
账户管理 Account Management
这类 Snaps 主要通过 MPC(Multi-Party Computation,多方计算,https://blog.usecapsule.com/what-is-mpc/)技术,提高私钥的安全性。
想想我们平时是怎样保护私钥的呢?大概很多人会将助记词保存在某个地方,笔者猜普遍是自己的电脑或者手机上,哈哈。当然,如果你非常富有,钱包中的资金非常多,那么你确实可能会使用保密性更强的方式,例如使用硬件钱包。但是大多数人,说真的,仅仅是将他们的助记词粘贴在某个自己很方便就能找到的地方,以避免自己完全忘记。
这种保存方式可能会造成一些问题:
- 如果你忘记把助记词放在哪里了,那么你大概率是要和自己钱包中的资产说再见了。
- 如果你保存助记词的设备遭遇木马病毒,则很难防止黑客盗窃你的助记词。有些用户可能为了提高安全性,将自己的助记词拆分,然后分别存放。这也许能增加一些安全性,却无疑也增加了自己的管理难度与遗忘的风险。
而 MPC 技术,则可以自动将你的私钥拆分为多份,分别放到不同的地方存储,只在当需要使用私钥进行交易签名时,再将它们拼接起来生成完整的私钥,同时这个过程中并不会生成完整的私钥,最大限度保护私钥免遭泄漏。
到目前(2024 年 6 月)为止,还只有 3 个账户管理类的 Snaps,分别是 Capsule, Silent Shard 和 Safeheron。
- Capsule 使用了设备的 PassKey、恢复密码和 2FA 共同维护同一份密钥,同时如果丢失了某一个,则可以通过另外两个来恢复。
- Silent Shard 和 Safeheron 是通过使用多台设备安装它们的 App 的方式来实现这一点。
很难说这类 Snaps 能吸引多少 Web3 用户,从 Snaps 网站上显示的数据来看,这类型的 Snaps 确实很少,安装量也并不高。
它们使用起来并不复杂,这里不再赘述。安装完成后,你的 MetaMask 钱包中多出一个地址:
互操作性 Interoperability
这类 Snaps 主要提供了对非 EVM 网络的兼容,我们能看到许多熟悉的链,包括 Solana、Cosmos、Near、Sui 等等。目前这类是最多的,它们占据了整个 Snaps 生态的一半以上。
通知和聊天 Communication
笔者个人更喜欢这类型的 Snaps,不过在当下,可选的聊天应用那么多,愿意通过链来发送消息的用户显然还是少数。那么很遗憾也只能继续 “战未来” 了。
安全 Security
这类的需求想来还是比较大的,特别是,MetaMask 自身在用户遇到钓鱼交易时的警告做的其实并不够。交易作为加密货币和区块链领域最常见的操作,本身具有高风险和高敏感的特点,通过 Snaps 提供的交易洞察相关功能,开发者可以对用户展示更丰富的交易信息,提供对交易的分析和见解,最大限度避免用户的资产损失。
笔者身边就有朋友曾遇到过被钓鱼网站转走账户余额,而 MetaMask 从连接钱包到转账成功,全程毫无警告的情况,无奈之下只能换用其他钱包。而且笔者当时对 Snaps 也并不了解,只是给他推荐了 ZAN 的 KYT(https://zan.top/home/know-your-transaction?chInfo=ch_wxdyh)服务来保护他的交易。希望这类安全型 Snaps 能够弥补 MetaMask 自身的不足。实际上,从 Snaps 官网显示的数据来看,安全型 Snaps 也确实是除了多链支持外需求最大的,目前占据了总数的两成。
MetaMask Snaps 提供了 endowment:transaction-insight
和 endowment:signature-insight
权限来满足相关需求,Snap 申请相关权限后,可以在用户发起交易或签名时,可以读取到原始交易或签名的有效负载。Snap 可以对其进行分析,然后向用户显示更多更丰富的安全性说明。
想法
MetaMask 想要通过 Snaps 将自己的领域扩张到其他链平台,但是最终究竟能走到多远,恐怕很难如其所愿。拿 Web2 领域的小程序来说,虽然很多 App 提供了小程序版本,但是往往,简陋的小程序所提供的服务远无法与 App 相比,对新功能的跟进也经常落后,甚至许多小程序会将用户直接往自己的 App 引导。而到小程序爆发式增长后,更多 App 也都想来分一杯羹,又纷纷推出了自己的小程序平台,各家努力加固着自己的护城河,整个 Web 世界越来越 “中心化”。
Web3 领域的资本也并不会比 Web2 的更高明,如果后面 Snaps 发展良好,那势必会有更多钱包跟随。如果真的到了这种地步,Web3 领域的开发者需要针对各个钱包的 “Snaps” 开发相应的版本,届时恐怕会让他们焦头烂额一段时间。只是,倘若各厂商都来打造自己的 “Snaps” 生态,又几乎等于全部没有自己独有的生态。咦,这似乎倒是也暗合它们 “去中心化” 的标签了。
我们也许能稍微预测一下,未来可能会有各种 “Snaps-like” 出现,平台差异巨大,此时对各平台的兼容成了开发者们的日常工作,最终到了不可忍受的地步。于是 Snaps Standard 在众多开发者的期待中诞生了,同时会有各种 “SIP” 供人们参与讨论,社区一片繁荣景象……
抱歉笔者个人似乎有些对 MetaMask Snaps 太没有信心了点。无论怎么说,它至少是由一群有激情的开发者所构建的、想要解决实际问题的产品,而不是由一群金融专家发起的骗局。
只是,对于 MetaMask 眼下的大部分用户来说,Snaps 确实还不算是一个特别必须的功能,MetaMask 接下来恐怕需要在如何更有效的推广方面做更多工作。
免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。文章内的信息仅供参考,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。