跳到主要内容

HD Key

CryptoHDKey 用于在 Air-Gap 场景中描述分层确定性密钥信息,常用于把设备端导出的扩展公钥传递给应用。

应用可根据其中的公钥、链码、来源路径和父指纹继续派生地址,但不应把它当作私钥材料使用。

入参说明

字段值类型用途
isMasterboolean是否表示主密钥
isPrivateKeyboolean是否包含私钥数据,通常应为否
keyBuffer公钥或扩展密钥主体数据
chainCodeBufferHD 派生所需链码
useInfoCryptoCoinInfo币种与网络信息
originCryptoKeypath当前密钥对应的来源路径
childrenCryptoKeypath可继续派生的子路径范围
parentFingerprintBuffer父级指纹
namestring可选名称
notestring可选备注,用于标识账户类型

常见 Note 值

  • 'account.standard' – BIP44 标准账户
  • 'account.ledger_live' – Ledger Live 账户
  • 'account.ledger_legacy' – Ledger Legacy 账户

UR例子

UR:CRYPTO-HDKEY/PDAXHDCLAOZTRDKBTKFPRFKBCWVEWYBGDPNTCPVLEOENJSWMBKFTLTRESNWTNLTLMKJYVYMWBSAAHDCXCSBNNLLNBZIAJZTPKPPKJOSTCEZSJEKGYKJOCSKNHFTPSWTIGHVABDIEGTBWWLTEAHTAADEHOYADCSFNAMTAADDYOYADLNCSDWYKCSFNYKAEYKATTAADDYOYADLRAEWKLAWKAYAEASINFPIAIAJLKPJTJYCXEHBKKOGHISINJKCXINJKCXHSC

解码例

import { URDecoder } from "@ngraveio/bc-ur";
import { CryptoHDKey } from "@keystonehq/bc-ur-registry";

const dec = new URDecoder();
// 把扫描得到的每一帧都喂给解码器
// feed each scanned frame into dec.receivePart(frame)

if (dec.isComplete()) {
const ur = dec.resultUR(); // 解码结果里的 ur.type 应为 'crypto-hdkey'
const hdkey = CryptoHDKey.fromCBOR(ur.cbor);

const name = hdkey.getName();
const note = hdkey.getNote();
const chainCode = hdkey.getChainCode();
const origin = hdkey.getOrigin();
const xfp = origin?.getSourceFingerprint();
}