@anywalletkit/seed-vault

中文文档
0.2.6发布于 2026/10/28Apache-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 1729

任何钱包套的钱包密钥加密备份:一个版本的自定义信封(XChaCha20-Poly1305在一个随机数据密钥下),一个或多个保护者解锁——通过Argon2id解锁的密码,或者从密码PRF,iCloud密钥中取出32字节密钥

中文使用文档
文档目录4 节
  1. 安装
  2. 格式
  3. 电话速度
  4. 事实并非如此

@ anywalletkit/种子-伏特

npm

用于一个钱包密钥的加密备份文件:种子短语或私人密钥,正好与密钥环存储相同. 一个文件可以由一个或多个打开 保护者数字 :

安装

npm install @anywalletkit/seed-vault
# or: pnpm add @anywalletkit/seed-vault  ·  yarn add @anywalletkit/seed-vault

时间: @ anywalletkit/种子-伏特发表于 发布工作流程 与出处.

保护者打开它的东西用它来
password通过 Argon2id 的密码( 默认为 19 MiB × 2, 至少 10 个字符)ICloud Drive / Google Drive / 任何地方的文件 。 跨平台工作.
key藏在别处的32字节的秘密密码 PRF 输出, iCloud Keychain / Google Block Store 中的随机密钥, 硬件密钥的密钥
import { sealBackup, openBackup, addProtector, encodeBackup, decodeBackup } from '@anywalletkit/seed-vault'

const secret = await secrets.get(sourceId)                       // the keyring's stored string
const meta = { type: source.type, fingerprint: source.fingerprint, label: source.label }
const file = encodeBackup(await sealBackup(secret, meta, [{ kind: 'password', password }]))

// later, on any device
const opened = await openBackup(decodeBackup(file), { kind: 'password', password })
if (opened.meta.fingerprint !== expected) …                      // compare before writing anything
await secrets.set(sourceId, opened.text())
opened.dispose()                                                 // zeroizes the bytes

格式

  • 有效载荷 : 该秘密曾被加密过一次,随机的32字节数据密钥(XChaCha20-Poly1305).
    • 标题(格式,版本,创建-at, meta)被认证为相关数据.
    • 更改文件中的指纹或标签使其无法打开( S)corrupted) (中文(简体) ).
  • 保护者: 每个都用自己的密钥加密密钥来包裹相同的数据密钥,其描述符被认证.
    • 降低文件中的Argon2成本,或者重命名一键,使得保护者失败.
  • 更改保护者 : addProtector 编号 : removeProtector 更改谁可以打开文件而不重新加密该秘密。 最后的保护者无法被移除 .
  • 解码 : decodeBackup 严格.
    • 它拒绝未知的格式,版本,密码或KDF,它只从已知的字段重建对象.
    • 它约束了Argon2的成本(≤ 1 GiB,t 16),因此恶意文件不能耗尽手机的内存,并且拒绝一个低于SDK封装(19 MiB×2)的成本的密码保护者,因此一个廉价到brute-force文件从不作为普通备份.
  • 密码 : NFKC-正态化,因此在不同的键盘上打出相同的密码句来打开文件.

电话速度

Argon2id默认在纯JS中运行,这总是有助于打开文件.

发动机封口或开口(19 MiB x 2)
赫尔墨斯大约6-15 s
V8 / 节点约0.15 s

运行时显示本地自旋器 .

有了土生土长的Argon2id 你就能承受更大的代价了 过 { argon2id: nativeImpl, argon2: { m: 64 * 1024, t: 3, p: 1 } }。成本被存储在文件中,因此任何设备仍然可以打开它.

事实并非如此

  • 它不会上传文件。 这是 backup-cloud。 。 。 .
  • 它不存储在设备上的秘密。 这是 @anywalletkit/secure-storage-react-native。 。 。 .
  • 它不会把秘密分成股份(Shamir). 这是作为额外保护者的计划.
  • 它不使用 keytore v3(Ethereum JSON) 文件.

版本与发布记录

@anywalletkit/seed-vault 共发布 8 个版本,首次发布于 2026/10/25;过去 12 个月发布了 8 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.6latest2026/10/2813 天前
0.2.52026/10/2714 天前
0.2.42026/10/2615 天前
0.2.32026/10/2615 天前
0.2.22026/10/2515 天前
0.2.12026/10/2516 天前

关于 @anywalletkit/seed-vault 的常见问题

@anywalletkit/seed-vault 是什么?

任何钱包套的钱包密钥加密备份:一个版本的自定义信封(XChaCha20-Poly1305在一个随机数据密钥下),一个或多个保护者解锁——通过Argon2id解锁的密码,或者从密码PRF,iCloud密钥中取出32字节密钥

如何安装 @anywalletkit/seed-vault?

在项目目录运行 npm install @anywalletkit/seed-vault,或使用 pnpm add / yarn add / bun add。

@anywalletkit/seed-vault 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@anywalletkit/seed-vault 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@anywalletkit/seed-vault 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@anywalletkit/seed-vault 可以商用吗?

@anywalletkit/seed-vault 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@anywalletkit/seed-vault 的下载量有多少?

根据 npm 官方下载统计,@anywalletkit/seed-vault 在 2026/10/06 – 2026/11/04 这 30 天内被下载 1,729 次,日均约 58 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@anywalletkit/seed-vault 还在维护吗?

最新版本 0.2.6 发布于 2026/10/28(13 天前);至今共发布 8 个版本,其中过去 12 个月发布了 8 个;首次发布于 2026/10/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。