查看原文
其他

Filecoin和以太紧密合作,深入了解Filsnap:MetaMask Flask(小狐狸)上的第一个Filecoin集成

Filecoin和以太紧密合作,深入了解Filsnap:MetaMask Flask(小狐狸)上的第一个Filecoin集成

扩展 MetaMask:Filecoin 的快照



随着 web3 的不断发展和生态系统之间的互操作性的扩展,世界上最重要的激励存储层 Filecoin 与以太坊之间的集成只是时间问题。在这方面,ChainSafe 很自豪地在 MetaMask Flask 上发布了 FilSnap,以在 MetaMask 中启用 Filecoin 支持作为实验性功能。

哦,快!什么是快照?

首先,我们需要了解 MetaMask Flask 是什么。Flask 是 MetaMask最近宣布的其著名的加密扩展的金丝雀发行版。它是没有防护栏的 MetaMask 的实验版本,即开发人员的试验场。


⚠️免责声明:MetaMask Flask 仅用于测试目的。所有功能都是新的和实验性的,通过将您的真实私钥导入 Flask,您将自己暴露在可能的漏洞中。

进一步深入,我们来到 Snaps,这是 Flask 上发布的第一个功能。Snaps 允许开发人员在运行时扩展 MetaMask 的功能,而无需核心 MetaMask 团队的任何参与。这创造了可扩展性,并使开发人员可以灵活地添加自己的功能并将其发布给公众。

Snap 本质上是 MetaMask 的插件——即可以在隔离环境中运行的自定义程序,并可用于以量身定制的方式自定义钱包体验。他们可以向 MetaMask 添加新 API、新功能、使用内部 MetaMask API 修改现有功能,以及最强大的功能——管理不同协议的用户密钥。

要了解有关使用 Snap 的更多信息,请查看此处的文档。

总而言之,Snaps 的当前迭代仍然存在一些技术限制,包括无法修改 MetaMask UI 以及 Snap 和 MetaMask 之间的有限 API。这些事情正在努力中,但尽管如此,当前版本的 Snaps 让 ChainSafe 有机会展示我们在 MetaMask、以太坊和 Filecoin 的所有领域的专业知识。

什么是 FilSnap?

简而言之,FilSnap 允许 dApp 开发人员通过 MetaMask 扩展构建集成 Filecoin 支持的 web3 应用程序🤯 虽然它还没有提供,但目标是 Snap 最终扩展 Metamask UI 与 Filecoin 网络的相关信息和交互。

在当前状态下,dApp 本身必须显示与 FilSnap 交互的前端。我们创建了演示 dApp 来展示不同的功能。在这里,用户可以查看他们的 Filecoin 账户和余额,发送 FIL 交易,并使用他们的 Filecoin 密钥创建加密签名消息。这是我们的演示,它可能是什么样子。

这是一个示例,说明 dApp 如何更广泛地使用 FilSnap。


放大一些细节,FilSnap 究竟是如何创建你的 Filecoin 地址的?它使用 Metamask 通过 Snap 独有的 RPC 方法 snap_getBip44Entropy_* 提供的熵。从这个熵中,FilSnap 得出最终地址。您可以在此处查看有关如何实施的详细信息。

Snap 还具有持久化状态对象的能力,使用 Snap 独有的 RPC 方法 snap_manageState。您可以在状态中保存任意对象。FilSnap 使用它来保存快照配置(派生路径、RPC 端点等)和已执行事务的详细信息。

开发 MetaMask Snaps 带来了一系列挑战

第一个问题是 Snap 是在称为 Secure EcmaScript (SES) 的虚拟环境中执行的。实际上,这意味着开发人员无法使用一些标准的 JavaScript 实践,而且您打算使用的所有库都需要与 SES 环境兼容。

在 FilSnap 开发过程中,我们在使用 SES 时遇到了一些障碍,但总是通过自己编写额外代码或寻找替代库来找到解决方案。SES 让您更加了解您在标准 javascript 项目中导入的代码开销。

所有 Snap 目前都以 npm 包的形式分发,您可以在此处找到。在安装 FilSnap 时,此 npm URL 也显示为 snap on 安装提示的来源。

最终,我们希望 dApp 开发人员能够轻松添加 FilSnap 支持,因此我们创建了一个额外的包 - Filnsap 适配器。如果您是 TypeScript 极简主义者(像我们一样!),您还可以在此处找到适合适配器的类型。

这两个包使我们能够向 FilSnap 公开类型化 API,并打包样板代码以调用特定的 FilSnap RPC 方法。它还将 snap 安装过程作为单一方法公开。您可以在此处查看有关公开 API 的更多详细信息。

下面你可以看到如何使用 FILsnap API 发送一个基本的 FIL 交易。

const gasEstimate = await api.calculateGasForMessage({
to: toAddress,
value: amountAttoFIL,
});const msg:MessageRequest = {
to:toAddress,
值:amountAttoFIL,
gaslimit:gasEstimate.gaslimit,
gasfeecap:gasEstimate.gasfeecap,
gaspremium:gasEstimate.gaspremium,
}常量响应 = 等待 api.signMessage(msg);
常量 messageCid = 等待 api.sendMessage(response.signedMessage);

有兴趣了解更多?参与其中!

检查我们的演示dApp,安装 FilSnap 并使用 Metamask 发送您的第一个 Filecoin 交易。如果您发现错误或想要查看的功能,请查看我们的repo并提出问题。

文档:https ://github.com/chainsafe/filsnap/wiki

关于链安全

ChainSafe 是一家领先的区块链研发公司,专门为去中心化网络提供基础设施解决方案。除了以太坊、Polkadot、Filecoin 和 Mina 的客户端实现之外,我们还在构建 web3 产品组合——文件、存储、游戏 SDK和ChainBridge。作为我们为用户打造创新产品和为开发人员打造更好工具的使命的一部分,ChainSafe 体现了开源和面向社区的精神。要了解更多信息,请单击此处。

帮助建立 web3 的基础

有问题、意见或建议?加入我们的Discord并加入对话!

我们也一直在寻找有才华的人。查看我们的空缺职位并取得联系➡️➡️careers@chainsafe.io

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存