什麼是擴展的公鑰或私鑰?
我的印像是擴展公鑰由公鑰+鏈碼組成,我不熟悉擴展私鑰的組成部分。
然而,情況似乎並非如此。根據pywallet:
The key consists of * 4 byte version bytes (network key) * 1 byte depth: - 0x00 for master nodes, - 0x01 for level-1 descendants, .... * 4 byte fingerprint of the parent's key (0x00000000 if master key) * 4 byte child number. This is the number i in x_i = x_{par}/i, with x_i the key being serialized. This is encoded in MSB order. (0x00000000 if master key) * 32 bytes: the chain code * 33 bytes: the public key or private key data (0x02 + X or 0x03 + X for public keys, 0x00 + k for private keys) (Note that this also supports 0x04 + X + Y uncompressed points, but this is totally non-standard and this library won't even generate such data.)
它不像 publickey + 鏈碼那麼簡單。有人可以從頭到尾解構擴展密鑰嗎?根據令人驚嘆的 iancoleman 網站,網路對此也有影響,這對我來說也沒有意義,但很明顯(如上所示)它是這個公式的一部分。
擴展的公鑰只包含比公鑰和鏈碼多一點的資訊,但是公鑰和鏈碼對於密鑰派生來說是最重要的。其餘的只是有關錢包和人員密鑰的元數據。
版本字節區分 xpub、xpriv 和其他類型的密鑰。指紋辨識父級,以便錢包可以知道此密鑰的父級是什麼。子索引告訴錢包如何再次從父節點派生這個密鑰。
我不熟悉擴展私鑰的組成部分。
擴展私鑰與擴展公鑰完全相同,但不是 33 字節的公鑰數據,而是 33 字節的私鑰數據。
網路對此也有影響,這對我來說也沒有意義,但很明顯(如上所示)它是這個公式的一部分。
網路確定版本字節。這些版本字節存在於比特幣的所有其他內容中,僅用於向使用者指示密鑰用於哪個網路。這在辨識密鑰是否可能被洩露時很有用(因為它已被用於測試軟體)
有人可以從頭到尾解構擴展密鑰嗎?
讓我們
xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw
用作我們的 xpub。Base58 解碼這給了我們
0488B21E013442193E8000000047FDACBD0F1097043B78C63C20C34EF4ED9A111D980047AD16282C7AE6236141035A784662A4A20A65BF6AAB9AE98A6C068A81C52E4B032C0FB5400C706CFCCC56B8B9C580
0488B21E
是 BIP 32 定義的版本字節。
01
意味著這個鍵在深度一
3442193E
是父鍵的指紋
80000000
表示鍵是索引 0h(第 0 個硬化鍵)
47FDACBD0F1097043B78C63C20C34EF4ED9A111D980047AD16282C7AE6236141
是鏈碼
035A784662A4A20A65BF6AAB9AE98A6C068A81C52E4B032C0FB5400C706CFCCC56
是公鑰
B8B9C580
是base58校驗編碼校驗和。