MetaMask Snaps
MetaMask Snaps(https://metamask.io/snaps/)是一个旨在推动Web3发展的项目。虽然这个项目被冠以“理想主义”的标签,但我更愿意称其为Web3的小程序,或者更为精致地称之为“dApplet”。
作为开发者,尤其是中国的开发者,应该对这个概念并不陌生。近年来,我们常听到诸如“生态打造”和“超级App”之类的互联网术语,许多商业巨头希望通过打造封闭的生态系统,将自己从服务提供者转变为标准制定者。
如今,这种趋势也逐渐蔓延到Web3领域。
到今天(2024年6月),尽管Snaps已经面世近一年时间,但普通用户对它的了解依然有限。身边一些密切关注加密货币市场的朋友,每天使用MetaMask如同日常习惯,却对MetaMask Snaps知之甚少。然而,当我向他们解释Snaps类似于“小程序”时,他们总会露出会心的微笑(大多数都是前端开发者)。
这个情景让我想起微信小程序刚推出时的情形。由于功能入口不明显,使用量很低。直到入口被移至首页下拉菜单后,使用量才开始显著增加。MetaMask若想构建生态,如何吸引用户进入生态门槛,显然是一个亟待解决的问题。
小程序自诞生以来,一直备受争议。前端工程师普遍认为小程序是互联网巨头垄断流量的工具,对技术发展贡献有限。Web3的Snaps是否能对社区有所贡献?通过浏览MetaMask的文档,我越发觉得未来的Snap开发者将面临诸多挑战。
从MetaMask开启Snaps公共测试版到现在已经将近一年,然而其官网上列出的可用Snaps数量并不多。截至2024年6月,仅有68个。要知道,早在2020年左右,官方就已经提出了Snaps的概念,Web3公司与开发者本应有充足时间来了解并开发它。
一些 Snaps
我尚未见过专职开发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 类型
-
账户管理(Account Management):
这类Snaps主要通过MPC(多方计算)技术,提高私钥的安全性。例如,Capsule、Silent Shard和Safeheron。它们通过不同设备维护同一份密钥,最大限度保护私钥免遭泄露。 -
互操作性(Interoperability):
这类Snaps提供对非EVM网络的兼容,如Solana、Cosmos、Near、Sui等,占据了整个Snaps生态的一半以上。 -
通知和聊天(Communication):
这类Snaps允许用户通过链发送消息,虽然当前使用量不大,但未来潜力可期。 -
安全(Security):
这类Snaps满足交易和签名时的安全需求,通过提供更丰富的交易信息,帮助用户避免资产损失。
结语
MetaMask希望通过Snaps扩展其领域,但未来能走多远仍需观察。与Web2的小程序类似,简陋的小程序服务难以与完整的App相比。Web3的Snaps也可能面临类似问题,如果各大钱包纷纷推出自己的Snaps平台,开发者需要为不同平台开发相应版本,可能导致兼容性问题。
尽管如此,MetaMask Snaps由一群有激情的开发者构建,致力于解决实际问题。对于大多数MetaMask用户来说,Snaps目前还不是必需功能,MetaMask需要在推广方面下更多功夫。