一个基于浏览器的演示项目,展示如何使用Ledger的Device Management Kit (DMK)与Ledger硬件钱包交互。
此演示实现了以下功能:
- 设备连接:连接可用的Ledger设备
- 地址获取:从连接的设备获取以太坊地址
- 签名:使用以太坊应用程序签署消息
- 密码短语流程:演示使用密码短语功能
- Node.js (v14或更高版本)
- Ledger设备 (Nano S, Nano X, 或Stax)
- 在Ledger设备上安装的以太坊应用
- 支持WebHID的浏览器 (Chrome, Edge, 或Opera)
- 克隆此仓库
- 安装依赖项:
npm install
# 或
yarn install- 构建并启动开发服务器:
npm start
# 或
yarn start- 演示将在默认浏览器中打开
- 将Ledger设备连接到计算机
- 解锁设备
- 点击演示中的"Connect Device"按钮
- 按照屏幕上的指示进行每项操作
- 此演示需要支持WebHID的浏览器 (Chrome, Edge, 或Opera)
- 对于密码短语流程,您需要在设备上启用密码短语功能
- 在执行以太坊操作之前,确保Ledger设备已解锁且以太坊应用已打开
- 演示使用标准以太坊派生路径
44'/60'/0'/0/0作为第一个账户
此演示遵循Ledger官方文档中描述的连接流程:
-
设备发现:使用
dmk.startDiscovering()方法获取可用设备列表- 返回一个Observable,每当扫描到设备时发出一个
DiscoveredDevice对象 - 这些对象包含设备型号的信息
- 返回一个Observable,每当扫描到设备时发出一个
-
连接:使用
dmk.connect({ device })方法连接到发现的设备- 返回一个会话ID(
sessionId),用于后续所有与设备的交互
- 返回一个会话ID(
-
状态监控:使用
dmk.getDeviceSessionState({ sessionId })监控设备状态- 监控设备连接状态、锁定状态
- 获取电池电量、当前运行的应用程序等信息
-
断开连接:使用
dmk.disconnect({ sessionId })断开设备连接
- 获取地址:使用Ethereum Signer Kit从设备派生地址
- 消息签名:使用Ethereum Signer Kit通过设备签署消息
- 安全通道:使用DMK的安全通道功能(
dmk.startSecureChannel({ device })) - 密码短语检查:检查设备是否启用了密码短语功能
- 密码短语请求:请求设备提示输入密码短语
- 获取派生地址:获取使用密码短语派生的地址