Ephemeral Dust (tx fees and policy)

https://github.com/bitcoin/bitcoin/pull/30239

Host: tdb3  -  PR author: instagibbs

Notes

  • Bitcoin Core considers a transaction output to be dust when its value is lower than the cost of creating and spending it.

  • Ephemeral dust is a new concept that allows a single dust output in a transaction, provided the transaction is zero fee. In order to spend any unconfirmed outputs from this transaction, the spender must also spend this dust in addition to any other outputs.

  • Ephemeral dust enables additional options for creating and using dust outputs. This can be useful with types of presigned transactions, chains of transactions, keyed and keyless anchors: allowing zero usage of input funds while still enabling CPFP.

  • Recommended reading:

Questions

  1. Did you review the PR? Concept ACK, approach ACK, tested ACK, or NACK? What was your review approach?

  2. Where in code is it determined if an amount is dust?

  3. Is dust restricted by consensus? Policy? Both?

  4. How can dust be problematic?

  5. Why is the term ephemeral significant? What are the proposed rules specific to ephemeral dust?

  6. Why is it important to impose a fee restriction? Which specific vulnerabilities can you imagine without the fee restriction? Can you think of (in your view) positive use cases that are not possible because of the fee restriction?

  7. How are 1P1C relay and TRUC transactions relevant to ephemeral dust?

  8. What could happen if restrictions on the the child transaction were not in place?

  9. Can a node operator change the amounts considered to be dust? If so, how? How are ephemeral dust rules enforced in this case? What would happen if the node tries to broadcast a transaction after adjusting dust amounts?

  10. Could a miner choose to mine transactions containing dust? Is this a concern? What could be done to address the concerns, if any?

  11. Which types of tests were created for the PR? What is the purpose of each type of test? Did you run the tests locally? If so, which ones? Which tests did you not run, and why?

  12. Do the tests introduced exercise all of the code changes? How might you find out? Can you think of test scenarios and types of tests that could enhance testing?

Bonus questions

  1. Why would a modified fee be relevant to ephemeral dust?