Staging Core Releases and Litecoin Dust


On March 1, 2018, Litecoin Core v.0.15.1 was released.  One revision included in this update was that the minimum relay fee was lowered to 0.00001 LTC/kB but the minimum transaction fee stayed at 0.001 LTC/kB.  

To understand the difference between the two, read my previous article on Default Minimum Fees.  But the main take-a-ways from it are the following:

  1. The minimum transaction fee and the minimum relay fee were both previously at 0.001 LTC/kB.

  2. These are default settings that can be bypassed manually.

  3. The end goal is to drop Core's default minimum transaction fees to 0.0001 LTC/kB and its default minimum relay fees to 0.00001 LTC/kB.

Now the question you might have is, "Why didn't the new release of Core just drop the fees straight to 0.0001 LTC/kB and 0.00001 LTC/kB in v.0.15.1?"

Because if you tried to send a 0.0001 LTC/kB transaction, it would most likely not get picked up by the full nodes in the network.  It takes time for people to transition over to v.0.15.1 so there may not be enough nodes running the lowered 0.00001 LTC/kB minimum relay fee to push it through to the miners.  This will ultimately lead to your transaction getting ignored.  

However, you should fully expect the minimum transaction fee to be lowered to 0.0001 LTC/kB in the next Core release after enough time has passed for people in the Litecoin network to upgrade their nodes.  Now when you try to send a transaction with a fee lower than 0.001 LTC/kB, it will  get picked up because there will be nodes relaying transactions with fees as low as 0.00001 LTC/kB.

By staging this process with step-releases, Litecoin developers hope to smoothly transition the network to lower fees.

Dust Transactions

While we're on the topic of cheaper fees, now would be as good as time as any to talk about "Dust."  Dust is generally understood as a small amount of Litecoin in an address that wouldn't be worth spending due to the transaction fee.  Dust is subjective because each node can use their own formulas for dust, so it's difficult to provide a specific rule.  But here's a general definition provided by Litecoin Core:

// "Dust" is defined in terms of CTransaction::minRelayTxFee,
// which has units litoshis-per-kilobyte.
// If you'd pay more than 1/3 in fees
// to spend something, then we consider it dust.
// A typical txout is 34 bytes big, and will
// need a CTxIn of at least 148 bytes to spend:
// so dust is a txout less than 546 litoshis // with default minRelayTxFee.

So how Exactly do you calculate the Dust Transaction fee?

Let's use the definition above for reference:

  • Dust = (smallest average output size + smallest average input size) * 3(MinRelayFee)

  • Dust = (0.034 kB + 0.148 kB) * 3 (0.001 LTC)

  • Dust = (0.182 kB) * (0.003 LTC)

  • Dust = 0.000546 LTC

Therefore if you try to send less than 0.000546 LTC, Litecoin Core will penalize you by adding 3x's the fee of your transaction (0.001 LTC/kB) and then broadcasting it.  In this way, Litecoin Core hopes to disincentivize spamming of the Litecoin network.

But wait!  The new minimum relay fee was at 0.00001 LTC!  Why did you use 0.001 LTC?

Because even though the minimum relay fee was moved to 0.00001 LTC/kB, minimum transaction fees are still 0.0001 LTC/kB. That means users can’t create a transaction under 5460 litoshis if they’re using Litecoin Core even though a transaction of 546 litoshis is capable of being relayed across the network.

A Few caveats

  1. People can actually bypass the dust transaction fee by broadcasting it manually. However, it won't get included in the mempool of full nodes because it won't pass the CFeeRate check.

  2. But miners can include their own dust transactions into the Litecoin blockchain if they successfully block because the dust relay fee can be bypassed.

  3. For SegWit transactions, dust is even smaller:

    • Dust = (smallest average output size + smallest average input size) * 3(MinRelayFee)

    • Dust = (0.031 kB + 0.067 kB) * 3 (0.001 LTC)

    • Dust = (0.098 kB) * (0.003 LTC)

    • Dust = 0.000294 LTC



*Special thanks to Thrasher and Losh11 for their insights on "Dust."