具有強化派生和僅限觀看地址的比特幣高畫質錢包
我正在了解高畫質錢包如何工作的細節。在徹底閱讀了 BIP32 和 BIP44 文件並補充了 Mastering Bitcoin 之後,我仍然無法弄清楚。
假設我使用 BIP44 第一個帳戶,第一個地址路徑路徑派生擴展私鑰:
m/44'/0'/0'/0/0
然後我將擴展私鑰轉換為擴展公鑰。根據我到目前為止所閱讀的內容,正確的方法是獲取擴展的公鑰並使用完全非硬化的路徑,例如:
M/0/1
,M/0/2
?這是正確的方法嗎?我的問題是 的公鑰
M/44'/0'/0'/0/1
與M/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()