Ducat 抓图
Bitcoin 账户和签名的 MetaMask 快捷键 杜猫 协议.
它从用户的 MetaMask 秘密恢复词句中获取比特币账户, 保存密钥 在MetaMask内部, 并曝光一个小JSON-RPC API 到 Dukat 网络应用程序 消息签名, 完成钱包库存和PSBT签名. 网络应用程序驱动用户所做的一切——借入, 报答、撤回等——和Snap处理账户发现和MetaMask 确认提示.
生产工艺品完全支持 mainnet 财务报告和审定财务报表 mutinynet编辑
角色中立的地方发展文物 regtest。Snap没有
单独 alpha-mainnet 钱包网络。 其主网和 Mutinynet 剖面图的使用
同样的生产 Mutinynet 验证器 URL 同时保留其现有的比特币地址,
交易、起源和钱包开发规则.
什么样的快感?
Snaps 允许开发者扩展 MetaMask , 并赋予它默认不会传送的能力—— 如 支持非EVM链. 他们在一个孤立的环境里运行 有限的一套 权限。 见 元任务抓取文件 为了更多.
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。 。 。 .
每个剖面图都带有一个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。 服务器持有经核实的捆绑快照
和显示,所以它从来没有服务 错配的文件在重建.
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生产政策。 发展准备 拒绝缺失,重复,
具有信誉、有路径、有疑问、有碎片和畸形
源条目,而不是扩展生产清单.
在打开公关前 :
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。 。 。 .
许可证
见 自由主义。 。 。 .