MetaMaskSnap技术解读:开发体验、能力限制、安全性和商业潜力

互联网 阅读 897 2023-09-23 06:01:00

本文由 LXDAO 专家组成员 李大猫、Bruce 共同编写,我们将深入探讨 MetaMask Snap 技术方面的内容。MetaMask Snap 是什么?它有哪些技术能力?安全性如何保障?开发体验如何?这些问题或许将决定 MetaMask Snap 的未来潜力。

MetaMask Snap 是什么?

前几天 ConsenSys 宣布向公众推出 MetaMask Snaps Open Beta。MetaMask Snaps 可以扩展钱包的能力,可以安装由第三方开发人员创建的 app(Snap)来获得新的功能。

如果说 ConsenSys 将 MetaMask 打造成了微信,那么 Snap 就是微信小程序。因此可以看出 MetaMask 的雄心,结合 ConsenSys 的体量和 MetaMask 的用户数,钱包领域的格局将因此产生改变。

目前官方已经公布了 35 款可用的 Snap,并发布了 Snap 应用商店 https://snaps.metamask.io/。

部分 Snap 一览

那么 MetaMask Snap 从技术角度来看具体是什么样的呢?它们有什么能力限制?是否安全?开发体验如何?这些或许都将决定了 MetaMask Snap 的未来潜力。

去年开始,LXDAO 就深入研究了 Snap 的实现,目前多位成员已参与了 Snap 的开发并积极参与相关黑客松。今天,我们将从技术角度深入探讨上面的问题,并实际动手开发一个 Snap 来让你感受下 Snap 的开发者体验。

MetaMask Snap 初体验

安装 MetaMask Snap

通常可以通过 MetaMask Snap 官方市场进行安装,也可以直接在项目方的官网进行安装。以 UniPass 为例,当访问应用页面时,会提供一个按钮让你链接 MetaMask。

MetaMask

点击之后,会进行 Snap 的安装:

MetaMask

使用 MetaMask Snap

安装完成之后,就可以开始使用对应的产品和功能了,在这个应用中 UniPass 为你创建一个智能合约账号,方便你通过 MetaMask 的 EOA 账号进行操控等。

MetaMask

当你执行转账时,UniPass 会弹出来 Snap 向你确认是否要对 UniPass AA 钱包执行该操作。

MetaMask

通过 MetaMask 确认之后,即可执行相关操作。在这个场景中,MetaMask 通过 Snap 拥有了控制 UniPass AA 钱包的能力,UniPass 无需自己开发一个钱包插件即可让用户操作钱包,也可以借助 MetaMask 非常低成本的引入用户!

从这个安装和使用流程中,我们可以得到什么信息?

  1. Snap 具备比较精细的权限控制,甚至包括链接钱包的权限、网络请求等。整体采用了最小权限访问(Principle of Least Privilege)的思路来设计,安全第一。
  2. 从 npm:@unipasswallet/unipass-snap 可以看到 Snap 是基于 NPM 进行包和版本管理。后面详细介绍一下安全性。
  3. Snap 具备非常高的灵活性,可以按照项目的需求自行开发和决定展示的内容和逻辑。但是 UI 比较简陋,有一定的优化空间。
  4. Snap 的体验非常简单和可靠,确实达到了 Beta 版本和生产环境的水平。

对于一个钱包产品来说,安全性永远是第一位的,接下来我们分析一下 Snap 的安全性设计。

Snap 是安全的吗">

