<p>Multi address wallets are usually called Hierarchically Deterministic (HD) wallets and are defined by the <a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" rel="noreferrer">BIP44</a> standard.</p>
<p>In Cardano, we do extend BIP44 in <a href="https://github.com/cardano-foundation/CIPs/blob/master/CIP-1852/CIP-1852.md" rel="noreferrer">CIP1852</a> by adding staking key capabilities, but this is not your use case.</p>
<p>To derive wallet addresses for a single wallet, it is easiest to use an existing library that can do this for you, as for example the <a href="https://github.com/Emurgo/cardano-serialization-lib" rel="noreferrer">cardano-seralization-lib</a> by Emurgo.</p>
<p>Have a look at <a href="https://docs.cardano.org/projects/cardano-serialization-lib/en/latest/getting-started/generating-keys.html" rel="noreferrer">their documentation</a>, but this easy snippet you will show you how to derivate the 10th address of your wallet:</p>
<pre><code>function harden(num: number): number {
  return 0x80000000 + num;
}


const rootKey = CardanoWasm.BIP32PrivateKey.from_bech32(&quot;xprv17qx9vxm6060qjn5fgazfue9nwyf448w7upk60c3epln82vumg9r9kxzsud9uv5rfscxp382j2aku254zj3qfx9fx39t6hjwtmwq85uunsd8x0st3j66lzf5yn30hwq5n75zeuplepx8vxc502txx09ygjgx06n0p&quot;);
const accountKey = rootKey
  .derive(harden(1852)) // purpose
  .derive(harden(1815)) // coin type
  .derive(harden(0)); // account #0

const utxoPubKey = accountKey
  .derive(0) // external
  .derive(9) // &lt;- here is the index of your address, cycle thought this number to generate more of it
  .to_public();
</code></pre>

CC BY-SA 4.0
2021-04-27T19:11:31.390Z
2021-04-27T19:11:31.390Z
Marek Mahut - StakeNuts
<p>We wish to generate large numbers of receive addresses for a single wallet. These addresses will let us identify who is sending us Cardano, or other native assets. Can someone explain how one goes about generating such addresses?</p>

CC BY-SA 4.0
2021-04-27T19:06:55.733Z
Have a look at this : https://github.com/uniVocity/cardano-tutorials/blob/master/cardano-addresses.md
Ghost
<wallet>
How does one create receive addresses for a wallet programatically?
# How does one create receive addresses for a wallet programatically?

(Asked by: username_0 on 2021-04-27)

We wish to generate large numbers of receive addresses for a single wallet. These addresses will let us identify who is sending us Cardano, or other native assets. Can someone explain how one goes about generating such addresses?

**Tags:** wallet
> **Comments:**
> **username_1**: Have a look at this : https://github.com/uniVocity/cardano-tutorials/blob/master/cardano-addresses.md  

---

## 1 answers

### Answer by username_2 on 2021-04-27. Score: 10 | Accepted answer

Multi address wallets are usually called Hierarchically Deterministic (HD) wallets and are defined by the BIP44 standard.
In Cardano, we do extend BIP44 in CIP1852 by adding staking key capabilities, but this is not your use case.
To derive wallet addresses for a single wallet, it is easiest to use an existing library that can do this for you, as for example the cardano-seralization-lib by Emurgo.
Have a look at their documentation, but this easy snippet you will show you how to derivate the 10th address of your wallet:
function harden(num: number): number {
  return 0x80000000 + num;
}


const rootKey = CardanoWasm.BIP32PrivateKey.from_bech32("xprv17qx9vxm6060qjn5fgazfue9nwyf448w7upk60c3epln82vumg9r9kxzsud9uv5rfscxp382j2aku254zj3qfx9fx39t6hjwtmwq85uunsd8x0st3j66lzf5yn30hwq5n75zeuplepx8vxc502txx09ygjgx06n0p");
const accountKey = rootKey
  .derive(harden(1852)) // purpose
  .derive(harden(1815)) // coin type
  .derive(harden(0)); // account #0

const utxoPubKey = accountKey
  .derive(0) // external
  .derive(9) // <- here is the index of your address, cycle thought this number to generate more of it
  .to_public();


---

