Bitcoin Education

The Different Types of Bitcoin Addresses

Bitcoin addresses are a single-use tokens used for identifying the receiving end of a transaction. They are neither wallets nor accounts and do not carry balances per se as the Bitcoin blockchain keeps track of stateless UTXOs (Unspent Transaction Outputs) that form digital ownership chains of transaction history. Unlike, for example, the Ethereum chain which implements an accounts-and-balances model, where each address is a stateful object (whether a smart contract or a wallet, defined by the values of its state variables) on the ledger. In the Bitcoin ledger, a set of UTXOs are used as inputs and consumed in transactions in order to produce a new set of UTXOs.

Unspent Transaction Outputs (UTXOs).

Bitcoin addresses only receive coins and there's no sending "from" an address (transactions do not have a source "from" address). A new, unique receiving address should be used/generated for each new transaction for safety and privacy reasons — this is usually handled in the back-end of the software or service used (for example, by keeping a pool of new, valid addresses to use in new transactions). In other words, a Bitcoin address functions more like an invoice of sorts.

Bitcoin addresses generally derive from the public part of a public/private key pair and are 26-35 character long alphanumeric string identifiers (excluding uppercase "O", the number "0", uppercase "I" and lowercase "l" to avoid confusing those and prevent visual ambiguity) which designate ownership over a set of UTXOs on the ledger.

Bitcoin addresses begin with either 1, 3 or bc1 depending on which of the three address formats are being used:

  • P2PKH address
  • P2SH ("pay to script hash") address
  • Bech32 (Segwit standard)

The first type (P2PKH) is the universally accepted standard which is supported everywhere. This is the type of address which is prefixed with 1. For example: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 or 1KNhK64iMPCyt8BwLWnXJqEopmawhMDjvZ.

The second format, the "pay to script hash" (P2SH) address which starts with 3 was standardized with BIP 16 and allows for transactions to be sent to a script hash instead of a public key hash. To spend the received bitcoins the recipient must provide the script which matches that hash and have it  evaluate to true. P2SH addresses are secured in various ways using such conditional redeem scripts — they may require a password or the signature of more than one person for the coins to be further spent (or something else entirely). Multi-sig addresses are of this type as well.

A P2PKH address as shown on the blockchain explorer at blockchain.info.

P2SH transactions were first introduced in April 2012 and 342ftSRCvFHfCeFFBuz4xwbeqnDw6BGUey is an address notable for being the first P2SH-compatible one receiving bitcoins on the production network. BIP 13 specifies the P2SH address format in more detail.

The third, newer-style Bech32 type, prefixed with bc1 is modified to be interoperable across wallets and platforms, while facilitating faster confirmation times and cheaper transaction fees. This is the segwit address format specified by BIP 0173. Segwit (or Segregated Witness) itself is an implemented soft fork modification (a backwards-compatible protocol change) to the Bitcoin protocol and more specifically — to the Bitcoin transaction format, such that it would prevent non-intentional transaction malleability, while helping mitigate block size limitations and reducing confirmation times. Bech32 addresses are the standard for native Segwit output addresses using it. Example: bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq.

Bech32 adoption is tracked here. Most currently software wallets (hot wallets) support sending to Bech32 addresses and with a few exceptions, also have support for creating Bech32 addresses and receiving to them. Same with hardware wallets (cold storage wallets), but there's a lot less support for  segwit-type addresses when it comes to web-based services and, understandably, exchanges. Among Bitcoin ATMs (a slightly misleading term for an electronic Bitcoin exchanger), only General Bytes' supports both sending and receiving and allows for generating Bech32 addresses.

Also, importantly, the community activated SegWit soft fork in 2017 is what enables and makes possible second-layer solutions like Lightning Network which build upon its logic for opening bidirectional payment channels (as a sort of a rudimentary smart contract). SegWit essentially splits transactions in two components, removing signature data ("witness") from the transaction input (which may take up to 60-65% of a block) and appending it as a separate structure elsewhere.

Lastly, there are also the testnet-type addresses. The testnet (currently testnet3) is a parallel running blockchain used for testing purposes — coins on that ledger do not have actual value and can be acquired using testnet faucets. Testnet addresses are prefixed with either m or n.

Overall, all three types of addresses are widely adopted, but there are few exceptions where some  restrictions may apply — for instance, some exchanges such as Yobit also do not support the second, P2SH types of Bitcoin address. As for HardBlock, it fully supports all three categories of Bitcoin addresses.