Agoric 跟 MetaMask 合作开发了 LavoMoat (https://github.com/LavaMoat/lavamoat) 这个项目来增强 Snap 的安全性。LavaMoat 是一套工具,重点解决 JS 项目外部依赖的安全风险,增加对一些 API 和逻辑的限制。

Agoric 和跟 MetaMask 联合发起过黑盒白盒安全攻防测试,并输出过详细的安全报告。所以在代码运行时的层面,我们有充足的理由相信 Snap 是安全的。

Snap 代码必须开源且经过审计

除了有明确的用户授权流程和最小权限的设计,成为官方认可的 Snap 必须开源代码,通过社区的力量大大降低 Snap 自带恶意代码的可能性。

此外,我们也发现在官网上的 Snap 均经过第三方安全公司的代码审计才能发布。这大大提高了 Snap 的安全可信度,审计方包括大家都非常熟悉的慢雾。

目前发现的 Snap 的安全风险

由于目前 Snap 是基于 NPM 的包和版本管理,在代码的层面存在一定变更的可能性,而且非强制性审计,可能产生一定的安全风险。

因为 MetaMask 无法控制 NPM 平台的版本发布,因此项目方可以随时发布新的版本来让用户进行安装。而由于审计的成本原因,审计公司并不会对每一个版本进行审计,因此会出现一种情况:最新版本的变更,可能并没有开源或者经过审计。

不过由于执行环境是沙箱环境,而且使用了最小权限的设计,除非用户手动确认新的权限变更,新版本 Snap 则只会拥有之前的版本的权限来执行操作。但如果某个 Snap 的权限索取过大,这仍然将会产生风险,因此在安装使用 Snap 的时候,仍然需要保持警惕之心。

MetaMask Snap 的技术能力和限制

虽然近期 MetaMask Snap 正式公布,但实际上 Snap 已经开发了 4 年了!最早 MetaMask Snap 的构想由 Dan Finlay 在 2019 年 10 月 10 日发布在 Medium

平衡安全性、灵活性、有效性是一个非常大的挑战,也可以看出 MetaMask 为这一天付出了非常多的成本,做了很多准备工作。

目前主要开放了三大 API:

  1. Interoperability(互操作性),允许开发者基于 MetaMask 开发其他链钱包
  2. Transaction Insights(交易洞察),允许开发者在用户交易发起前获取交易 data,从而分析交易是否存在风险
  3. Notifications(通知),通过 Snap 直接推送消息给用户(不过这里似乎需要网站支持,略微有点鸡肋)

MetaMask

下面简单介绍下 MetaMask Snap 具体开放的能力以及效果,方便你有一个更为形象的感知。

Notification 通知能力

Snap_notify 接口可以在 MetaMask 或浏览器中显示通知。Snap 可以通过这个接口向用户直接发送消息,具体如下图所示

MetaMask

Transaction Insights 能力

当用户与智能合约进行交互时,MetaMask 会触发 Snap 的 onTransaction 事件,MetaMask 会将未签名的原始交易传递给 onTransaction 处理程序方法,Snap 可以在交易的二次确认页面返回一个界面,并且自定义显示内容。

MetaMask

通过这种能力,可以实现交易信息的安全审计、扩展信息展示等功能。

Dialog 接口和定制界面能力

Dialog 能力将允许 Snap 直接弹出一个独立窗口,实现类似传统 Alert/Confirm/Prompt 弹窗能力 ( 如下图 ),分别用于提醒、确认、提交信息等。

MetaMask

通过 Dialog,你将可以定制简单的交互界面以及操作,来对接你的 DApp。

MetaMask Snap 暂时无法实现什么样的功能">

如图所示,目前上线的只有 Heading ( 大文字 ),Text ( 小文字 ),Panel ( 卡片且只能用一次 ),Divider ( 分割线 ),Copyable ( 点击复制 ) 和小部分 Markdown 子集 ( bold 和 italic),所以说构建可交互似乎暂时无法实现,也无法使用内嵌 html 来实现交互操作。不过在官方 Discord 中提问后,官方声称这些都是出于安全性的考虑,并将会在接下来的版本中放开。

此外,同样基于安全的考虑,对外部的请求也只支持 Fetch 方法,而不支持更多请求协议例如 WebSocket。由于安全、能力和隐私限制,也无法获取到客户端的信息,比如当前唤起 Snap 的网址是什么,无法实现更丰富多样的功能。

这些问题和限制大多数是出于安全性的考虑,相信未来在安全性得到验证之后,会考虑开放更多权限。

提供了这些 API 的 MetaMask 实际上已经成为类似开放平台一样的产品。这种感觉就像当时微信推出公众号、小程序一样,瞬间让人感觉不再是一个简单的聊天工具。

MetaMask 在 19 年就预料到了今天的市场格局,即有非常多的公链和项目方、各种定制化的钱包需求。与其每个项目方都需要开发自己的插件而用户需要同时安装数个插件,倒不如基于 MetaMask Snap 来开发。在第一批放出来的 Snaps 中,我们也发现了类似 Sui Wallet、Solana Wallet、Arweave Wallet 等其他非 EVM 生态的钱包。凭借已有的用户量,MetaMask Snap 必将对钱包的格局产生重大的影响。

实际上,MetaMask Snap 的想象空间或许要比我们预想的更大,甚至超出了钱包的范畴。我们也可以看到来自 EthSign 团队的作品,基于 MetaMask Snaps 做了通用的密码管理器 KeyChain,所有浏览器里的密码都可以被钱包密钥加密后存储。这样管好钱包,就带上了所有的密码。

MetaMask

Snap 跟开发者非常相关,有了开放 API,具体的开发者体验如何?我们不妨亲自动手开发一个 Snap 体验一下。

直接开发一个 Snap 测试

梳理思路

众所周知,大部分用户在绝大多数情况下其实并不知道正在交互的智能合约到底是什么,主要包括如下几个问题:

  • 交易的合约是否是钓鱼网站替换的合约
  • 交易的合约是否是一个可升级合约
  • 智能合约是否是一个刚被部署还没有多少人验证过的合约
  • 交易的合约是否开源

对于普通用户来说,让他在操作之前去阅读合约的 solidity 代码更是天方夜谭。这时其实非常适合通过 Transaction Insight 功能来实现一些智能合约分析,比如使用 AI 来对智能合约做一个比较浅显的安全性审计,或许可以过滤到 80% 的低级钓鱼攻击。

准备开发环境

下载钱包

首先需要安装 MetaMask Flask

MetaMask

MetaMask Flask 是一个以开发人员为中心的 MetaMask 扩展发行版,主要用于新功能预览以及实验性功能开发。注意这是 MetaMask 的开发者版本,请不要进行日常使用,也不要导入自己日常使用的私钥。这里使用 Flask 主要是方便我们开发的 Snap 能本地即时预览。

建议安装后先暂时关掉小狐狸钱包以及其他浏览器钱包,或者新创建一个 Chrome Profile 使用,否则会冲突。

创建账户

安装钱包后就像正常创建 MetaMask 钱包一样创建一个新钱包,请注意,这是一个专门用于测试的钱包,请不要导入自己的日常钱包。

接下来我们需要给新创建的钱包中充值一些测试币,测试币可以通过水龙头获取,本文讲的 Snap 使用的是 Goerli,所以下文以 Goerli 为主。

基于模板初始化 Snap

按照官方文档,首先使用 @metamask/create-snap 这个 CLI 来创建一个新的 Snap 项目,同时我们使用官方的模板进行初始化:

MetaMask

Snap 文件结构

Snap 的主要文件在 ./packages/snap 中,文件目录结构如下

MetaMask

Snap 的配置文件被放在 snap.mainfest.json 中,Snap 的主体文件为 ./src/index.ts,可以看到非常简洁。

启用权限

首先需要启用权限,首先我们在 snap.mainfest.json 中新增如下三条

MetaMask

Mainfest 文件中还可以修改 description 和 proposedName 来修改项目的描述和名称。

获取交易

接下来本案例中只需要修改 index.ts 文件即可完成全部功能,简单的代码示例如下,可以完整运行的代码请移步:https://github.com/LidamaoHub/insights。

MetaMask

更多的内容请参考 MetaMask Snap 开发者文档完成更复杂的 Snap 产品。

安装之后,你的每个交易将会可以看到类似的风险提示信息:

MetaMask

目前 Snap 的开发体验非常流畅,其中几乎没有遇到什么问题,而且官方的模版也是非常丰富多样。拥有丰富经验的开发者通常可以在几个小时内上手并且开始开发自己需要的 Snap。但需要正式发布并让主流用户都可以使用,最大的拦路虎将会是安全审计。并不是所有独立开发者和小团队都有资源为他的 Snap 做审计。因此可以预期 Snap 的数量和丰富度在未来很长的一段时间,都不会有非常大的爆发增长量。

开发者支持

如果你能够跑通以上样例,那么恭喜你已经成为一个合格的 Snap 入门开发者!

MetaMask 官方也在去年成立了一个 MetaMask Grants DAO,通过赠款计划资助 MetaMask 生态系统中高价值项目。MetaMask Grants DAO 是一项由员工主导的实验性计划,向全球外部开发人员发放赠款,以在 MetaMask 生态系统中构建有影响力的体验。MetaMask 将每个季度的部分利润注资到这个 DAO,当前 MetaMask Grants DAO 每年的预算为 240 万美元。

目前只要是能丰富 MetaMask 生态的项目都可以申请官方的 MetaMask Grants DAO( MetaMask Grant ),关于更多的信息请移步 https://metamaskgrants.org/。

值得一提的是 LXDAO 很荣幸的在今年申请到了 MetaMask 的 Grants 并参与了相关项目的开发,并建立了联系通道,如果你是 LXDAO 成员有相关的想法,可以更高效的联系到他们递交申请。

MetaMask

结语

我们在上面从技术层面剖析了一下 Snap 是什么、是否安全、能力限制以及开发者体验。简单总结如下:

  • Snap 类似微信小程序,开启了 MetaMask 更大的想象空间
  • 安全性整体不错,但是也存在一定的风险,仍然需要对高危权限保持警惕
  • 由于安全性的考虑,目前开放的能力不多,但仍然可以产生足够想象空间的 Snap
  • 经过四年的打磨和测试,开发者体验优异,然而由于其安全性的考虑,设计了白名单机制和审计的要求,可以预期的是在未来一段时间并不会有海量的 Snap 涌现出来

目前 MetaMask Snap 仍在快速迭代的,相信未来会开放更多权限和能力。希望能推出更开放同时安全的机制,比如苹果官方 Audit 审核机制以及官方代码仓库版本控制,这样才能让更多开发者低成本参与进来。如果这个问题得到改善,可以预期将会在未来产生大量的需求。甚至会出现专门的 Snap 开发者岗位。

借助海量的 MetaMask 用户,独立开发者或许也有一定的机会。让我们拭目以待 Snap 带来的下一个突破性创新。

最后,感谢您的文章,相信这有助于让更多人了解 MetaMask Snap 的发展现状。

免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:9月市场展望:链上流动性情况和催化剂一览 下一篇:为什么Tether继续发放USDT贷款是个危险信号?

您可能感兴趣

  • 解读CKB版 “闪电网络” Fiber Network:比特币可编程性扩展的另一种思路
    解读CKB版 “闪电网络” Fiber Network:比特币可编程性扩展的另一种思路

    作者:NingNing行业周期与宏观金融周期共振,加密行业正处在与 2019 年相似的整体性迷茫之中,现阶段不仅流动性枯竭,叙事貌似也在枯竭。市场不但对 VC 叙事兴趣阙如,对反 VC 的 Meme 叙事也已经疲倦。就像每次哲学危机,人们都会回归柏拉图寻找出路,当加密行业危机时,我们也需要回归比特币、回归中本聪。正如 CKB 生态 RGB++ 协议创始人 Cipher 在最新 Blog 里所阐述的,加密行业需要对以太坊 “链上计算” 的路径依赖进行反思,回归P2P经济学,让计算归于链下,让验证归于链上。因

    每日资讯 2024-09-02 12:06 1250
  • 面对NFL球员工会起诉,“退圈”的DraftKings竟主动承认NFT是证券?
    面对NFL球员工会起诉,“退圈”的DraftKings竟主动承认NFT是证券?

    作者:Zen,PANews近日,美国国家橄榄球联盟球员协会 (NFLPA) 指控数字体育娱乐和游戏公司DraftKings 逃避了其 NFT 球员许可协议的付款义务。在放弃NFT业务后,涉嫌出售未注册证券而遭到集体诉讼的DraftKings又背上了一起官司。而有趣的是,在与NFLPA的纠纷中,DraftKings的立场似乎已从反驳转变为积极承认“NFT就是证券”。放弃NFT业务:驳回集体诉讼的动议遭到否决今年7月底,Draftkings在给用户的电子邮件中表示:“经过慎重考虑,DraftKings 决定终

    每日资讯 2024-09-02 12:06 1362
  • 简析两种最新比特币智能合约实现方案:OP_NET与Arch有何区别?
    简析两种最新比特币智能合约实现方案:OP_NET与Arch有何区别?

    作者:Cookie过去半个月,OP_NET 与 Arch 这两个比特币主网上的智能合约实现方案引发了较多的讨论。有意思的事情是,OP_NET 这个名字与大家熟悉的 OP_CAT 很像,都以「OP_」开头,具有很强的、让大家认为这哥俩差不多的迷惑性。所以,在开篇要和大家先提一嘴 OP_CAT。首先,OP_CAT 是比特币操作码,从去年开始有以「量子猫」Quantum Cats,也就是「大巫师」Taproot Wizards 的创始人 Udi Wertheimer 为首的社区力量一直在呼喊要「复活」OP_CA

    每日资讯 2024-09-02 12:06 1265
  • 争议不断,以太坊正在失去“万链之王”的权威
    争议不断,以太坊正在失去“万链之王”的权威

    作者:Climber,金色财经近期围绕以太坊的话题和争议越来越多,不仅 Vitalik 本人需要下场解释观点,就连以太坊基金会也要发布公告来平息社区的质疑声。在本轮牛市周期中,以太坊的表现可谓平平。而美国以太坊现货 ETF 的通过也并未让 ETH 走势如投资者期待般爆发,相反却在币价方面越走越低。这就不免让有着「万链之王」美誉的以太坊逐渐失去投资者和社区的尊重,进而质疑起有关以太坊的方方面面。争议不断,以太坊亟需重塑权威最近一段时间以来社区成员对 Vitalik 言论观点、以太坊基金会乃至以太坊生态系统的

    每日资讯 2024-09-02 12:06 957
  • 从《黑神话:悟空》谈起,GameFi何时能取得真经?
    从《黑神话:悟空》谈起,GameFi何时能取得真经?

    作者:YBB Capital Researcher Zeke前言本文是市场垃圾时间中的一些闲聊,需要对传统游戏市场有一定程度了解。大家可以把这篇文章当作日记或者随想观看,这些只是我在游玩《黑神话:悟空》之后对GameFi的一些粗浅思考,以及对这个赛道未来的看法。一、游戏科学的九九八十一难三天全网销量破千万、Steam玩家同时在线峰值破235万、多家品牌联名周边销售爆火、国家级媒体多次采访、多个游戏取景地可凭游戏通关记录终身免费进入、86版《西游记》YouTube观看量超400万。以上,是《黑神话:悟空》上

    每日资讯 2024-09-02 12:06 651
  • Gavin Wood:如何防止女巫攻击进行有效空投?
    Gavin Wood:如何防止女巫攻击进行有效空投?

    演讲:Gavin WoodGavin 近期一直在关注的女巫攻击(civil resistance)的问题,PolkaWorld 回顾了 Gavin Wood 博士在 Polkadot Decoded 2024 上的主题演讲,想要探究 Gavin 在如何防止女巫攻击上的一些见解。什么是女巫攻击?你们可能知道,我一直在研究一些项目,我在编写灰皮书,专注于 JAM 项目,也在这个方向上做了一些代码的工作。实际上,在过去的两年时间里,我一直在思考一个非常关键的问题,这个问题在这个领域中非常重要,那就是如何防止女巫

    每日资讯 2024-09-02 12:06 1205
  • 市场热议,链抽象将成加密新叙事?
    市场热议,链抽象将成加密新叙事?

    2024年,加密货币领域的技术创新持续加速,链抽象(Chain Abstraction)逐渐成为行业内的焦点。链抽象技术的核心在于通过隐藏底层技术的复杂性,让用户能够更加便捷地在多个区块链之间进行操作。传统的区块链技术通常要求用户掌握不同链的操作流程,并需要应对跨链操作中的技术难题,这极大地吸引了新用户的进入。而链抽象的出现,则为这些问题提供了有效的解决方案,成为Web3建设不可忽视的重要一环。01、什么是链抽象及其作用链抽象能够将不同的区块链之间的差异整合在一个统一的操作界面中,使得用户只需一个账户即可

    每日资讯 2024-09-02 12:05 500
  • 今日日报|马斯克和特斯拉赢得“被指控操纵狗狗币”的诉讼;稳定币支付平台Bridge完成5800万美元融资
    今日日报|马斯克和特斯拉赢得“被指控操纵狗狗币”的诉讼;稳定币支付平台Bridge完成5800万美元融资

    今日要闻提示:马斯克和特斯拉赢得驳回指控他们操纵狗狗币的诉讼OpenAI和Anthropic已同意将其主要新AI模型在发布前共享给美国政府OKX将上线Hamster Kombat(HMSTR)现货交易X平台纽约总部将于9月13日关闭,预计将迁往得州萨尔瓦多总统布克尔成为《时代》杂志最新一期封面人物稳定币支付公司Bridge完成5800万美元融资数据:MATIC、SHIB、UNI代币头部地址持仓均超50%网龙今年上半年通过出售2.9亿元的加密货币,获利5100万元人民币监管消息美国众议院计划在9月举行多场加

    每日资讯 2024-09-02 12:05 1002