MetaMask Snap 是什么?
ConsenSys近日正式向公众推出了MetaMask Snaps Open Beta版本。这项创新功能允许用户通过安装第三方开发者创建的Snap应用来扩展钱包功能,为MetaMask带来更多可能性。如果把MetaMask比作微信,那么Snap就是微信小程序,这种类比很好地展现了MetaMask的宏伟愿景。考虑到ConsenSys的行业地位和MetaMask庞大的用户基础,这一创新很可能会重塑整个钱包领域的格局。
目前官方已经推出了35款可用Snap,并建立了专门的Snap应用商店https://snaps.metamask.io/。
部分Snap应用展示
从技术角度来看,MetaMask Snap的实现原理、安全机制、能力边界以及开发体验等关键因素,都将直接影响其未来发展潜力。自去年起,LXDAO团队就深入研究了Snap技术,多位成员参与了Snap开发并积极参加了相关黑客松活动。本文将带领大家从技术角度深入探讨这些问题,并通过实际开发一个Snap来体验其开发者流程。
MetaMask Snap初体验
安装MetaMask Snap
用户可以通过MetaMask Snap官方市场安装Snap,也可以在项目官网直接安装。以UniPass为例,访问其应用页面时会提供连接MetaMask的按钮。
点击按钮后即可开始Snap安装流程:
使用MetaMask Snap
安装完成后,用户就可以使用相关产品功能了。以UniPass为例,它会为用户创建一个智能合约账户,方便通过MetaMask的EOA账户进行管理。
当执行转账操作时,UniPass会通过Snap弹出确认窗口,询问用户是否要对UniPass AA钱包执行该操作。
通过MetaMask确认后即可完成操作。这个场景展示了MetaMask如何通过Snap获得控制UniPass AA钱包的能力,而UniPass无需开发独立钱包插件就能让用户操作钱包,同时还能借助MetaMask轻松获取用户。
从安装和使用流程中我们可以观察到几个重要特点:Snap采用了精细的权限控制机制,包括连接钱包权限、网络请求等,严格遵循最小权限原则确保安全性;通过npm包管理Snap版本;虽然UI界面相对简单,但具备高度灵活性,项目方可以根据需求自定义展示内容和逻辑;整体体验流畅稳定,已经达到生产环境可用水平。
Snap的安全性分析
Snap代码运行时机制
Snap基于npm进行包管理,本质上是基于Web和JavaScript的应用。考虑到JavaScript的灵活性可能带来的安全风险,MetaMask选择与Agoric团队合作,深度集成了Hardened JavaScript(又称Secure EcmaScript)作为其沙盒解决方案。
Hardened JavaScript是一个更安全的JavaScript子集,通过限制某些API调用权限和方式降低风险。它为代码创建安全沙盒执行环境,并遵循最小权限原则进行权限控制。
Agoric与MetaMask还合作开发了LavaMoat项目(https://github.com/LavaMoat/lavamoat)来增强Snap安全性。LavaMoat专注于解决JS项目外部依赖的安全风险,增加对API和逻辑的限制。双方还联合进行过安全攻防测试并发布详细报告,因此在代码运行时层面,Snap具备可靠的安全保障。
Snap的开源与审计要求
除了明确的用户授权流程和最小权限设计外,成为官方认可的Snap必须开源代码,借助社区力量降低恶意代码风险。同时,官网列出的Snap都需经过第三方安全公司审计才能发布,审计方包括慢雾等知名机构,这大大提升了Snap的可信度。
基于npm管理的安全性
虽然Snap使用npm进行包管理,但MetaMask设置了严格的白名单机制。所有npm包版本变更都需要官方团队审核并加入白名单后才能安装。这意味着即使项目方发布了新版本,在未通过官方审核前用户也无法安装,这种机制虽然增加了版本更新成本,但确保了最高级别的安全性。
MetaMask Snap的技术能力与限制
虽然MetaMask Snap近期才正式公布,但其开发工作已持续4年之久。早在2019年10月,Dan Finlay就在Medium上提出了Snap的构想(https://medium.com/metamask/introducing-the-next-evolution-of-the-web3-wallet-4abdf801a4ee)。在安全性、灵活性和有效性之间取得平衡是个巨大挑战,MetaMask为此做了大量准备工作。
目前主要开放了三大API:互操作性API支持开发者基于MetaMask开发其他链钱包;交易洞察API允许在用户发起交易前分析交易数据;通知API支持通过Snap向用户推送消息。这些API为开发者提供了丰富的可能性。
通知能力展示
Snap_notify接口可以在MetaMask或浏览器中显示通知,让Snap直接向用户发送消息。
交易洞察功能
当用户与智能合约交互时,MetaMask会触发Snap的onTransaction事件,将未签名原始交易传递给处理程序方法。Snap可以在交易确认页面返回自定义界面和内容。
这项功能可用于实现交易安全审计和信息扩展展示等场景。
Dialog接口与界面定制
Dialog接口支持Snap弹出独立窗口,实现类似传统Alert/Confirm/Prompt的弹窗功能,用于提醒、确认和信息提交等场景。
通过Dialog,开发者可以创建简单的交互界面与DApp对接。
当前功能限制
出于安全考虑,Snap目前不支持第三方前端框架,仅提供少量UIKit组件。下图展示了所有可用的UI组件:
目前仅支持Heading、Text、Panel、Divider、Copyable等基础组件和少量Markdown语法,无法构建复杂交互界面。官方表示这些限制是出于安全考虑,未来版本会逐步放开。
此外,外部请求仅支持Fetch方法,不支持WebSocket等协议;出于安全和隐私考虑,也无法获取客户端信息如当前网址。这些限制大多基于安全考量,相信未来会逐步开放更多权限。
通过这些API,MetaMask已经转型为一个开放平台。这种转变让人联想到微信推出小程序时的情景。MetaMask早在2019年就预见到了当前的市场格局——众多公链和项目方带来的定制化钱包需求。与其让每个项目开发独立插件,不如基于MetaMask Snap构建。首批Snap中已经出现了Sui Wallet、Solana Wallet等非EVM生态钱包,凭借现有用户基础,MetaMask Snap必将深刻影响钱包领域格局。
实际上,MetaMask Snap的想象空间可能远超预期。例如EthSign团队基于Snap开发的KeyChain密码管理器,可以用钱包密钥加密存储所有浏览器密码;Web3MQ团队开发的通信客户端,能实现去中心化消息推送和互动。
既然Snap与开发者密切相关,那么实际的开发体验如何?让我们动手开发一个Snap来亲身体验。
开发Snap实践
项目构思
大多数用户在交互时并不了解智能合约的实际情况,常见问题包括:合约是否被钓鱼网站替换、是否为可升级合约、是否为新部署未经验证的合约、是否开源等。普通用户很难在操作前阅读Solidity代码,这时非常适合使用交易洞察功能实现智能合约分析,比如用AI进行基础安全审计,可能过滤80%的低级钓鱼攻击。
环境准备
首先需要安装MetaMask Flask——面向开发者的MetaMask版本,用于新功能预览和实验性开发。请注意这是开发者版本,不要导入日常使用的私钥。
安装后创建新钱包并充值测试币。本文示例使用Goerli测试网,可通过水龙头获取测试币。
项目初始化
使用官方CLI工具创建新项目:yarn create @metamask/snap transaction-insights-snap && cd transaction-insights-snap
Snap主要文件位于./packages/snap目录,结构如下:
配置文件为snap.mainfest.json,主体文件是./src/index.ts,代码非常简洁。
权限配置
在snap.mainfest.json中新增三条权限:交易洞察、RPC获取和网络请求。还可以修改description和proposedName来定制项目描述和名称。
交易处理
本示例只需修改index.ts文件即可完成功能。完整代码可参考:https://github.com/LidamaoHub/insights。
安装后,每笔交易都会显示类似的风险提示:
目前Snap开发体验非常流畅,官方模板丰富多样。有经验的开发者通常几小时内就能上手开发。但正式发布面临的主要障碍是安全审计,不是所有开发者都有资源进行审计,因此预计短期内Snap数量不会爆发式增长。
开发者支持
MetaMask成立了MetaMask Grants DAO,每季度注资支持生态系统建设。当前年度预算为240万美元,只要是能丰富MetaMask生态的项目都可申请资助。更多信息请访问https://metamaskgrants.org/。
LXDAO很荣幸获得了MetaMask Grants并参与相关项目开发,建立了联系渠道。如果是LXDAO成员有相关想法,可以更高效地递交申请。
总结
我们从技术角度分析了Snap的特性、安全性、能力限制和开发体验:Snap类似微信小程序,为MetaMask开启了更大想象空间;安全性可靠,代码运行在受限沙盒环境,需开源和审计;虽然当前开放能力有限,但已足够创造价值;经过4年打磨,开发者体验优秀,但安全审核机制可能限制短期内的爆发增长。
MetaMask Snap仍在快速迭代,预计未来会开放更多权限。如果能建立更开放且安全的审核机制,降低开发门槛,可能会催生大量创新应用,甚至出现专门的Snap开发者岗位。凭借MetaMask庞大用户基础,独立开发者也有很大机会。让我们拭目以待Snap带来的下一波创新浪潮。
感谢阅读本文,希望能帮助您了解MetaMask Snap的发展现状。请继续关注LXDAO,我们将持续产出更多MetaMask Snap相关内容!
声明:文章不代表CHAINTT观点及立场,不构成本平台任何投资建议。投资决策需建立在独立思考之上,本文内容仅供参考,风险 自担!转载请注明出处:https://www.chaintt.cn/10288.html