@anywalletkit/extension-kit

中文文档
0.3.5发布于 2026/11/05Apache-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 2626

Chromium (MV3) 钱包扩展核心用于任意钱包 Kit: scrypt + AES-256-GCM 保险库 有密码(WebAuthn PRF) 解锁,自动锁定会话, dApp 请求路由器, 并有源代码权限和批准队列, 签名-请求检查, 互换/ Ein plan r

中文使用文档
文档目录4 节
  1. 安装
  2. 它提供的东西
  3. 安保模式(摘要)
  4. 使用铬适配器

@ anywalletkit/ extension- kit (英语)

npm

非拘禁铬(MV3)钱包扩展的安全相关核心, 在任何钱包套件和协议包上所建:加密金库 自动锁解锁键会话, dApp 请求路由器, 并带有原产地 权限和批准队列、签名请求分类和 审查交换和收入计划方面的帮助者。 没有UI,没有 @types/chrome,没有网络 本身的代码: 铬适配器取结构对象 (单位:千美元)StorageAreaLike, (中文(简体) ), AlarmsLike),所以一切运行在维特下与 内膜适配器.

安装

npm install @anywalletkit/extension-kit
# or: pnpm add @anywalletkit/extension-kit  ·  yarn add @anywalletkit/extension-kit

时间: @ anywalletkit/ extension- kit (英语)发表于 发布工作流程 与出处.

这个软件包是给建立自己的扩展名的钱包开发者的. 这是一个 库,不是扩展:弹出、批准窗口、注入提供者, 服务工人的接线、建造和释放管道是钱包的。 虚空 浏览器扩展是一个基于它的产品.

pnpm add @anywalletkit/extension-kit @anywalletkit/core @anywalletkit/keyring

它提供的东西

