I have multiple times seen people argue that there is “no economic incentive” to switch from P2WPKH to P2TR. I know that the sum of input and output weight on P2WPKH and P2TR are very similar, but how does that actually work out in detail?
A P2WPKH input weighs 68 vB (assuming the worst-case with a high-r signature, -0.25 vB with a low-r signature) and a P2WPKH output weighs 31 vB for a total of 99 vB.
A P2TR input weighs 57.5 vB and the output weighs 43 vB for a total of 101.5 vB.
P2WPKH is cheaper when you pay yourself as often as you spend inputs
P2TR is about 1.5% more expensive across the lifecycle! Does that mean that I should continue using P2WPKH?
Yes, if almost all of your transactions have a single input and create change, you could indeed save a tiny portion of fees by using P2WPKH.
The below table shows the total weight of transactions under the assumption that most of them are single-input and creating change, created using either P2TR or P2WPKH outputs, and one of X transactions having a two inputs instead of one:
If only one out of seven transactions uses two inputs and you always create change, you’ll be able to save up to 1.5% by sticking to P2WPKH.
If 1 out of 6 transactions has at least two inputs or if you can sometimes avoid creating change, your total transaction weight would end up being lower if you use P2TR.
Most of the time, others are paying you, and usually the sender pays for the output (or you pay a flat fee to withdraw regardless of output type). Whenever others pay you, you only pay for the input. P2TR inputs are 15% cheaper than P2WPKH inputs (57.5 vB vs 68 vB). Yes, that means externalizing the cost on the sender, but the senders don’t get a say in how the recipient wants to get paid, and senders generally seem fine with paying for a P2WSH output (which costs the same as P2TR).
Whenever you use more inputs than you send outputs to yourself (e.g. when you make big transactions for batching payments, consolidation transactions, the payments you receive are smaller than the ones you make), or you’re able to avoid change altogether, it will be cheaper to use P2TR:
Hardly any wallet operator’s spending pattern would ever match the assumption that most transactions have only one input and create change. Let’s consider a few user scenarios.
If you regularly DCA, you will have many small-value UTXOs. You may occasionally sweep them into cold storage, or otherwise consolidate some. Then, or whenever else that you do create a transaction, it will likely have multiple inputs. If you buy bigger amounts at once, you may still hold your UTXOs for an unknown amount of time, and it is impossible to know now what the feerates will be like when you actually want to spend the UTXOs. If you time your UTXO management transactions to low feerates, you will probably create most of your self-sent outputs at lower feerates than the eventual spend. In either case, you will create fewer change outputs than inputs, and it benefits you to have lighter inputs whenever you do decide to spend.
Pay as often as you receive
It’s not clear who would have such a spending pattern, but let’s say you receive payments exactly as often as you make them and every payment creates change. In that case, only about half of the UTXOs you receive were sent to you by yourself. Clearly, in the long-term you will spend about twice as many inputs as you create change outputs. It will therefore be cheaper to use P2TR.
Consumer in a circular Bitcoin economy
An exception might be a user that lives in the Bitcoin circular economy. You get your salary in bitcoin once or twice a month and peel all your payments off from that over the rest of the time (let’s ignore the privacy implications for a moment). In this case, you might create change 6× as often as the number of times that you have a second input. Assuming this pattern, you’d be able to save up to 1.5% by using P2WPKH instead of P2TR.
If you offer a service or are a merchant, you will receive many smallish payments or deposits, and occasionally will make larger payments to cover costs or pay suppliers. Whenever you get paid, your customers will pay for your recipient output, but you only pay for the inputs. When you make your larger payments, you are likely to have two or more inputs. P2TR inputs are 15% cheaper than P2WPKH inputs (57.5 vB vs 68 vB). You may occasionally consolidate many low-value UTXOs at opportune mempool conditions. Generally, your count of inputs will heavily outweigh your count of change outputs. It follows that it’s cheaper for you to use P2TR.
If you give out P2TR deposit addresses, your customers pay for the larger outputs, and you have less cost when you spend those deposits. Most exchanges and brokerages batch withdrawals. Batched payment transactions will often have multiple inputs, but only require a single change output to facilitate many withdrawals. When you consolidate leftover small inputs, you do so at opportune moments with low feerates, and the many smaller inputs easily outweigh the creation of one heavier output on your consolidation transaction. When you do have to make a transaction at a high feerate occasionally, it serves you well that your inputs are cheaper. P2TR is definitely cheaper for you than P2WPKH.
Multi-wallet setup with spend-only wallet
Another exception would be, if you facilitate a high-volume of payments per a multi-wallet setup that includes a “spend-only wallet”. You would occasionally top up that wallet with large UTXOs from which you peel off payments. In that case, I could see how you might actually end up with creating change 6× as often as the number of times that you have a second input. In that case, you’d be able to save up to 1.5% by using P2WPKH instead of P2TR for the spend-only wallet. If you have a really big operation, that can use both P2WPKH and P2TR, you could possibly save a bit more by preferring P2TR inputs and P2WPKH change outputs at high feerates, while preferring P2WPKH inputs and P2TR change outputs at low feerates. If you do end up having more inputs than change outputs, you should have picked P2TR in the first place.
Conclusion: P2TR is cheaper in almost every scenario
While it is reasonable to wait with switching while especially exchanges are still dragging their feet to enable support for sending to P2TR outputs, just from a cost perspective, P2TR ends up being cheaper in almost every scenario. Additionally, if you need to create transactions at high feerates occasionally, the lower-weight inputs will save cost. Overall, you’d save up to 15.4% in transaction fees by using P2TR instead of P2WPKH. If you make vastly more small payments than you receive payments, you may save up to 1.5% by sticking to P2WPKH.