<p>No, from the outside all addresses look completely unrelated, there is no way to work out if two addresses have any relationship to each other, including if one is the parent of the other or sibling of the other, without the chaincode as well. That's because all derivations involve hashing, and hashing is designed to have an apparently randomly distributed output, regardless of the relationship between two inputs to the hash function the outputs should appear unrelated.</p>

CC BY-SA 3.0
2018-01-08T02:49:42.310Z
2018-01-08T02:49:42.310Z
meshcollider
<p>Since BIP32 child keys are derived from a master xpub key, and child addresses are the pubkey hash of the child private keys, so is it possible/anyway to correlate that two address are derived from the same master key and belonging to the same hd wallet?</p>

<p>pseudo code to illustrate the problem using NBitcoin:</p>

<pre><code>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);
</code></pre>

<p>If an outsider have the addresses <code>addr1</code> and <code>addr2</code>(and those addresses have transactions on the blockchain), but nothing else, can he work out that the two address are in the same hd wallet?</p>

<bip32-hd-wallets>
BIP32 child addresses - anyway to corelate them?
fluter
# BIP32 child addresses - anyway to corelate them?

(Asked by: username_0 on 2018-01-08)

Since BIP32 child keys are derived from a master xpub key, and child addresses are the pubkey hash of the child private keys, so is it possible/anyway to correlate that two address are derived from the same master key and belonging to the same hd wallet?

pseudo code to illustrate the problem using 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);

```

If an outsider have the addresses `addr1` and `addr2`(and those addresses have transactions on the blockchain), but nothing else, can he work out that the two address are in the same hd wallet?

**Tags:** bip32-hd-wallets


---

## 1 answers

### Answer by username_1 on 2018-01-08. Score: 2 | Accepted answer

No, from the outside all addresses look completely unrelated, there is no way to work out if two addresses have any relationship to each other, including if one is the parent of the other or sibling of the other, without the chaincode as well. That's because all derivations involve hashing, and hashing is designed to have an apparently randomly distributed output, regardless of the relationship between two inputs to the hash function the outputs should appear unrelated.


---

