Foresight News

Posted on Sep 21, 2023Read on Mirror.xyz

Web3 的小程序,MetaMask Snaps 会是非 EVM 生态救星吗?

MetaMask Snaps 能给非 EVM 生态带来的增长或许有限,真正重要的是这条链本身及其应用与产品能否吸引用户。

撰文:Peng SUN,Foresight News

MetaMask 要做 Snaps 插件系统、实现向非 EVM 网络的跨链协议交互的想法最早可以追溯到 2019 年。当时,MetaMask Snap 所设想的用例还是兼容 DNS 域名解析、合约账户与 Layer2 等等,试图通过共享的测试套件,提供一个跨客户端的去中心化标准平台。

一晃四年,当 MetaMask 推出 Snaps 开放测试版、兼容非 EVM 网络时,竟发觉此情此景有些机缘巧合。2019 年「以太坊杀手」、「高性能公链」叙事盛行,DeFi Summer 尚未来临,基于 EVM 的链上应用尚未大行其道,主动兼容多链生态就成为钱包的一大叙事。尽管上一轮牛市使人们认为非 EVM 出路有限,但与以太坊相关的叙事却也随熊市的低谷走到阶段性的尽头。人们开始在以太坊与 EVM 之外寻找新的出路,Cosmos、Starknet、波卡、Dfinity、Aptos、Sui、Solana 等非 EVM 网络都在今年发出了更多的声音。

MetaMask Snaps 与多链的未来可谓天作之合,考虑到 MetaMask 占有 80% 以上的市场份额,这也为 Crypto 大规模采用提供了更多的可能。今天,笔者将对 MetaMask Snaps 现况、技术特点及其未来影响做一梳理与探讨。

一、MetaMask Snaps:支持跨链的「通用 OS」

对 MetaMask 而言,Snaps 是其创建完全无需许可的生态系统的第一步。通常来说,MetaMask 是一个实现 EVM 全链兼容的钱包,如果要对 MetaMask 新增功能或支持非 EVM 网络,则完全取决于 MetaMask 开发团队。但 Consensys 并未选择像 OKX Web3 钱包、Bitget Wallet 等主动实现对 DApp、非 EVM 链的支持,而是希望构建一个开放性的通用系统。

打个比方,我们可以把 Snaps 理解为 App Store 或微信小程序,任何公链、协议与工具的开发者都可以基于一个公开的 JSON RPC API 构建各自的 MetaMask Snap,无需担心应用程序像 App Store 那样会因任意原因而被拒绝上架。如果添加某个 Snap,则意味着可以通过 MetaMask 使用该 Snap 的原生功能。目前,MetaMask Snaps 支持通知、互操作性与交易洞察三种类别,已有 35 个 Snap。

  • 交易洞察类 Snap 可为 MetaMask 中的交易提供 Gas 预测、交易分析、网络钓鱼攻击等提示。目前已公开的 Threat Intel、Tenderly TX Preview、Saferoot、Assets Risk Detection、Kleros Scout、Forta、Blockfence、Web3 Security、Wallet Guard Snap 均是对用户资产、交易,允许用户在单个钱包入口自主,避免被攻击或交易失败。

  • 通知类 Snap 集成的是 Web3 通信协议,既可接收与交易、地址相关的通知,未来当 DApp 繁荣时,用户也可以自主订阅信息流,构建聊天页面。目前通知类 Snap 包括 Web3MQ、app.walletchat.fun 与 Push V1。

  • 互操作性 Snap 主要与非 EVM 网络兼容,为非 EVM 生态提供入口。我们可以看到很多与非 EVM 生态都在主动集成,包括比特币、Cosmos、Partisia Blockchain、Mina、Sui、Aptos、Solana、Algorand、Tezos、Starknet、Arweave、Casper 等等。在 35 个 Snap 中,互操作性 Snap 占了六成以上。

MetaMask 开发了通用 JSON RPC API 接口,将构建 Snap 的权利交还给了社区,开发者无需 MetaMask 团队参与即可独立向其用户推出自行设计的功能,大大增强 MetaMask 可扩展性。譬如,MetaMask 也为 Snaps 提供了 UI 自定义修改与增强功能,目前已有 SIP-7 提案建议通过使用基于 JSON 的格式,允许用户在 MetaMask 主 UI 之外构建自定义的 UI。除此之外,Snaps 还支持 CronJob 指令,允许用户定期查询外部数据,并且可在 MetaMask UI 中新增该数据的界面。更有意思的是,考虑到现在 Snap 仍需打开原生网站才能连接 MetaMask,用户无法通过 MetaMask 直接进入应用程序,而系统的开放性或许将给未来基于 Snap 的 Snaps 聚合器提供可能。

