Address-Generation

具有強化派生和僅限觀看地址的比特幣高畫質錢包

  • January 22, 2019

我正在了解高畫質錢包如何工作的細節。在徹底閱讀了 BIP32 和 BIP44 文件並補充了 Mastering Bitcoin 之後,我仍然無法弄清楚。

假設我使用 BIP44 第一個帳戶,第一個地址路徑路徑派生擴展私鑰:m/44'/0'/0'/0/0然後我將擴展私鑰轉換為擴展公鑰。

根據我到目前為止所閱讀的內容,正確的方法是獲取擴展的公鑰並使用完全非硬化的路徑,例如:M/0/1, M/0/2?

這是正確的方法嗎?我的問題是 的公鑰M/44'/0'/0'/0/1M/0/1.

我只是想確保我正確使用了派生路徑。非常感謝!

使用主密鑰(稱為 m)導出 m/44’/0’/0’。這將為您提供一對公鑰/私鑰,我們稱它們為 xpub-a 和 xprv-a。

現在您可以將 xpub-a 帶到您的線上機器上,並使用 xpub-a 導出接收地址(xpub-a/0/0、xpub-a/0/1 等)和更改地址(xpub-a/1/ 0、xpub-a/1/1 等)。

通過這種方式,您已將強化派生與非強化派生連接起來用於更改和接收地址。您的主密鑰 (m) 路徑中的最終地址將是:

接收地址:

米/44’/0’/0’/0/0

m/44’/0’/0’/0/1 …等

和更改地址:

米/44’/0’/0’/1/0

m/44’/0’/0’/1/1 …等…

使用 bip32 的範例:

讓 master = bip32.fromBase58(‘xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi’)

讓 final = master.derivePath(“m/44’/0’/0’/0/0”)

let middle = master.derivePath(“m/44’/0’/0’”).neutered() // “neutered” 移除私鑰

讓 final2 = middle.derivePath(“0/0”);

// 觀察 final.neutered().toBase58() === final2.toBase58()

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