<p>This is paraphrasing Ruben Somsen at a <a href="https://btctranscripts.com/sydney-bitcoin-meetup/2021-11-02-socratic-seminar/#zero-satoshi-outputs-in-packages" rel="nofollow noreferrer">Sydney Socratic</a> in November 2021. He also discussed it on the bitcoin-dev <a href="https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-December/019637.html" rel="nofollow noreferrer">mailing list</a>.</p>
<p>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.</p>
<p>There is at least one potential scenario where the zero satoshi output is left in the mempool.</p>
<p>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.</p>
<p>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.</p>

CC BY-SA 4.0
2022-01-09T13:21:29.117Z
2022-07-01T15:07:13.567Z
2022-07-01T15:07:13.567Z
Michael Folkson
<p>In the proposed <a href="https://gist.github.com/glozow/dc4e9d5c5b14ade7cdfac40f43adb18a" rel="nofollow noreferrer">package relay</a> 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.</p>
<p>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 <a href="https://bitcoin.stackexchange.com/questions/100537/what-is-spacechain">spacechain</a> design needs zero satoshi outputs to be spent within a package to be viable.</p>

<bitcoin-core-development><mempool><p2p><package-relay>
If we allow zero fee transactions within new policy rules for package relay why not also allow zero satoshi outputs?
Michael Folkson
# If we allow zero fee transactions within new policy rules for package relay why not also allow zero satoshi outputs?

(Asked by: username_0 on 2022-01-09)

In the proposed [package relay](https://gist.github.com/glozow/dc4e9d5c5b14ade7cdfac40f43adb18a) 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](https://bitcoin.stackexchange.com/questions/100537/what-is-spacechain) design needs zero satoshi outputs to be spent within a package to be viable.

**Tags:** bitcoin-core-development, mempool, p2p, package-relay


---

## 1 answers

### Answer by username_0 on 2022-01-09. Score: 1 | Accepted answer

This is paraphrasing Ruben Somsen at a [Sydney Socratic](https://btctranscripts.com/sydney-bitcoin-meetup/2021-11-02-socratic-seminar/#zero-satoshi-outputs-in-packages) in November 2021. He also discussed it on the bitcoin-dev [mailing list](https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-December/019637.html).

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.


---

