We know Bitcoin has at least four completely different address formats. They are legacy format, bech32 script, segwit. I know each address format means different transaction types, for example pay to public key hash, pay to script, or segwit payment.

But my question is why do we not just use one type of addresses, such as legacy p2pkh?

In contrast, Ethereum and other blockchains have only one address format. Do these blockchains lack some function that must introduce new address formats?

Or another question, if we only use the original bitcoin address format, aka. the legacy p2pkh. Is it possible to implement other formats' functions?

1 Answer 1


why not we just use one kind of address type, such as legacy p2pkh?

Because other address types serve different purposes that cannot be achieved with P2PKH.

For example multisig addresses can either provide greater security against certain types of threat or can involve multiple parties in some scheme.

Improved types like P2SH and P2WSH provide better privacy and provide for scaling the Bitcoin network - providing more capacity for transactions. This cannot be achieved using P2PKH.

if we only use the original bitcoin address format, aka. the legacy p2pkh. Is it possible to implement other formats' functions?

Because we use the word "address", people sometimes misunderstand the nature and purpose of a Bitcoin address. It is not a designator of a recipient.

An address is a recipe for a specific type of locking script, it is a complete recipe that contains all the information needed by a payer to construct a locking script that pays the recipient using a script-type specified by the recipient in the address.

If an address could be used with multiple different locking scripts, then in addition to their address, the recipient would have to provide a list of script-types acceptable to them and their wallet software. The address was intended to do the whole of this job.

This is why many people feel that "Bitcoin invoice reference" might have been a better name than "Bitcoin address".

Remember: Bitcoin addresses do not exist in the Bitcoin network protocols and are not used in the Bitcoin network. Addresses, as such, do not appear in the Bitcoin blockchain

Bitcoin addresses are a convenience but not a necessity. The Bitcoin network would work perfectly well if nobody ever used addresses but used some other method of communicating desired locking scripts in QR barcodes etc.

The reason I make this point is not because I want to get rid of addresses but because I think people will be better off to let go of some of the irrelevant semantic baggage associated with the word address from its everyday non-Bitcoin usage.

  • As an addition, I would like to say that the reason why Bitcoin has more "addresses" comes from the fact that in Ethereum it is possible to achieve (literally to program) all additional functionalities through EVM and the turing-complete language, so it is not necessary to introduce new "addresses" for new functionality (like in Bitcoin).
    – LeaBit
    Apr 25 at 19:25
  • 2
    @LeaBit That's true to some extent, but most new address types didn't actually add any functionality (arguably, only the CLTV and CSV script extensions can be seen as actual new features, and they didn't need new address formats). All the others were advances in efficiency/encoding/security/limits that just required a new script system/structure altogether, rather than just an addition of features (which would typically just involve new opcodes, available in all scripts, and thus usable through existing address types). Apr 26 at 14:04
  • @PieterWuille Nice!
    – LeaBit
    Apr 26 at 20:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.