区域出口什麽
默认Vault, (中文(简体) ), chromeLocalVaultStorage, (中文(简体) ), memoryVaultStorage, (中文(简体) ), VAULT_SCRYPT, (中文(简体) ), VAULT_LIMITS, (中文(简体) ), VAULT_MIN_PASSWORD_LENGTH每一个秘密在休息 chrome.storage.local,两个密钥层(一个KEK包装一个DEK,DEK封装每个密钥);密码(WebAuthn PRF)解锁为同一个DEK的第二包
会议Session, (中文(简体) ), chromeSessionStorage, (中文(简体) ), chromeAlarms, (中文(简体) ), SESSION_DEFAULT_AUTOLOCK_MSdEK 输入 chrome.storage.session 带有过期和警报; getKey() 重新检查过期本身
密钥环适配器chromeKeyringStorage, (中文(简体) ), vaultSecretStorage@anywalletkit/keyring 作为普通JSON的元数据,通过金库的秘密,每个呼叫一个DEK
中继PageRequest 编号 : RelayRequest 有形体和卫士, isRelayMethod, (中文(简体) ), pageRequestFrom, (中文(简体) ), stampOrigin, (中文(简体) ), checkSenderOrigin, (中文(简体) ), RELAY_ERRORS页面 qq 内容脚本 qq 服务人员信息; 内容脚本只取页面窗口本身发布的信息( )pageRequestFrom(event, window): 一个iframe's parent.postMessage 不是网站),来源是浏览器的(port.sender),从来没有页面
路由器RequestRouter, (中文(简体) ), READ_METHODS, (中文(简体) ), SIGNING_METHODS, (中文(简体) ), toRelayErrordApp可能称为: 仅核算连接源, 链加/ 切换通过批准窗口, 从钱包本身的RPC读取, eth_sign 从来没有提供,所有其它4200
权限PermissionStore, (中文(简体) ), CHAIN_ACCOUNT_KEYS按原产地分列的账户(EVM、索拉纳、TON、Tron、Bitcoin、NEAR)和链条
核准ApprovalQueue, (中文(简体) ), ReviewDeclined, (中文(简体) ), QueueLimitError, (中文(简体) ), APPROVALS_MAX_PENDING_PER_ORIGIN一次一个批准窗口,最多3个尚待处理的请求和1个待处理的请求 connect; 运输票据(setVia(用于钱包连接端口)
签名classifySignRequest, (中文(简体) ), prepareTransaction, (中文(简体) ), createSignHandler, (中文(简体) ), messageText连接地址和连锁检查,来自网站的EIP-7702代表团被拒绝,钱包的RPC中的非ce/ gas/费用
网络NetworksTable, (中文(简体) ), DEFAULT_NETWORKS, (中文(简体) ), parseAddChainParams,索拉纳 / TON / Tron 端点具有公共RPC故障列表的EVM网络; wallet_addEthereumChain 仅用于目录链,仅限https, eth_chainId 经核实、现场提供的RPC盖章 custom
审查门ReviewGate, (中文(简体) ), evmCallMatcher, (中文(简体) ), chainTxMatcher经过一张单子审查整个计划后,这些操作正好在TTL内通过一次
交换quoteRoutes, (中文(简体) ), reviewSwapPlan, (中文(简体) ), executionFloor, (中文(简体) ), SwapsStore, (中文(简体) ), SwapTracker, (中文(简体) ), parseSwapId累进引出于互换2提供者,每计划一份审查表(列出无气量订单并配以EIP-712散列),与审查账户挂钩的预先核准书(meta.account),在工人重启之前恢复互换
赚reviewEarnPlan, (中文(简体) ), earnPlanMatchersein 模块计划(核准+调用)的一张工作表,绑定在 meta.account
TON 连接parseConnectRequest, (中文(简体) ), parseSendTransaction, (中文(简体) ), parseSignData, (中文(简体) ), tonProofMessage, (中文(简体) ), tonSignDataMessagetON 连接 v2 的纯数据半部分( 摘要) ton_proof 财务报告和审定财务报表 signData 签 名 、 以 校正 ; 帐号 signTonProof 编号 : signTonConnectData (华莱特顿) - sign() 拒绝32字节摘要
偷窥PhishingDetector元任务 eth-phishing-detect 列表格式, 随构建一起运出( 运行时从未获取 ); 拒绝列出的站点(refusal → refuse 打开 ApprovalQueue 财务报告和审定财务报表 RequestRouter, 4100, 无窗口; 模糊的外观, 标签上的品牌, 通码警告
塞拉利昂parseSiwe, (中文(简体) ), siweProblems, (中文(简体) ), describeSiweEIP-4361 登录信件:域名与询问站点,地址,链条,过期,非ce(警告)
解决中毒问题lookalikeOf, (中文(简体) ), RecipientBook当新收件人模仿用户确认时警告
网络认证verifyAssertion, (中文(简体) ), approvalChallenge, (中文(简体) ), derToRaw, (中文(简体) ), rawToDerES256断言检查"每张签名上的密码";工人从来不相信页面的字眼

安保模式(摘要)

  • 钥匙在休息. 信封 v2: scrypt N=2^17 r=8 p=1 (中文(简体) )@noble/hashes页:1 AES-256-GCM 包装了随机32字节的 DEK; DEK 封存 AAD 下的每一个秘密 forgewallet-vault/secret/<id> (框不能互换). DEK盒子的AAD(AD) (英语) 绑定精确的 KDF 参数, 所以一个被编辑盐或成本的信封 磁盘上无法打开; unlock 拒绝支付底价weak-kdf),以及 费用或规模以上 VAULT_LIMITS (crypt N ^ 2^20, r 16, 第 4页;PBKDF2) ● 5 000 000次重复;1 000次秘密;32次密码;4次密钥) 运行( r)unsupported-envelope) (中文(简体) ). 给信封的书信被连载(一) Vault 因此,平行进口的每个存储区域都保密。 单曲 信封(PBKDF2-SHA256、600,000个重联)仍未打开并重新封存 作为v2. 短于8个字符的密码被金库本身拒绝. 密码错误和篡改都是同样的失败(wrong-password) (中文(简体) ). create 永不覆盖; 重置为显式 destroy()。 。 。 .
  • 密码. 在HKDF-SHA256(PRF输出, 盐 = 证书 id; 密码保留恢复路径.
  • 重接键. changePassword 重新包装同样的DEK,和 removePasskey 不收回一个DEK 的密码 。 被怀疑后 妥协, rotateVaultKey(password) 做一个新鲜的DEK, 重新封装每 秘密,放下密码,写一个信封; 把返回的DEK交给 session.unlock,它取代了旧的. setSecret 拒绝一个不打开金库秘密的DEK.
  • 开封州. 只有DEK被保存,在 chrome.storage.session (只记录,可信任的上下文),每个读取处执行过期 提醒锁定; 此软件包的密钥缓冲器在使用后被零化 . unlock 编号 : lock 编号 : touch 编号 : getKey 一次跑一次,所以活动赛车 锁从不带钥匙回来.
  • 页面错误 . toRelayError(e, { log }) 传递钱包本身的拒绝 (EIP-1193代码)和一个节点的JSON-RPC出错(代码,还原数据)与URL 删除; 其它内容是 -32603 Internal error 在页面上,然后去 log。 。 。 .
  • 发源地. 内容脚本只转发页面窗口本身的内容 公布(pageRequestFrom数字 : event.source 是页面, event.origin 联合国 因此,一个广告或嵌入一个iframe不能作为网站说话。 这个 服务工作者只在内容脚本时回答中继消息 印花来源等于 port.sender.origin。权限是 键入源代码,从不使用 URL 页面或 WalletConnect 对等请求.
  • 请求. 所有披露账户或转移资金的事物都会经历 批准队列; 盲签( e)eth_sign未提供;输入数据 另有一连串、部署和地点来源的EIP-7702代表团 拒绝; 只读的 RPC 到钱包本身的终点 .
  • 腾讯网. 该工具包除了RPC/提供者之外,不提出自己的请求 调用钱包电线 ; 钓鱼列表是钱包船的数据 .

钱包的工作留下的是什么:扩展页 CSP(script-src 'self',没有 远程图像,用于工人的宿主授权列表 fetch,孤立第三方 网络 SDKs (WalletConnect, Omniston) 在沙盒页面中, 可复制 释放构建和存储账户.

使用铬适配器

import {
  Vault, Session, PermissionStore, NetworksTable, ApprovalQueue, RequestRouter,
  chromeLocalVaultStorage, chromeSessionStorage, chromeAlarms, chromeJsonStorage,
  chromeKeyringStorage, vaultSecretStorage, checkSenderOrigin, isRelayRequest, PORT_NAME,
} from '@anywalletkit/extension-kit'

// service worker
const vault = new Vault({ storage: chromeLocalVaultStorage(chrome.storage.local) })
const session = new Session({ storage: chromeSessionStorage(chrome.storage.session), alarms: chromeAlarms(chrome.alarms) })

// onboarding
const dek = await vault.create(password)          // refuses if a vault exists or the password is too short
await vault.setSecret(dek, 'main', utf8(seedPhrase))
await session.unlock(dek)                         // dek is zeroized here

// @anywalletkit/keyring on top of the vault
const keyringStorage = chromeKeyringStorage(chrome.storage.local)
const secrets = vaultSecretStorage(vault, session) // VaultError('locked') once the session expired

// the dApp side
const permissions = new PermissionStore(chromeJsonStorage(chrome.storage.local, 'my-wallet.permissions'))
const networks = new NetworksTable(chromeJsonStorage(chrome.storage.local, 'my-wallet.networks'))
const approvals = new ApprovalQueue(myApprovalWindow) // chrome.windows.create({ type: 'popup' }) behind ApprovalWindow
const router = new RequestRouter({ permissions, networks, approvals, accounts, rpc, emit, sign })

chrome.runtime.onConnect.addListener((port) => {
  if (port.name !== PORT_NAME) return
  port.onMessage.addListener(async (msg) => {
    if (!isRelayRequest(msg)) return
    const origin = checkSenderOrigin(port.sender, msg.origin)
    if (!origin) return // forged origin: dropped, not answered
    const result = await router.handle(origin, msg.chain, msg.method, msg.params)
    // post a RelayResponse { kind: 'response', id: msg.id, … } back on the port
  })
})

memoryVaultStorage, (中文(简体) ), memorySessionStorage, (中文(简体) ), memoryAlarms, (中文(简体) ), memoryJsonStorage 财务报告和审定财务报表 memoryApprovalWindow 是做测试的双胞胎.

版本与发布记录

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

版本发布日期距今
0.3.5latest2026/11/052 天前
0.3.42026/11/034 天前
0.3.22026/10/308 天前
0.3.12026/10/309 天前
0.3.02026/10/2910 天前
0.2.22026/10/2810 天前

关于 @anywalletkit/extension-kit 的常见问题

@anywalletkit/extension-kit 是什么?

Chromium (MV3) 钱包扩展核心用于任意钱包 Kit: scrypt + AES-256-GCM 保险库 有密码(WebAuthn PRF) 解锁,自动锁定会话, dApp 请求路由器, 并有源代码权限和批准队列, 签名-请求检查, 互换/ Ein plan r

如何安装 @anywalletkit/extension-kit?

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

@anywalletkit/extension-kit 支持 TypeScript 吗?

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

@anywalletkit/extension-kit 支持 ESM 还是 CommonJS?

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

@anywalletkit/extension-kit 需要什么版本的 Node.js?

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

@anywalletkit/extension-kit 可以商用吗?

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

@anywalletkit/extension-kit 的下载量有多少?

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

@anywalletkit/extension-kit 还在维护吗?

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