由 Consensys 打造的领先自托管加密钱包和 Web3 入口。
阅读所有文章ETHLisbon 黑客马拉松获奖者

MetaMask Snaps 是将 MetaMask 打造成全球最具扩展性钱包的发展路线图。作为开发者,您可以以全新的方式将您的功能和 API 带入 MetaMask。Web3 开发者是这一增长的核心,本系列旨在展示当今正在构建的创新 MetaMask Snaps。
Snap 代码库:https://github.com/idriss-crypto/multiresolver
您为什么要构建多解析器 Snap?
Web3 的用户体验长期以来被忽视。账户抽象是我们看到进展的一个领域。几乎每周都会出现一个新的命名服务。这些服务的目标是简化我们在这个领域相互交互的方式:名称比钱包地址更易于识别,因此为身份和声誉系统奠定了基础层。
此外,原创(命名)标准可以提升项目的知名度。例如,假设有一个项目叫"x"。该项目提出的新命名标准可以称为 x-domains 或 x-names。项目的成功会自动推动命名服务的发展,而命名服务的成功也会反哺项目——实现双赢。然而,我们现在面临的是命名空间碎片化的局面。确实有人尝试使用每一种命名服务,这在某些(基于域名的)命名服务有限的命名空间中引发了名称争夺。其他命名服务则使用人们已经拥有的更熟悉的标识符,如电子邮件、电话号码或更通用的社交账号(Twitter 用户名、Instagram 账号),以消除围绕这些身份的潜在市场竞争。大多数人最终只拥有来自不同命名服务的一个或两个标识符。由于选择多样,开发者需要在其应用程序中集成多个命名服务解析器。
当一个新的命名服务占据相当大的市场份额时,也应将其集成到应用程序中,以免排斥该命名服务的用户。从用户角度来看,寻找功能相似且同时支持其所选命名服务的替代应用程序是一件令人烦恼的事。为什么不让人们使用他们熟悉的任何方式,同时提供一个帮助开发者专注于打造最佳应用程序的解决方案呢?
多解析器 Snap 正是为此而生。
请带我们了解一下技术实现?
该 Snap 是为 MetaMask Flask 10.20 构建的。当前版本使用 endowment:network-access 和 snap_confirm 权限。前者用于初始版本中请求已解析的地址并将 Twitter ID 转换为 Twitter 用户名。后者在创建交易前向用户显示确认屏幕,突出显示解析后的地址。
目前支持的解析器为 IDriss 和 ENS。该 Snap 在本地主机上运行。
开发者若要集成此 Snap(从而使用所有可用的解析器),必须先连接钱包和 Snap:
调用通过 resolve_send 方法进行,可通过以下方式调用:
该方法返回已解析的地址。其中,id_ 是用户在发送字段中输入的标识符。
使用新的 multiChainProvider,连接到 Snap 就像使用所需权限连接到钱包一样简单:
上述 resolve_send 方法可以重命名为 eth_sendTransaction,使应用程序无需更改任何集成即可使用多解析器 Snap。每当调用 eth_sendTransaction 时,Snap 会介入并在创建交易前解析输入内容。应用程序应允许接受 String 类型的输入,而不是在用户输入与地址不匹配时抛出错误。剩下的事情由 Snap 来处理!
如果您要实现这个功能,下一步是什么?
下一步,该 Snap 将开源,以鼓励其他开发者寻找漏洞、改进代码,甚至添加自定义解析器。开源将释放此 Snap 的真正潜力:不再需要单个开发者或实体集成所有新兴命名服务。contribute.md 文件将推动这一进程。此外,还将持续跟踪 MetaMask Snaps 团队的进一步开发动态。
具体而言,以下两点将极大地提升此 Snap 的能力:
针对账户间转账的 endowment:transaction-insight 权限,以消除交易触发前额外的 snap_confirm 调用;
向 MetaMask 注入 UI。目标是将 Snap 集成到发送字段中,使用户无需连接网站即可使用多解析器。
最后,还计划与 IDriss 解析器实现完整集成。完整集成后,用户无需在 IDriss 名册中注册,即可向任意电子邮件、电话号码和 Twitter 用户名发送加密货币和 NFT。
能介绍一下您自己和您的团队吗?
我叫 Lennard,自 2017 年起便对区块链领域产生了浓厚兴趣。一年多来,我一直在构建并联合创立 IDriss——一个将电子邮件、电话号码和 Twitter 用户名去中心化映射到钱包地址的项目。总体而言,我专注于构建工具,推动 Web3 走向更易用的未来,这也是我构建此 Snap 的动力所在。
您是什么时候第一次接触 MetaMask Snaps 的,体验如何?
Snaps 团队今年(2022 年)在各大会议上非常活跃,我已经多次与他们相遇。我第一次接触代码库是在他们于巴黎举办的 EthCC 2022 演讲之后。尽管当时功能还比较有限,但文档已经很有前景,我对 MetaMask Snaps 的未来充满期待。
MetaMask Snaps 与其他钱包有何不同?
我还没有见过类似的方式将外部贡献者纳入钱包开发中。虽然一些其他钱包已经开源了代码,但 Snaps 使开发者能够直接扩展 MetaMask 的功能。我相信这种方式也会被其他项目采用,因为它更易于维护。
请谈谈您和团队使用 MetaMask 构建 Snaps 的体验?
在黑客松期间构建此 Snap 是一次绝佳的机会。有 MetaMask Snaps 团队在场,每当遇到问题时都能得到帮助。目前仍缺少的一点是自定义 MetaMask UI 的能力。此外,一些依赖问题难以调试,占用了大部分开发时间。
MetaMask Snaps 对您意味着什么?
Snaps 为开发者提供了一个平台,可以以无需许可的方式将其项目或想法直接集成到 MetaMask 中。对我而言,这意味着任何项目的增长都可以得到加速,因为用户可以突然在他们已经拥有的工具(钱包)上享受更多功能。
您认为 MetaMask Snaps 为 Web3 领域带来了哪些机遇?
Snaps 可以通过交易洞察帮助防范诈骗,通过 keyring 创建更具网络包容性的体验,并通过自定义解析器结合 UI 增强功能带来更友好的 Web3 体验。这些共同作用将吸引更多人进入这一领域。
对于有意尝试 MetaMask Snaps 的开发者,您有什么建议?
去参加黑客松!这是与团队直接互动并获得即时反馈的最佳方式。
开始使用 MetaMask Snaps:
查阅开发者文档
在 Twitter、GitHub 讨论区和 Discord 上与我们保持联系
请留意我们团队在您附近举办的下一场黑客松!祝 BUIDL 愉快 ⚒️
免责声明:MetaMask Snaps 通常由 Consensys Software 以外的第三方开发。使用第三方开发的 MetaMask Snaps 完全由您自行决定并承担风险,且您同意对因此类活动导致的任何损失或损害承担全部责任。Consensys 对第三方开发的 MetaMask Snaps 不作任何明示或暗示的保证,并对第三方开发的 Snaps 免除一切责任。使用区块链相关软件存在风险,使用 MetaMask Snaps 即表示您完全承担上述风险。
AI 翻译。可能包含错误。请务必核实信息。