# @ducat-unit/wallet-snap 中文文档

规范地址：https://npmcn.com/package/%40ducat-unit/wallet-snap/

版本：0\.3\.2
npm 元数据更新时间：2026-11-05T21:08:00.470Z
中文译文更新时间：2026-11-12T23:36:22.185Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ducat-unit/wallet-snap
原文对照：https://npmcn.com/package/%40ducat-unit/wallet-snap/?lang=original
项目主页：https://github.com/DUCAT-UNIT/ducat-snap#readme
源码仓库：https://github.com/DUCAT-UNIT/ducat-snap

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：2.8 MB，6 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>=20
- 运行依赖：6 个
- 首次发布：2026-06-14T01:40:25.235Z
- 最新版本发布：2026-11-05T21:08:00.288Z
- 近 30 天下载量：13552（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：13（近 12 个月 13 个）

## 中文简介

Ducat Bitcoin 账户并签名 Snap for MetaMask.

## 安装

```sh
npm install @ducat-unit/wallet-snap
```

也可以使用：`pnpm add @ducat-unit/wallet-snap`、`yarn add @ducat-unit/wallet-snap`、`bun add @ducat-unit/wallet-snap`

## README

# Ducat 抓图

Bitcoin 账户和签名的 MetaMask 快捷键 [杜猫](https://ducatprotocol.com/) 协议.

它从用户的 MetaMask 秘密恢复词句中获取比特币账户, 保存密钥 在MetaMask内部, 并曝光一个小JSON-RPC API 到 Dukat 网络应用程序 消息签名, 完成钱包库存和PSBT签名. 网络应用程序驱动用户所做的一切——借入, 报答、撤回等——和Snap处理账户发现和MetaMask 确认提示.

生产工艺品完全支持 `mainnet` 财务报告和审定财务报表 `mutinynet`编辑 角色中立的地方发展文物 `regtest`。Snap没有 单独 `alpha-mainnet` 钱包网络。 其主网和 Mutinynet 剖面图的使用 同样的生产 Mutinynet 验证器 URL 同时保留其现有的比特币地址, 交易、起源和钱包开发规则.

## 什么样的快感?

Snaps 允许开发者扩展 MetaMask , 并赋予它默认不会传送的能力—— 如 支持非EVM链. 他们在一个孤立的环境里运行 有限的一套 权限。 见 [元任务抓取文件](https://docs.metamask.io/snaps/) 为了更多.

## RPC方法

```
ducat_getAccounts({ network })
ducat_getCapabilities()
ducat_getNetwork()
ducat_getWalletInventory({ network })
ducat_signMessage({ network, address, message })
ducat_signPsbt({ network, psbt, signInputs, context })
ducat_signBatch({ network, entries, context })
ducat_switchNetwork({ network })
```

`ducat_getCapabilities()` 报告 `derivationScheme: "ducat-snap/v1"`。 。 。 . Snap 直接请求三个最终管理的角色节点: sat at `m/84'/<coin>'/0'/0/0`联合国信息技术处 `m/86'/<coin>'/0'/0/0`,和金库 `m/86'/<coin>'/0'/2/0`时 `<coin>` 实值 `0` 主要网和 `1` 打开 穆提尼内特和瑞格特 Ducat 保留角色分支 `2` 用于金库客户端密钥; 标准分支 `1` bitcoin 更改地址仍然可用。 重新计数 同一秘密恢复词组的MetaMask 恢复同一管理账户 用于这一计划。 Snap Home 中选择的导入密钥是明确的覆盖 并且不是从这个办法衍生出来的.

Β集成保存了全部发布 `0.3.1` 管理路径,包括 保险库的 `/2/0` 后缀。 它不会将已有的用户切换到更老的β `/0/1` 保险库钥匙或迁移他们的保险库。 检查已建 与 `0.3.1` 账户固定装置,包括新恢复,在主要网, 穆提尼特,还有雷格特.

Snap拥有一个明确的部署选择. 新生产装置默认为 `mutinynet`。 。 。 . `ducat_getNetwork()` 返回该选择; `ducat_switchNetwork()` 仅在MetaMask拥有的确认显示请求来源后更改, 从网络到网络, 有效的验证人和埃斯波拉的起源 签名文本警告。 同一个网络开关是无确认的无操作.

每一种对部署敏感的方法都必须与选定的部署完全一致。 错配 在账户生成、端点访问、通知、签名提示或 状态突变 `NETWORK_MISMATCH` 仅包含细节 `selectedNetwork` 财务报告和审定财务报表 `requestedNetwork`。 。 。 . `features.explicitNetworkSelection` 广告本合同. 遗留状态 `lastNetwork` 迁移到 `selectedNetwork`;最近的行动, 键,端点覆盖,以及被支持网络的源元数据被保存. 所属国家 `alpha-mainnet`,信号,或Testnet4 Snap网络是 被抛弃,而不是重新命名或迁移到Mainnet.

生产工艺品允许这些 Dukat 应用程序的起源:

```
https://app.ducatprotocol.com
https://dev.ducatprotocol.com
https://test.ducatprotocol.com
```

`localhost` 和预览部署被故意排除在已公布的 显出. 开发文物用精确的 `http://localhost:3000`, (中文(简体) ), `http://localhost:8075`, (中文(简体) ), `http://frontend:3000`, (中文(简体) ), `http://ducat-admin:8075`,以及 `https://dev.ducatprotocol.com`;没有 继承其他生产来源。 它包含 没错 `regtest`, (中文(简体) ), `mainnet`,以及 `mutinynet`,默认为 `mutinynet`,以及 禁用调试和未及时的签名 . 仅测试的无时效方法拒绝每次布局到比特币 钱包状态前的主网、端点、 en、提示或签名是 触动。 每次接受的部署仍然需要例行签字.

Infra 构建被忽略的开发候选人 `.snap/dev`打开门 当服务器没有运行时, 只为被冻结的字节服务 `local:http://localhost:8086`。前端和管理员是调用工作流程 一个本地Snap; 也不是一个文物政策类。 留在生产包装中 没有本地主机或删除的钱包 网络权威. 生产和开发的文物都一样 mainnet 和 Mutinynet 共享验证器 URL; Regtest 留在本地 .

从 `ducat-infra`,使用时 `make snap-down`, (中文(简体) ), `make snap-install`,以及 `make snap-check` 在此之前 `make snap-serve`。启动管理员不构建,启动, 停止,或登录共享Snap。 同步安装/ 更新, 密钥 进口、供资、催促、签署和广播 运营商审批. 捆绑的主网简介需要制作 合同身份; Alpha 配置的验证符与其不相容 .

## 网络配置和端点覆盖

Snap 船装入网络配置文件 [`src/network-profiles.json`](https://npmcn.com/package/%40ducat-unit/wallet-snap/src/network-profiles.json)。 。 。 . 每个剖面图都带有一个Canonic Snap网络,即用于 地址、交易、运输和起源力学,以及 `chain_network` 其验证符中期望的值 :

| 同步网络 | 校验器 URL | 需求 `chain_network` |
| --- | --- | --- |
| 主要网 | `https://validator-mainnet.prod.ducatprotocol.com` | `main` |
| 叛乱 | `https://validator-mutinynet.prod.ducatprotocol.com` | `mutiny` |

`main` ducat Core的生产链身份; `mainnet` 仍然是Snap的 钱包网络名称。 端点更新不会改变任何 `0.3.1` 账户 进取道. 生产请求失败不会回到 dev 或 α验证器.

每个验证员必须报告自己的网络身份. 主网拒绝 Mutinynet 数据,在不可用的情况下,两个配置文件都不会回到另一个网络.

用户可以从 Snap Home 设置验证器和 Esplora 端点覆盖. 覆盖是 存储在 Snap 状态并应用到完成钱包库存和签名验证. 仍然选择现有的明确覆盖; 在要使用的设置中清除 捆绑生产默认值. 只通过程序 目标网络名称; 它们不会通过任意端点 URL 签名或 库存RPC呼叫。 远程超接需要 HTTPS 并对照 存储前选中的比特币网络 。 覆盖只更改 URL; 它不能更改配置文件的预期验证符身份 。 普通 HTTP 有限 以重新测试回转开发.

坐标 家用与网站请求相同的确认开关流量. 端点和密钥 窗体在改变网络范围状态之前重读所选网络, 所以 stale 主屏幕无法修改不同的网络 .

## 发展

本地 Flask 连接器, 运行 `npm run preview:flask` 打开 `http://localhost:3000` 在浏览器中安装了MetaMask Flask。 这个 连接器安装或更新 `local:http://localhost:8086`来源之后 更改, 停止预览服务器并再次运行命令, 然后重新连接 以装入重建的 Snap。 服务器持有经核实的捆绑快照 和显示,所以它从来没有服务 错配的文件在重建.

```bash
npm ci
npm run build        # mm-snap build -> dist/bundle.js
npm run manifest     # regenerate the manifest shasum
npm run serve        # serve the snap at http://localhost:8080
```

这个 `ducat-infra` 本地堆栈使用 `make snap-check` 生成和验证 `.snap/dev`,则 `make snap-serve` 为不变的候选人服务。 本地主机 来源和开发捆绑的shasum只写到被忽略的 运行时间;跟踪清单仍然是HTTPS生产政策。 发展准备 拒绝缺失,重复, 具有信誉、有路径、有疑问、有碎片和畸形 源条目,而不是扩展生产清单.

在打开公关前 :

```bash
npm run type-check
npm test
npm run verify:harness   # MetaMask simulation harness (accounts, signing, BitVM3)
```

将前端指向本地建筑 `NEXT_PUBLIC_DUCAT_SNAP_ID="local:http://localhost:8080"`, (中文(简体) ), 或发布软件包 `NEXT_PUBLIC_DUCAT_SNAP_ID="npm:@ducat-unit/wallet-snap"`。 。 。 .

## 家园和确认屏幕

坐标 家显示 BTC 、 UNIT 和允许的 MetaMask ETH 账户, 以及 比特币、UNIT、ETH、WUNIT和USDC余额。 Ethereum 提供者许可 仅用于账户发现; 打开 Home 可请求缺失账户 访问,而导航读取现有访问而不再次提示. Ethereum 余额使用 Ethereum 主网或 Sepolia 根据选定的 Snap网络. wUNIT为 Sepolia 配置;其主网地址仍保留 在部署前未设定 。 价格报价和EVM余额只显示 用于授权比特币签名.

设置包含网络选择器、比特币密钥覆盖和端点 编辑。 复制字段和编辑控制使用本地 Snap 组件 . 故障确认显示动作量、目的地并核实 数值前后。 交易段开始崩溃; 完整地址 保留地址和签名细节。 原始UNIT库存和应用元数据 在确认中省略各节。 输入所有权、前期产出、, 网络、收费和签名支票仍然独立于这些显示. 断层比较元数据仍然是Snap的内部;公共钱包 库存 RPC 保留其现有的响应形状,用于兼容的应用程序.

## 警卫

钥匙,孩子钥匙, WIF, 和生的 en 永远不会离开的快活。 显式授精入网 6个完成 `ducat-snap/v1` 角色路径。 仅衍生出 Dukat 账户 已签名的(当存在时优先使用 Snap Home 导入的密钥),仅指 明确 `signInputs` 索引被签名,每个签名路径都需要 生产文物中的MetaMask确认. 前端提供上下文被视为不可信显示元数据 解析的 PSBT 加上新鲜的 Snap 拥有的钱包/ prevout 证据 是真相的来源 签名。 网站构建和广播交易。 底盘库输入必须携带 Ducat 联合签名tapleaf,其控制块重算到预输出键.

第三方安全审计(Sayfer)在 [`docs/audit.pdf`](https://npmcn.com/package/%40ducat-unit/wallet-snap/docs/audit.pdf)。 。 。 .

## 许可证

见 [自由主义](https://npmcn.com/package/%40ducat-unit/wallet-snap/LICENSE)。 。 。 .

## 常见问题

### @ducat-unit/wallet-snap 是什么？

Ducat Bitcoin 账户并签名 Snap for MetaMask\.

### 如何安装 @ducat-unit/wallet-snap？

在项目目录运行 npm install @ducat-unit/wallet-snap，或使用 pnpm add / yarn add / bun add。

### @ducat-unit/wallet-snap 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/ducat-unit\_\_wallet-snap 是否存在。

### @ducat-unit/wallet-snap 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @ducat-unit/wallet-snap 需要什么版本的 Node\.js？

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

### @ducat-unit/wallet-snap 可以商用吗？

@ducat-unit/wallet-snap 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @ducat-unit/wallet-snap 的下载量有多少？

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

### @ducat-unit/wallet-snap 还在维护吗？

最新版本 0\.3\.2 发布于 2026/11/06（7 天前）；至今共发布 13 个版本，其中过去 12 个月发布了 13 个；首次发布于 2026/06/14。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

