Raw-Data

輸出描述符序列化

  • May 23, 2021

我正在查看以下官方測試向量:

wsh(multi(1,xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB/1/0/*,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/0/0/*))

對於第一個鍵,它被序列化為:

04 ; version 4
88b21e ; `xpub`
00 ; depth 0 == public key of a master key
00000000 ; parent fingerprint
00000000 ; child index
60499f801b896d83179a4374aeb7822aaeaceaa0db1f85ee3e904c4defbd9689 ; chain code
03cbcaa9c98c877a26977d00825c956a238e8dddfbd322cce4f74b0b5bd6ace4a7 ; key data
e233a252 ; base58 checksum

和第二把鑰匙:

04 ; version 4
88b21e ; `xpub`
01 ; depth 1
bd16bee5 ; parent fingerprint
00000000 ; child index
f0909affaa7ee7abe5dd4e100598d4dc53cd709d5a5c2cac40e7412f232f7c9c ; chain code
02fc9e5af0ac8d9b3cecfe2a888e2117ba3d089d8585886c9c826b6b22a98d12ea ; key data
44183bfc ; base58 checksum
  1. 我的問題是例如第二個鍵:深度是否與附加的尾部/0/0/*有關?如果是,不應該是 2 而不是 1 嗎?可以從附加的尾部恢復深度嗎?
  2. 為什麼第二個鍵的子索引為零?它應該不等於對應於星星的數字。可以從附加的尾部 /0/0/* 中恢復子索引嗎?

看起來您將 BIP 32 序列化與輸出描述符序列化混淆了。

輸出描述符包含使用 BIP 32 中描述的方法序列化的擴展公鑰。此序列化僅適用於該特定公鑰。附加到末尾的派生是獨立的,並且與該 xpub 的序列化分開。那是描述符的一部分。

  1. 我的問題是例如第二個鍵:深度是否與附加的尾部/0/0/*有關?如果是,不應該是 2 而不是 1 嗎?可以從附加的尾部恢復深度嗎?

不,尾巴是獨立於 xpub 的。深度僅適用於由 xpub 序列化的 pubkey,派生路徑不是其中的一部分。

  1. 為什麼第二個鍵的子索引為零?它應該不等於對應於星星的數字。可以從附加的尾部 /0/0/* 中恢復子索引嗎?

因為序列化只針對那個特定的 xpub。附加的派生資訊不是此序列化的一部分。

引用自:https://bitcoin.stackexchange.com/questions/106523