<blockquote>
<p>why does bitcoin need to use different types of addresses for making the different types of transactions?</p>
</blockquote>
<p>I think a fundamental reason is that the recipient (payee) has to be involved in specifying how they want to be paid, they have to be involved in the choice of transaction type. The address is really nothing other than the way in which the payee communicates their needs to the payer. It has to contain a specification that is sufficient for the payer to construct a locking script that the payee has the means to unlock. The address is not used in the Bitcoin network at all.</p>
<blockquote>
<p>Is'nt it possible to generate different transactions having a transaction type configuration while using one address?</p>
</blockquote>
<p>It is, but the address would be insufficient for a payee to be paid properly when the payer might choose a new transaction type that the payee's software did not yet support. As a payee you'd have to specify not just an address but a list of acceptable payment types too. The address is a concept that was supposed to do the whole of that job.</p>
<p>Again, it is worth remembering that addresses don't exist anywhere in the Bitcoin network protocols and don't exist in the blockchain.</p>

CC BY-SA 4.0
2022-10-03T13:32:52.243Z
2022-10-03T13:57:59.463Z
2022-10-03T13:57:59.463Z
RedGrittyBrick
<p>It helps prevent confusion and loss of funds.</p>
<p>Different <a href="https://en.bitcoin.it/wiki/List_of_address_prefixes" rel="nofollow noreferrer">version bytes are reserved for different uses</a> and result in different address types. For example version bytes 0x00 (mainnet address starts with 1), version bytes 0x6F (testnet address starts with m or n).</p>
<p>Imagine if both mainnet and testnet had the same version bytes. It would be very confusing.</p>
<p>See this answer for more reasons why we have different version bytes: <a href="https://bitcoin.stackexchange.com/a/552/26873">https://bitcoin.stackexchange.com/a/552/26873</a></p>
<p>As for whether it can be done with a single address type Legacy P2SH (addresses that start with a 3) was probably the closest to a single address type that handled multiple spend cases. It could behave like a P2WPKH via a P2SH script (P2SH-P2WPKH) as well as ability to do multisig, and even other non-standard scripts. But it was a temporary work around until native segwit addresses became the standard which have slight variations as well to distinguish output types.</p>

CC BY-SA 4.0
2022-10-02T03:50:59.110Z
2022-10-02T03:50:59.110Z
m1xolyd1an
<p>Because need for changes emerges overtime, and in a decentralized system that relies on consensus you need to insure if the changes are backwards-compatible to those who might not agree with. If they are, you can introduce them without the disagreeing's consent.</p>
<p>But, if they aren't backwards-compatible, you can't force them upgrade. You might choose to introduce the changes, but you'll be forked off the network, which isn't desirable in the end.</p>
<p>As for your question. We have multiple types of addresses, or to be precise, multiple scripts to spend bitcoin. We have P2PKH, P2PK, P2SH, P2WPKH, P2TR etc., because there were needs for that, say, P2PKH alone couldn't give us the solution by its own.</p>

CC BY-SA 4.0
2022-10-01T16:31:18.977Z
P2PK isn't a way around P2PKH
Mercedes
CC BY-SA 4.0
2022-10-01T16:34:28.093Z
Didn't say it is. Both P2PK and P2PKH were standard from the beginning. Unless I misunderstood you.
Angelo
CC BY-SA 4.0
2022-10-01T16:25:38.433Z
2022-10-02T13:28:02.003Z
2022-10-02T13:28:02.003Z
Angelo
<p>I don't understand that, why does bitcoin need to use different types of addresses for making the different types of transactions? Is'nt it possible to generate different transactions having a transaction type configuration while using one address?</p>

<transactions><segregated-witness>
Why doesn't Bitcoin use different types of transactions with only one type of address?
mjdimn
# Why doesn't Bitcoin use different types of transactions with only one type of address?

(Asked by: username_0 on 2022-10-01)

I don't understand that, why does bitcoin need to use different types of addresses for making the different types of transactions? Is'nt it possible to generate different transactions having a transaction type configuration while using one address?

**Tags:** transactions, segregated-witness


---

## 3 answers

### Answer by username_1 on 2022-10-03. Score: 2 | Accepted answer

> why does bitcoin need to use different types of addresses for making the different types of transactions?

I think a fundamental reason is that the recipient (payee) has to be involved in specifying how they want to be paid, they have to be involved in the choice of transaction type. The address is really nothing other than the way in which the payee communicates their needs to the payer. It has to contain a specification that is sufficient for the payer to construct a locking script that the payee has the means to unlock. The address is not used in the Bitcoin network at all.

> Is'nt it possible to generate different transactions having a transaction type configuration while using one address?

It is, but the address would be insufficient for a payee to be paid properly when the payer might choose a new transaction type that the payee's software did not yet support. As a payee you'd have to specify not just an address but a list of acceptable payment types too. The address is a concept that was supposed to do the whole of that job.

Again, it is worth remembering that addresses don't exist anywhere in the Bitcoin network protocols and don't exist in the blockchain.


---

### Answer by username_2 on 2022-10-02. Score: 1

It helps prevent confusion and loss of funds.

Different [version bytes are reserved for different uses](https://en.bitcoin.it/wiki/List_of_address_prefixes) and result in different address types. For example version bytes 0x00 (mainnet address starts with 1), version bytes 0x6F (testnet address starts with m or n).

Imagine if both mainnet and testnet had the same version bytes. It would be very confusing.

See this answer for more reasons why we have different version bytes: <https://bitcoin.stackexchange.com/a/552/26873>

As for whether it can be done with a single address type Legacy P2SH (addresses that start with a 3) was probably the closest to a single address type that handled multiple spend cases. It could behave like a P2WPKH via a P2SH script (P2SH-P2WPKH) as well as ability to do multisig, and even other non-standard scripts. But it was a temporary work around until native segwit addresses became the standard which have slight variations as well to distinguish output types.


---

### Answer by username_3 on 2022-10-01. Score: 0

Because need for changes emerges overtime, and in a decentralized system that relies on consensus you need to insure if the changes are backwards-compatible to those who might not agree with. If they are, you can introduce them without the disagreeing's consent.

But, if they aren't backwards-compatible, you can't force them upgrade. You might choose to introduce the changes, but you'll be forked off the network, which isn't desirable in the end.

As for your question. We have multiple types of addresses, or to be precise, multiple scripts to spend bitcoin. We have P2PKH, P2PK, P2SH, P2WPKH, P2TR etc., because there were needs for that, say, P2PKH alone couldn't give us the solution by its own.

> **Comments:**
> **username_4**: P2PK isn't a way around P2PKH  
> **username_3**: Didn't say it is. Both P2PK and P2PKH were standard from the beginning. Unless I misunderstood you.  

---

