Bip32-Hd-Wallets
BIP32 子地址 - 無論如何要關聯它們?
由於 BIP32 子密鑰是從主 xpub 密鑰派生的,而子地址是子私鑰的 pubkey 雜湊,因此是否有可能/無論如何關聯兩個地址派生自同一個主密鑰並屬於同一個高畫質錢包?
使用 NBitcoin 說明問題的虛擬碼:
ExtKey masterKey = new ExtKey(); ExtKey user1Key = masterKey.Derive(new KeyPath("m/100'/1")); ExtKey user2Key = masterKey.Derive(new KeyPath("m/100'/2")); string addr1 = user1Key.PrivateKey.PubKey.GetAddress(Network.Main); string addr2 = user2Key.PrivateKey.PubKey.GetAddress(Network.Main);
如果一個局外人有地址
addr1
和addr2
(並且這些地址在區塊鏈上有交易),但沒有別的,他能確定這兩個地址在同一個高畫質錢包中嗎?
不,從外部看,所有地址看起來完全不相關,如果沒有鏈碼,就無法確定兩個地址之間是否有任何關係,包括一個是另一個的父級還是另一個的兄弟級。這是因為所有推導都涉及散列,並且散列被設計為具有明顯隨機分佈的輸出,無論散列函式的兩個輸入之間的關係如何,輸出應該看起來不相關。