HD Key
CryptoHDKey 用于在 Air-Gap 场景中描述分层确定性密钥信息,常用于把设备端导出的扩展公钥传递给应用。
应用可根据其中的公钥、链码、来源路径和父指纹继续派生地址,但不应把它当作私钥材料使用。
入参说明
| 字段 | 值类型 | 用途 |
|---|---|---|
isMaster | boolean | 是否表示主密钥 |
isPrivateKey | boolean | 是否包含私钥数据,通常应为否 |
key | Buffer | 公钥或扩展密钥主体数据 |
chainCode | Buffer | HD 派生所需链码 |
useInfo | CryptoCoinInfo | 币种与网络信息 |
origin | CryptoKeypath | 当前密钥对应的来源路径 |
children | CryptoKeypath | 可继续派生的子路径范围 |
parentFingerprint | Buffer | 父级指纹 |
name | string | 可选名称 |
note | string | 可选备注,用于标识账户类型 |
常见 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();
}