波卡(Polkadot)浏览器扩展插件 {.js}

波卡(Polkadot)浏览器扩展插件 {.js}

extension Simple browser extension for managing Polkadot and Substrate network accounts in a browser. Allows the signing of extrinsics using these accounts. Also provides a simple interface for compliant extensions for dapps. 项目地址: https://gitcode.com/gh_mirrors/ext/extension

Polkadot{.js} Extension 是一个轻量级的浏览器扩展程序,它为网页注入了一个@polkadot/api签署者和相关的账户,使任何去中心化应用(dapp)都能直接利用。这个概念验证(POC)实现是一个可扩展的 Polkadot/Substrate 浏览器签名工具。

目前,该扩展的主要功能是管理账户,并允许使用这些账户进行交易签名。它不直接为 dapp 注入提供者,也不执行构建并提交到网络的交易钱包功能。

安装

在 Chrome 和 Firefox 上安装 Polkadot{.js} Extension 非常简单:

界面截图

文档与示例

了解更多如何作为 dapp 开发人员使用该扩展的详细信息,包括食谱和常见问题解答,请参阅Polkadot-js 扩展文档

开发版本

如果你想构建开发版并在浏览器中查看你的改动:

  1. 使用 yarn build 构建。
  2. 安装扩展:
    • Chrome:
      • 访问 chrome://extensions/
      • 确保“开发者模式”设置开启。
      • 点击“加载已解压的扩展程序”,指向 packages/extension/build
      • 如果正在开发,修改后刷新扩展。
    • Firefox:
      • 访问 about:debugging#addons
      • 启动“启用附加组件调试”。
      • 点击“临时加载附加组件”,选择 packages/extension/build/manifest.json
      • 如果开发中,更改后重新加载扩展。
  3. 当访问 https://polkadot.js.org/apps/ 时,它将注入扩展。

添加后,你可以创建新账户(通过自动生成种子),或导入现有种子。在访问 apps UI 时,会显示这些账户为 <account name> (extension)

开发者

仓库分为多个包:

  • extension - 主入口,包含注入和后台处理逻辑。
  • extension-ui - 构建弹出窗口的 UI 组件。
  • extension-dapp - 用于简化数据提取的方便包装器,适用于希望集成扩展的任何 dapp。
  • extension-inject - 用于注入扩展以便 dapp 使用的薄包装器。

Dapp 开发者

Dapp 开发者的详细技术说明可在下一节找到,以了解如何与注入的对象直接交互。不过,提供了便利的包装器,使得任何 dapp 可以轻松使用此扩展(或其他符合接口的扩展),而无需管理额外信息。

Dapp 开发的文档可在 polkadot-js 文档中找到。更多关于便利包装器 @polkadot/extension-dapp 的信息以及使用样本,请查阅。

API 接口

扩展注入接口是通用的,设计目的是让任何扩展开发者可以轻松地注入扩展(只要遵循特定接口),同时也让任何 dapp 开发者能够轻松地启用来自多个扩展的接口。这不是全有或全无的方法,而是生态系统,让用户可以选择最适合自己的扩展。

从 dapp 开发者的角度来看,唯一的工作就是包含 @polkadot/extension-dapp 包并调用适当的启用函数以获取所有扩展及其相关接口。

对于扩展开发者来说,唯一需要做的就是通过极简的 @polkadot/extension-inject 包装器启用扩展。使用上述接口的 dapp 将可以通过这个接口访问扩展。

如果有多个扩展,每个都会通过注入接口填充条目,并向 dapp 提供。由 enable 返回的 Injected 接口包含以下信息,对所有兼容的扩展都是可用的。

interface Injected {
  // 账户接口,如下面详细描述
  readonly accounts: Accounts;
  // 标准 API 的签署者接口,如下面详细描述
  readonly signer: Signer;
  // 目前尚未注入,API 的订阅提供者,可以在 dapp 中的 API 构造过程中传递
  // readonly provider?: Provider
}

interface Account = {
  // SS58 编码的地址
  readonly address: string;
  // 此账户的创世哈希(如果适用所有,则为空)
  readonly genesisHash?: string;
  // (可选)用于显示的名称
  readonly name?: string;
};

// 暴露账户
interface Accounts {
  // 获取当前的账户列表
  get: () => Promise<Account[]>;
  // (可选)订阅所有账户,当它们改变时更新
  subscribe?: (cb: (accounts: Account[]) => any) => () => void
}

// 通过 sendMessage 进行通信的签署者
interface Signer extends SignerInterface {
  // 没有特定的签署者扩展,仅暴露 `sign` 接口,供 polkadot-js API 使用,
  // 符合该 API 的 Signer 接口
}

注射信息

本部分中的信息可能会变化和发展。因此,建议所有 dapp 通过 @polkadot/extension-dapp(对于 dapp)和 extension-inject(对于扩展)包进行访问,从而避免与较低级别的目标直接交互。

扩展将 injectedWeb3 注入全局 window 对象,暴露出以下内容:(这是为了扩展通用,允许任何 dapp 利用多个签名人,从多个扩展中获取账户。)

window.injectedWeb3 = {
  // 此为扩展名,可能有多个注入,
  // 每个都有自己的键,这里的 `polkadot-js` 是针对此扩展的
  'polkadot-js': {
    // 包的语义版本
    version: '0.1.0',

    // 这被调用来启用注入,返回一个注入对象,
    // 其中包含账户、签署者和提供者接口
    // 或在未授权的情况下拒绝
    enable (originName: string): Promise<Injected>
  }
}

库纳词、密码和导入/导出

从扩展中使用库纳词和密码

通过扩展创建密钥对时,会提供一个12字库纳词种子,并要求您创建一个密码。此密码只在磁盘上加密私钥,因此需要密码才能在 polkadot-js/apps 中花费资金或从备份导入账户。但密码并不能保护库纳词短语。也就是说,如果攻击者获得了库纳词短语,他们就能在没有密码的情况下花费资金。

导入库纳词自其他密钥生成工具

一些密钥生成工具(如 Subkey)支持硬和软密钥派生以及加密库纳词短语的密码。这样,即使库纳词短语不足以为资金支出提供防护。

扩展支持这些高级特性。导入账户时,可以以以下格式在库纳词后面添加这些派生路径或密码:

<mnemonic phrase>//<hard>/<soft>///<password>

即,硬派生路径前面加上 //,软派生路径加上 /,密码前面加上 ///

扩展仍然会要求您输入账户的密码。如同以前一样,此密码仅用于加密磁盘上的私钥。不需要与加密库纳词短语的密码相同。

也可以从现有账户派生新的账户——在账户下拉菜单中选择“衍生新账户”。提供父账户的密码,以及派生账户的名称和密码后,输入以下格式的派生路径:

//<hard>/<soft>

路径将被添加到父账户的库纳词短语中。


波卡(Polkadot)浏览器扩展插件 {.js} 结构清晰,易于集成,并提供强大的账户管理和安全签署功能。无论你是 dapp 开发者还是普通用户,都可以利用其强大的功能来体验 Polkadot 生态系统的无限潜力。立即安装并体验吧!

extension Simple browser extension for managing Polkadot and Substrate network accounts in a browser. Allows the signing of extrinsics using these accounts. Also provides a simple interface for compliant extensions for dapps. 项目地址: https://gitcode.com/gh_mirrors/ext/extension

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

房耿园Hartley

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值