Bip32-Hd-Wallets

BIP-32 - 父擴展公鑰如何暴露父擴展私鑰?

  • July 16, 2019

以下是來自 bip-32 的片段。我不明白在什麼情況下會暴露“父擴展公鑰”?在電子商務的情況下,“子擴展公鑰”派生自“父擴展公鑰”。電子商務網站只需要知道“子擴展公鑰”即可導出公鑰/地址。在這種情況下,知道“子擴展公鑰”會暴露“父擴展私鑰”嗎?

“一個可能不會立即明顯的弱點是,知道父擴展公鑰加上任何從它傳下來的非硬化私鑰相當於知道父擴展私鑰(因此每個私鑰和公鑰都從它傳下來) 。”

Javascript 中的程式碼片段範例

function testXPub() {
const mnemonic = 'ddddddddddddddddddddddddddddddddddddddddddddddd'
const seed = bip39.mnemonicToSeed(mnemonic)
const node = bip32.fromSeed(seed)
const xpubNode = node.neutered()
console.log("xpubNode :%o", xpubNode)
console.log("xpubNode (string): %o", xpubNode.toBase58())

const xpub_m_0_node = xpubNode.derive(0)
console.log("xpub_m_0_node :%o", xpub_m_0_node)
console.log("xpubNode (string): %o", xpub_m_0_node.toBase58())
const xpub_m_0_0_node = xpubNode.derive(0).derive(0)
console.log("xpub_m_0_0_node :%o", xpub_m_0_0_node)
console.log("xpubNode (string): %o", xpub_m_0_0_node.toBase58())
}

因此,我不會共享 xpubNode,而是共享 xpub_m_0_0_node。

根據 bip32,我有興趣了解,為什麼有人會共享“父擴展公鑰”?

共享父擴展公鑰的目的是讓子公鑰(以及地址)可以從中派生,而無需單獨了解一堆地址。這對於線上電腦只有公鑰的單獨設置更容易,因為線上電腦不需要不斷刷新更多地址來監視。它可以自己生成地址。

在這種情況下,知道“子擴展公鑰”會暴露“父擴展私鑰”嗎?

不可以。只有知道父擴展公鑰和通過非強化派生派生的子私鑰才會公開父私鑰。

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