<p>The tree structure is used for organizing the keys you generate. Its just a suggested way to do it.
The first number is the <em>account</em>, in this case account 0 (the default account). This let's you support multiple separate accounts with keys of their own.
Then you have the <em>chain</em>, either 0 or 1. 0 is the external keypair chain, and is used for generating new public addresses. 1 is the internal keychain and is used for things like change addresses - the addresses you don't give out to people (hence 'internal').
Finally the k is obviously used to generate the k-th keypair for account and keychain you've picked. </p>

CC BY-SA 3.0
2017-07-13T09:24:55.213Z
Thank you for your response. One query : Why we need chain? What is chain? and why it is either 0 or 1 only? It has 2 Billion possibility No? Same as Account.
DOLLY PATWA
CC BY-SA 3.0
2017-07-13T09:33:02.037Z
As I said, chain is used to separate the external keypairs from those used internally. Account is just to organise different keys if you have different accounts or use-cases or whatever, I think its kind of self explanatory. This is just a suggested structure, you can choose your own way to organise keys if you want to, but having a guideline is best for compatibility between implementations
meshcollider
CC BY-SA 3.0
2017-07-12T09:37:10.000Z
2017-07-12T09:37:10.000Z
meshcollider
<p>Why does BIP32 use the derivation path m/0'/0'/k' by default? What is the significance of this particular path, and why not just use m/k' or m/k directly? </p>

<bitcoin-core><bip32-hd-wallets>
BIP32 derivation path
DOLLY PATWA
# BIP32 derivation path

(Asked by: username_0 on 2017-07-12)

Why does BIP32 use the derivation path m/0'/0'/k' by default? What is the significance of this particular path, and why not just use m/k' or m/k directly?

**Tags:** bitcoin-core, bip32-hd-wallets


---

## 1 answers

### Answer by username_1 on 2017-07-12. Score: 5 | Accepted answer

The tree structure is used for organizing the keys you generate. Its just a suggested way to do it.
The first number is the *account*, in this case account 0 (the default account). This let's you support multiple separate accounts with keys of their own.
Then you have the *chain*, either 0 or 1. 0 is the external keypair chain, and is used for generating new public addresses. 1 is the internal keychain and is used for things like change addresses - the addresses you don't give out to people (hence 'internal').
Finally the k is obviously used to generate the k-th keypair for account and keychain you've picked.

> **Comments:**
> **username_0**: Thank you for your response. One query : Why we need chain? What is chain? and why it is either 0 or 1 only? It has 2 Billion possibility No? Same as Account.  
> **username_1**: As I said, chain is used to separate the external keypairs from those used internally. Account is just to organise different keys if you have different accounts or use-cases or whatever, I think its kind of self explanatory. This is just a suggested structure, you can choose your own way to organise keys if you want to, but having a guideline is best for compatibility between implementations  

---

