Bip32-Hd-Wallets

bip32 版本字節如何轉換為 base58?

  • July 31, 2015

將 BIP32 版本字節 - x04\x88\xad\xe4- 從 base256 轉換為 base58 和 base58Check 分別返回7irrX1kz713TZjju

我認為版本字節表示xprv。我錯過了什麼?

我正在使用pybitcointools,如果這有所作為。

就像在正常比特幣地址(或任何基於 58 編碼的地址)中一樣,版本字節不會自行編碼。如序列化格式部分所述,有 78 字節的有效負載在被編碼為基數 58 之前被版本化和校驗和:

  • 4 byte:版本字節(主網:0x0488B21E public,0x0488ADE4 private;testnet:0x043587CF public,0x04358394 private)
  • 1 字節:深度:0x00 用於主節點,0x01 用於 1 級派生密鑰,….
  • 4 個字節:父密鑰的指紋(如果是主密鑰,則為 0x00000000)
  • 4 個字節:子編號。這是 xi = xpar/i 中 i 的 ser32(i),其中 xi 是鍵 > - 被序列化。(如果是主密鑰,則為 0x00000000)
  • 32字節:鏈碼
  • 33 字節:公鑰或私鑰數據(公鑰為 serP(K),私鑰為 0x00 || ser256(k))

當您對多字節結構進行 base58 序列化時,沒有字節到字元的映射。這不像 0x04 變成 ‘x’,0x88 變成 ‘p’ 等等。相反,整個 86(78 個有效負載 + 4 個版本 + 4 個校驗和)字節結構被編碼為以 ‘xpriv’ 開頭的東西,當 4 個最重要的字節時86 個字節的結構是 [0x04, 0x88, 0xad, 0xe4]。

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