笔者留意到在首批公布的 35 个 Snap 之外,Filecoin 在 2020 年初就开始在 MetaMask Flask 上构建 FilSnap。此后,开发者还构建 SSI Snap 实现 DID 绑定与 SnapShot 投票,通过 CoinChoice Snap 支持自由选择代币支付 Gas 费等等。对 MetaMask 而言,通过 AA 钱包简化用户 Onboarding Web3 的门槛就是核心诉求。UniPass Snap 是当前的用例之一。MetaMask 自己不推出账户抽象,但支持用户通过 Snap 体验智能合约钱包带来的便捷,譬如 UniPass 的免 Gas 支付。Intent 作为一种实现,未来将如何与 AA 相结合,并通过 Snaps 提高用户体验也将是一大看点。近期,Polygon 开发者使用 Snaps 来进行基于意图的交易,能够通过 LLM 实现简单的 Swap,也会大大降低用户的使用门槛。

二、「无畏合作」,基于权限的沙箱隔离技术

MetaMask Snaps 是一个在 Secure EcmaScript(SES)沙盒环境中运行的 JavaScript 程序。SES 是 Cosmos 生态智能合约开发平台 Agoric 所构建的基于 JavaScript 的编程语言,代表着「无畏合作」(fearless cooperation),确保智能合约能够进行安全地互操作。目前,大多数 Web3 应用层都是基于 JavaScript 而编写,而 SES 安全沙箱则可以存储 Snap 数据与私钥。同时,用户数据由 Snap 第三方开发者直接收集,MetaMask 无法访问。

基于权限是指给在沙箱内的应用程序授予特定权限,只有获得许可,Snap 才能访问原生网站的特定功能。通常来说,信息安全领域存在一个最小权限原则(POLA),指的是最安全的系统是权限最少的系统。但信任意味着风险,没有信任,社会也就无法运转。此前,与区块链交互的每一次操作都需要一次签名,但 EIP-2255 协议允许单个权限请求就能实现相同级别的安全性。目前,Snaps 默认支持少数权限,MetaMask 也将对存在风险的权限予以提醒,用户可自行决定承担知情风险。Snap 已公布的权限现包括显示通知、显示自定义对话框、显示交易见解、访问互联网、定期检索、访问互联网、访问以太坊提供商、查看协议公钥、派生 Snap 私钥、在本地存储 Snap 数据、允许 DApp 与 Snap 以及 Snap 之间建立通信等。

在私钥生成方面,由于 MetaMask 基于椭圆曲线 secp256k1,因此 Snaps 的私钥生成也遵循 BIP-32 与 BIP-44 的分层确定性钱包(HD Wallet)方案,接入 MetaMask Snaps 的钱包可基于 MetaMask 密钥(父密钥)派生出一个或多个新的公私钥对(子密钥)。(即便是删除 Snap 后重新安装)只要 MetaMask 私钥不变,Snap 私钥也不会改变。同时,作为插件,Snap 共享着 MetaMask 安全性,Snap 私钥与 MetaMask 私钥一样存储在加密过的本地文件夹中。

MetaMask Snaps 的权限模型与沙箱环境可以确保 Snap 与 Snap、MetaMask 与 Snap 之间的交互是安全的,但与 MetaMask 一样,将私钥存储在本地文件夹中仍需面对电脑被黑的风险。同时,MetaMask Snaps 要做一个开放无许可的生态,这也意味着该平台并不会保证 Snap 的安全性。现阶段 MetaMask 在 Snap 上架时多了一层审核,但未来的风险依然是生态与用户需要共同面对的问题。

三、把生态的方向交还给开发者与用户

目前,关于 MetaMask Snaps 的讨论主要涉及两方面。一是非 EVM 生态与多链的未来将有更多的可能,二是非 EVM 生态钱包将被取代。但 MetaMask Snaps 究竟能给非 EVM 生态带去多少用户与资金或许要打个问号,它要取代其他钱包也不太可能。

MetaMask 想要打造一个 Web3 全生态入口,基于 3000 万的月活用户,无论如何,这对非 EVM 生态而言都是一个巨大的流量入口。但 MetaMask 本身就是一个浏览器插件与移动 App,它并非是一个基于硬件或像 ChromeOS 那样基于云的系统,以及实现所有符合 SES 沙箱要求的 Javascript 开发成本较高,因此 Snap 可能无法承载非 EVM 应用的所有功能。而另一方面,Snap 与非 EVM 生态钱包存在一种竞争关系,但就像微信小程序一样,非 EVM 生态钱包也可以对 Snap 功能予以一定限制,或是对使用原生钱包的用户给予优惠或奖励使其回流。

目前,MetaMask Snaps 无法直接访问各个生态,需要用户通过某一个生态、应用才能连接到 MetaMask Snaps,或许未来生态聚合器类 Snap、在 MetaMask UI 中自定义 Snap 模块会更好地为用户提供入口。不过,笔者认为,MetaMask Snaps 能给非 EVM 生态带来的增长有限,真正重要的是这条链本身及其应用与产品能否吸引用户。

MetaMask Snaps 与非 EVM 生态都很难说谁是赢家,但对开发者来说简直就是天堂。Snaps 天然符合 Crypto 去中心化叙事,这里就像一个自主世界与荒野西部,允许开发者自由地基于 JSON RPC API 构建应用,这里不存在一个通用的标准,而是将自主权与选择权完全交由用户决定。比起对非 EVM 生态的讨论,开发者会在这里构建出哪些好玩的应用更值得期待。

Web3