Let's say I have a wallet with a non-native segwit address (prefixed with 3- like multisig).

Can I send my utxos from this address to a native segwit (bech32) address?


The wallet needs to be able to decode a bech32 address and construct the appropriate native witness output when sending funds.

Given that your (hypothetical) wallet can spend P2SH(witness) outputs already, it is likely it can or will soon support native bech32 addresses, but there is no guarantee that the latter must be supported given the first.

  • This hypothetical wallet does not need to support any type of address to be able to send to them, it simply will not be able to benefit from the improvements of later protocols. Basically, you can send a UTXO that came from any address type to any other address type. Whether or not you can benefit from improvements like better transaction fees, change address, or batching—or if the sendTo address is even considered valid—is all dependent on your wallet client. Dec 17 '20 at 7:25

All script types are compatible

This somewhat depends on the wallet client, as there is nothing in the bitcoin core code that prevents any address type from sending to any other address type. The type of address/UTXO is determined by how it was sent. Coins that were at one point transacted between SegWit addresses, but made their way to a legacy address, will create a legacy UTXO.

Common Scenario

When you receive bitcoin (UTXO), it is from one of the protocols. Your SegWit address can receive coins from a legacy address; but this does not "upgrade" the coins to benefit from SegWit improvements, they are still legacy "coins". Mixed script transactions are a feature that enables you to spend UTXOs in a single transaction that may have come from different script types.

Transaction Example:

  • You receive 0.5 BTC to a SegWit address from a legacy address.
  • You already have 0.5 BTC that were sent using SegWit.
  • You send a 1 BTC transaction, which uses both the legacy and SegWit UTXOs, from a SegWit enabled wallet. The 0.5 BTC that was already SegWit will take advantage of the transaction fee updates, etc. The legacy UTXO will not.
  • The resulting 1 BTC in the receiving address is a SegWit UTXO, and any further movement of the coins will benefit from SegWit improvements, unless at some point they are sent back to a legacy address, where they again become "legacy coins"

So yes, you can send UTXOs of any protocol type to any other, but your wallet client must be able to recognize the address protocol in order to send to it. Even if you are using a wallet client with only legacy addresses and no SegWit support, the source code is backwards compatible, you will receive the coins, but when spending the UTXO, you cannot take advantage of the SegWit improvements.

  • If you truly didn't find this helpful, feel free to downvote, it's a useful feature. However, I can not provide more accurate answers without an explanation. An accompanying comment would be greatly appreciated :) Dec 17 '20 at 10:57

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