<p>You're mixing up between an <a href="https://input-output-hk.github.io/cardano-wallet/concepts/hierarchical-deterministic-wallets" rel="nofollow noreferrer">HD Wallet</a> and payment/stake address keys. HD Wallet is off-chain concept, creating root keys for which are described <a href="https://input-output-hk.github.io/cardano-wallet/concepts/master-key-generation" rel="nofollow noreferrer">here</a>.</p>
<p>You'd essentially be able to derive root key of HD wallet using mnemonics and then derive the address by following the derivation paths, as explained <a href="https://input-output-hk.github.io/cardano-wallet/concepts/address-derivation" rel="nofollow noreferrer">here</a>.</p>

CC BY-SA 4.0
2022-12-14T12:20:16.553Z
Thanks very much. I did not know that. When I create address (addrxxxxx) in my Yoroi wallet, that follows the concept of HD Wallet? If so, my address is on-chain. So, I did not understand why "HD Wallet is off-chain concept"?
cdt
CC BY-SA 4.0
2022-12-14T13:28:47.713Z
Wallet created in Yoroi is HD Wallet, yes. As regards why concept is off-chain, that's because protocol does not know about these wallets, it only knows about addresses - the cryptography explained above is what allows you to have multiple payment keys derived from a root key that's derived from mnemonics
RdLrT
CC BY-SA 4.0
2022-12-14T13:53:09.513Z
Thanks, I understand. So, the tutorial above (https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses/ ) is also about creating addresses which do not follow the concept of HD wallet. Both doing the same thing (creating address), but why we need both of them?
cdt
CC BY-SA 4.0
2022-12-14T20:21:56.450Z
That particular link is about creating keys/addresses indeed, you dont need both - it just depends on your use-case. It gives the option that's available from using cardano-cli, for HD wallets - you'd need to work with cardano-address/ cardano-wallet (if using CLI) or one of the libraries
RdLrT
CC BY-SA 4.0
2022-12-15T06:51:09.577Z
Thanks, it helps me a lot
cdt
CC BY-SA 4.0
2022-12-13T21:34:27.580Z
2022-12-13T21:34:27.580Z
RdLrT
<ul>
<li>I watch this video on Key Derivation process (<a href="https://www.youtube.com/watch?v=4tSQBK75CPU&amp;t=722s" rel="nofollow noreferrer">https://www.youtube.com/watch?v=4tSQBK75CPU&amp;t=722s</a>). Basically, from mnemonic phrase --&gt; create root key --&gt; create public addresses</li>
<li>Then, I see another tutorial to create payment address.
<a href="https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses/" rel="nofollow noreferrer">https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses/</a>
I can create payment address without any mnemonic phrase or root key</li>
</ul>
<p>The two all above are the process to create addresses, but they are a little different, which I could not understand.</p>
<p>I have 3 questions</p>
<ol>
<li><p>Why in the tutorial, we can create payment address without mnemonic phrase?</p>
</li>
<li><p>In the tutorial, there is no step to create root key. What is the root key? It is verification key?</p>
</li>
<li><p>The video says that we can create multiple addresses from the root key.
I tried to create different addresses using the below command, but they all generated the same address. How can I generate different addresses by using cardano-cli?</p>
</li>
</ol>
<pre><code>cardano-cli address build \
    --payment-verification-key-file payment.vkey \
    --stake-verification-key-file stake.vkey \
    --out-file payment.addr \
    --mainnet
</code></pre>
<p>Any hint would help me a lot. Thank you</p>

CC BY-SA 4.0
2022-12-13T22:13:39.893Z
If you want to find out how to create the root key from the mnemonic and how to derivate the keys and create the signing keys and addresses, take a look here: https://gist.github.com/cardano-apexpool/99784308812bdf7aa01446fa95f47fd2
George - APEX Stake Pool
<cardano-cli><address><cardano-address><public-key><signing-key-file>
Key derivation are unclear
# Key derivation are unclear

(Asked by: username_0 on 2022-12-13)

I watch this video on Key Derivation process (https://www.youtube.com/watch?v=4tSQBK75CPU&t=722s). Basically, from mnemonic phrase --> create root key --> create public addresses
Then, I see another tutorial to create payment address.
https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses/
I can create payment address without any mnemonic phrase or root key

The two all above are the process to create addresses, but they are a little different, which I could not understand.
I have 3 questions

Why in the tutorial, we can create payment address without mnemonic phrase?

In the tutorial, there is no step to create root key. What is the root key? It is verification key?

The video says that we can create multiple addresses from the root key.
I tried to create different addresses using the below command, but they all generated the same address. How can I generate different addresses by using cardano-cli?


cardano-cli address build \
    --payment-verification-key-file payment.vkey \
    --stake-verification-key-file stake.vkey \
    --out-file payment.addr \
    --mainnet

Any hint would help me a lot. Thank you

**Tags:** cardano-cli, address, cardano-address, public-key, signing-key-file
> **Comments:**
> **username_1**: If you want to find out how to create the root key from the mnemonic and how to derivate the keys and create the signing keys and addresses, take a look here: https://gist.github.com/cardano-apexpool/99784308812bdf7aa01446fa95f47fd2  

---

## 1 answers

### Answer by username_2 on 2022-12-13. Score: 1

You're mixing up between an [HD Wallet](https://input-output-hk.github.io/cardano-wallet/concepts/hierarchical-deterministic-wallets) and payment/stake address keys. HD Wallet is off-chain concept, creating root keys for which are described [here](https://input-output-hk.github.io/cardano-wallet/concepts/master-key-generation).

You'd essentially be able to derive root key of HD wallet using mnemonics and then derive the address by following the derivation paths, as explained [here](https://input-output-hk.github.io/cardano-wallet/concepts/address-derivation).

> **Comments:**
> **username_0**: Thanks very much. I did not know that. When I create address (addrxxxxx) in my Yoroi wallet, that follows the concept of HD Wallet? If so, my address is on-chain. So, I did not understand why "HD Wallet is off-chain concept"?  
> **username_2**: Wallet created in Yoroi is HD Wallet, yes. As regards why concept is off-chain, that's because protocol does not know about these wallets, it only knows about addresses - the cryptography explained above is what allows you to have multiple payment keys derived from a root key that's derived from mnemonics  
> **username_0**: Thanks, I understand. So, the tutorial above (https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses/ ) is also about creating addresses which do not follow the concept of HD wallet. Both doing the same thing (creating address), but why we need both of them?  
> **username_2**: That particular link is about creating keys/addresses indeed, you dont need both - it just depends on your use-case. It gives the option that's available from using cardano-cli, for HD wallets - you'd need to work with cardano-address/ cardano-wallet (if using CLI) or one of the libraries  
> **username_0**: Thanks, it helps me a lot  

---

