1

In the proposed package relay the requirement that a transaction must meet the minimum relay fee rate is relaxed (the fee rate can be zero by the new policy rules) as long as the package in its entirety meets the minimum relay fee rate.

What is the argument for not allowing zero satoshi outputs that are spent within a package too? A transaction with a zero satoshi output shouldn't be relayed on its own (it would bloat the UTXO set) but is there an argument that it should be allowed to be relayed in new policy rules if it is spent as part of a package? Apparently a spacechain design needs zero satoshi outputs to be spent within a package to be viable.

1

This is a draft answer paraphrasing Ruben Somsen at a Sydney Socratic in November 2021 (will add link to the transcript). He also discussed it on the bitcoin-dev mailing list.

Under no circumstances do we want the zero satoshi output to get mined without being spent in the same block as this contributes to UTXO set bloat as stated in the question.

There is at least one potential scenario where the zero satoshi output is left in the mempool.

Let's say Parent P1 (0 sats/vbyte) has 2 outputs, one is a zero satoshi output. Child C1 spends the zero satoshi output. P1 and C1 have a combined feerate of 5 sats/vbyte and enter the mempool first as a package. Child C2 spends the other output of P1 with a really high feerate and later enters the mempool. Network fees rise to 20 sats/vbyte and child C1 falls out of the mempool leaving the zero satoshi output unspent. Now P1 and C2 get mined and the zero satoshi output remains unspent.

You could maybe come up with a soft fork proposal (e.g. the soft fork could be that the zero satoshi output is only spendable in the same block otherwise it becomes unspendable and doesn’t enter the UTXO set) to prevent this but at that point there are probably better things you can do instead.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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