Reference: Address Types
Bitcoin Address Types
The choice of address type has a very significant impact on Bitcoin transaction fees. This page compares and contrasts the different choices you have.
Address Types Costs
Spending from an address incurs a fee that depends on the address type.
These estimates are based on a fee rate of around 17 Satoshi/vByte.
Type | Name | Support | Usage Costs (sats) |
---|---|---|---|
p2sh | Legacy | All wallets | 5,100 |
p2shP2wsh | Wrapped Segwit | All wallets | 2,400 |
p2wsh | Native Segwit | Nearly all wallets | 1,800 |
p2trMusig2 | Taproot | Most modern wallets | 1,000 |
Receive Address Type
These are the addresses you generate and hand out to other parties when you want to receive a deposit. Every time you are spending these deposits, you need to pay a fee depending on the address type you chose.
Note that all wallets support sending every address type. When you hand somebody an address that cannot be understood by their wallet, you can simply generate a new address with a different address type.
Default Setting
We are currently defaulting to address type p2wsh to ensure maximum compatibility.
Fee Optimized Setting
With p2trMusig2
you can save around 40% per usage compared to the p2wsh
default.
Pass chain: 40
in generateAddress
to generate a p2trMusig2
address.
Be aware that older wallets may not support sending to this address type. In that case you can ask the sender to update their wallet software or simply generate another address with the default address type.
Privacy
The address type p2trMusig2
enhances privacy because its on-chain transactions appear as single-key and single-signature spends.
Change Address Type
These addresses are only used internally by BitGo. The available choices are the same as for the receiving address.
Default Setting
We are currently defaulting to address type p2wsh
for change addresses. This is done out of an abundance of caution, since customers may be using older SDK versions that are not compatible with p2trMusig2
yet.
Recommended Setting
If you use your wallet from the browser exclusively go to “Update Change Address Type”, in the wallet Settings tab. Choose the option “Taproot Keypath (P2TR-MUSIG2)”.
If you use your wallet from the SDK, and exclusively use the browser and modern SDKs, pass changeAddressType: “p2trMusig2”
in your build parameters.
Other UTXO Coins
Litecoin, Bitcoin Cash and other UTXO coins also support a subset of the address types. However, since fees are typically less of a concern, the choice of address type is less relevant.
P2SH | P2SH-P2WSH | P2WSH | P2TR (MuSig2) | |
---|---|---|---|---|
BTC | ✅ | ✅ | ✅ | ✅ |
BTG | ✅ | ✅ | ✅ | ❌ |
LTC | ✅ | ✅ | ✅ | ❌ |
DOGE | ✅ | ❌ | ❌ | ❌ |
BCH | ✅ | ❌ | ❌ | ❌ |
ZEC | ✅ | ❌ | ❌ | ❌ |
DASH | ✅ | ❌ | ❌ | ❌ |
Receive Address Type Details
Type | Chain Code | Encoding | Prefix (mainnet) | Prefix (testnet) | Privacy | Signing Method |
---|---|---|---|---|---|---|
p2sh | 0 | Base58 | 3 | 2 | Low | Signature |
p2shP2wsh | 10 | Base58 | 3 | 2 | Intermediate | Signature |
p2wsh | 20 | Bech32 | bc1q | tb1q | Higher | Signature |
p2trMusig2 | 40 | Bech32 | bc1p | tb1p | Highest | Signature + Nonce |
The address type p2tr
with chain code 30
is deprecated.
The chain code for an internal address with the same address type can be obtained by adding a 1
: e.g. internal p2trMusig2
is chain 41
.