Skip to Content
离线签名概览

Air-Gap(离线二维码签名)

使用 UR 编码二维码构建”设备保持离线”的签名流程。

工作流程

  1. 构建请求:创建签名请求 UR 数据包,渲染为动画二维码帧
  2. 设备扫描:设备扫描二维码,在屏幕上验证详情,离线签名
  3. 获取签名:设备以动画二维码形式显示签名 UR
  4. 广播交易:应用扫描响应,验证后通过网络广播

按链快速开始

链请求类型(应用 → 设备)响应类型(设备 → 应用)
Ethereum & EVMeth-sign-requesteth-signature
Bitcoin (PSBT)crypto-psbtcrypto-psbt
Solanasol-sign-requestsol-signature
Trontron-sign-requesttron-signature

账户导出类型(设备 → 应用)

首次连接时,设备通过以下 UR 类型向应用导出账户信息:

UR 类型说明
crypto-hdkey导出单个 HD 密钥(BCR-2020-007 )
crypto-multi-accounts导出多链账户集合

API 参考

  • 基础 API – 核心 UR 类型:CryptoHDKey、CryptoCoinInfo、CryptoKeypath

依赖包

# Keystone SDK & UR registries npm install @keystonehq/keystone-sdk @keystonehq/bc-ur-registry-eth # UR primitives npm install @ngraveio/bc-ur

接入第三方钱包

将 OneKey Air-Gap 接入现有钱包时,应确保二维码扫描器把这些 UR 类型交给采用喷泉码的 BC-UR v2 解码器,而不是旧版 v1 解码器。

扫描器需要接受的 UR 类型

方向UR 类型用途
设备 → 应用crypto-psbtBTC 已签名 PSBT
设备 → 应用crypto-hdkey连接时导出 HD 密钥
设备 → 应用crypto-multi-accounts连接时导出多个账户
设备 → 应用eth-signatureETH 签名响应
设备 → 应用sol-signatureSOL 交易签名
设备 → 应用btc-signatureBTC 签名(非 PSBT)
应用 → 设备eth-sign-requestETH 签名请求
应用 → 设备sol-sign-requestSOL 签名请求
应用 → 设备crypto-psbtBTC 未签名 PSBT
设备 → 应用tron-signatureTRON 签名响应
应用 → 设备tron-sign-requestTRON 签名请求

常见问题:UR 类型路由

部分钱包使用允许列表决定哪些 UR 类型交给现代 BC-UR v2 解码器处理(例如 @ngraveio/bc-ur 使用的喷泉码)。列表之外的类型可能落入编码方式完全不同的旧版 v1 解码器,导致扫描始终无法完成。

如果扫描器一直提示“请继续扫描”,却始终不能完成,请检查当前 UR 类型是否已加入 v2 解码器的允许列表。

onekey-app-call-device(私有协议)

onekey-app-call-device 是 OneKey 内部协议,用于 getMultiAccounts、verifyAddress 等设备管理操作。它可能随时改变,第三方钱包不应实现此类型,应使用标准 Keystone SDK 方法。

演示与示例

注意:Air-Gap 设计为离线使用,没有在线浏览器演示。

最后更新于