<p>Generally, it's one address per keypair.  This is even true in deterministic wallets where you generate multiple keypairs based on a single seed.  Remember that there are still multiple keypairs in this scenario.  A private key is generated randomly (or deterministically from a seed), and then a public key is derived from it.  After that, an address is derived from the public key.</p>

<p>However, it's not quite that simple.  There are <a href="https://bitcoin.org/en/glossary/compressed-public-key" rel="nofollow noreferrer">two different representations of elliptic curve public keys</a> that bitcoin supports, meaning that you can generate two different address from the same private key...both of which can be claimed with that private key.  Wallets generally only use a single public key format (usually compressed), so within a wallet, there's one private key to one public key to one address.</p>

<p>Also, there are different types of addresses (pay-to-public-key-hash, pay-to-script-hash, mainnet, testnet, etc...), which each could use the same public key to generate different addresses based on their <a href="https://en.bitcoin.it/wiki/List_of_address_prefixes" rel="nofollow noreferrer">corresponding prefix</a>.  This is why pay-to-public-key-hash addresses begin with '1' and pay-to-script-hash addresses begin with '3'.  To my knowledge, no wallets will generate two types of addresses from the same public key.  That would be similar to re-using addresses, and is generally considered to be a bad practice.</p>

CC BY-SA 3.0
2017-02-03T20:51:39.690Z
THANK YOU SO MUCH!!!!! I have another question thought, I read about this:                                                                                                               To clarify, address A has 1 btc. You want to send 0.5 btc to some address B.

What happens is, the balance of address A is fully spent into

B      (0.5)
C      (0.4999)
fee    (0.0001) 
total  (1) < --- original balance. fully spent
C is your change address, and when you spend your coins again you will spend from C and not from A.
user45541
CC BY-SA 3.0
2017-02-03T20:54:48.383Z
What is that? Someone else told me you would just "send" the exact number of BTC and that's all. So if you use an online wallet, it means that at each transaction, a new private/public key will be created to received the change? Thank you :)
user45541
CC BY-SA 3.0
2017-02-03T21:00:11.617Z
Yes, usually once A has been spent, then it will never be used again.  However, it's possible to craft a transaction from A to B where you use A as the change address.  This is discouraged, however, and no wallets I'm aware of will do this by default.  This is true for both web wallets, and phone/desktop wallets.  When you are using a wallet, you shouldn't be concerned with which addresses are being used to make which payments.  That's the wallet's job to keep track of, not the users.
Jestin
CC BY-SA 3.0
2017-02-03T21:14:44.467Z
THANKS! bottom line, a wise man would use an online wallet to buy BTC, sell, Trade, however, store most of his BTC (if he wants) on a paper wallet? which he can still use when he needs it? :) (but if he does use it, a new paper wallet have to be created since the last one has been swept)
user45541
CC BY-SA 3.0
2017-02-03T21:17:22.620Z
Most of these questions already have great answers on this site.  I recommend you browse through http://bitcoin.stackexchange.com/questions?sort=frequent and http://bitcoin.stackexchange.com/questions?sort=votes to get a better perspective on things.
Jestin
CC BY-SA 3.0
2017-02-04T15:35:40.307Z
Ok thanks! Just a last question to be 100% sure, It means that at each transaction "one private key to one public key to one address" is created to receive the change right?
user45541
CC BY-SA 3.0
2017-02-04T17:26:01.243Z
Yes, generally.
Jestin
CC BY-SA 3.0
2017-02-03T20:27:39.437Z
2017-02-03T20:27:39.437Z
Jestin
<p>does a generated private key, provide 1 public key? I mean, the pair is generated practically at once?
Then this only public key is used to create multiples “adresses” which will be used to make transactions? </p>

<p>Thank you a lot.</p>

<private-key><public-key>
What is a Key pair? & relationship with adresses?
user45541
# What is a Key pair? & relationship with adresses?

(Asked by: username_0 on 2017-02-03)

does a generated private key, provide 1 public key? I mean, the pair is generated practically at once?
Then this only public key is used to create multiples “adresses” which will be used to make transactions?

Thank you a lot.

**Tags:** private-key, public-key


---

## 1 answers

### Answer by username_1 on 2017-02-03. Score: 2 | Accepted answer

Generally, it's one address per keypair. This is even true in deterministic wallets where you generate multiple keypairs based on a single seed. Remember that there are still multiple keypairs in this scenario. A private key is generated randomly (or deterministically from a seed), and then a public key is derived from it. After that, an address is derived from the public key.

However, it's not quite that simple. There are [two different representations of elliptic curve public keys](https://bitcoin.org/en/glossary/compressed-public-key) that bitcoin supports, meaning that you can generate two different address from the same private key...both of which can be claimed with that private key. Wallets generally only use a single public key format (usually compressed), so within a wallet, there's one private key to one public key to one address.

Also, there are different types of addresses (pay-to-public-key-hash, pay-to-script-hash, mainnet, testnet, etc...), which each could use the same public key to generate different addresses based on their [corresponding prefix](https://en.bitcoin.it/wiki/List_of_address_prefixes). This is why pay-to-public-key-hash addresses begin with '1' and pay-to-script-hash addresses begin with '3'. To my knowledge, no wallets will generate two types of addresses from the same public key. That would be similar to re-using addresses, and is generally considered to be a bad practice.

> **Comments:**
> **username_0**: THANK YOU SO MUCH!!!!! I have another question thought, I read about this:                                                                                                               To clarify, address A has 1 btc. You want to send 0.5 btc to some address B.  What happens is, the balance of address A is fully spent into  B      (0.5) C      (0.4999) fee    (0.0001)  total  (1) < --- original balance. fully spent C is your change address, and when you spend your coins again you will spend from C and not from A.  
> **username_0**: What is that? Someone else told me you would just "send" the exact number of BTC and that's all. So if you use an online wallet, it means that at each transaction, a new private/public key will be created to received the change? Thank you :)  
> **username_1**: Yes, usually once A has been spent, then it will never be used again.  However, it's possible to craft a transaction from A to B where you use A as the change address.  This is discouraged, however, and no wallets I'm aware of will do this by default.  This is true for both web wallets, and phone/desktop wallets.  When you are using a wallet, you shouldn't be concerned with which addresses are being used to make which payments.  That's the wallet's job to keep track of, not the users.  
> **username_0**: THANKS! bottom line, a wise man would use an online wallet to buy BTC, sell, Trade, however, store most of his BTC (if he wants) on a paper wallet? which he can still use when he needs it? :) (but if he does use it, a new paper wallet have to be created since the last one has been swept)  
> **username_1**: Most of these questions already have great answers on this site.  I recommend you browse through http://bitcoin.stackexchange.com/questions?sort=frequent and http://bitcoin.stackexchange.com/questions?sort=votes to get a better perspective on things.  
> **username_0**: Ok thanks! Just a last question to be 100% sure, It means that at each transaction "one private key to one public key to one address" is created to receive the change right?  
> **username_1**: Yes, generally.  

---

