Address Types
Address Generations
There are three generations of Bitcoin addresses:
- Classic addresses (Generation 1)
- SegWit addresses (Generation 2)
- Taproot addresses (Generation 3)
SegWit addresses are currently the standard addresses and those with the widest adoption, so they should be used by default.
Taproot addresses are the newest generation of addresses. They are somewhat experimental and have the greatest benefits and flexibility, so they should be used if you'd like to take advantage of the most cutting edge features of Bitcoin.
Classic addresses are the oldest generation of addresses, and should only be used for backwards compatibility.
Address Constructions
There are several major constructions of Bitcoin addresses:
- Public-Key-Hash Addresses
- Script-Hash Addresses
- Taproot Public-Key Addresses
- Taproot Script-Tree Addresses
Public-key-hash addresses are the simplest type of addresses, and authorize a single key to spend money stored in the address.
Script-hash addresses, meanwhile, define a "script" that specifies conditions under which the money stored in the address can be spent. Multi-key addresses (or multisig addresses) are a special case of script-hash addresses, where the script authorizes multiple keys to withdraw from the address and requires one or more keys to withdraw. Multi-key addresses are often refered to as M-of-N addresses because they require M keys out of N keys to spend funds. For example, a 2-of-3 address would require two of three keys for spending. Other types of script-hash addresses can involve time locks, hash locks, or storing data.
Taproot Public-Key Addresses are an upgrade to public-key-hash addresses that is enabled by Taproot. Like public-key-hash addresses, they authorize a single key to spend money stored in the address. However, they also provide more privacy than public-key-hash addresses because little-to-no information is leaked about the address's security policy.
Taproot Script-Tree Addresses are the most versatile and advanced form of address that takes full advantage of the features of Taproot. Script-Tree Addresses allow the address creator to specify multiple spend conditions that can be met in order to withdraw funds. Each of these spend conditions can authorize a single key, authorize multiple keys, or have more complex conditions that need to be met.