Published on: 2021-04-26T15:08:18+00:00
Upon closer inspection, it appears that the Lightning Network specification already includes a statement advising against counting dust HTLCs towards the remote's max_accepted_htlcs limit in the remote commitment transaction. This information was brought to light after Eugene Siegel raised a concern regarding the possibility of lowering the feerate. While this issue does seem to be related to the spec, it is important to note that there is currently no in-protocol method for changing the dust limit, rendering the aforementioned concern irrelevant. It has been acknowledged that the same mistake had been made in the past and will be rectified moving forward.The discussion on the Lightning-dev mailing list revolves around a proposal by Eugene Siegel to increase the capital requirement of channel-jamming attacks. He suggests that in a commitment transaction, dust HTLC outputs should be trimmed as they do not appear in the commit tx and thus their exclusion from the 483 HTLC limit would not affect non-dust throughput of the channel. Matt Corallo clarifies that update_fee messages do not change the dust limit for outputs in a channel, although he has suggested such a change. Bastien Teinturier points out that dust HTLCs count towards the 483 HTLC limit because if they are not counted and one exceeds the limit, it becomes impossible to lower the fee anymore, which may result in more than 483 HTLC outputs in the commitment and open the door to other kinds of attacks. Despite this, Eugene's proposal could still make sense as dust HTLCs will never appear in the commit tx regardless of subsequent update_fees. Overall, the proposal is a free mitigation without any downsides (besides code-writing), and can raise the capital requirement of channel-jamming so that each HTLC must be non-dust, rather than spamming 1 sat payments.In a recent Lightning-dev mailing list, Eugene Siegel proposed a simple mitigation to increase the capital requirement of channel-jamming attacks. The proposal is to prevent an unsophisticated attacker with low capital from jamming a target channel. In the commitment transaction, dust HTLC outputs are trimmed, and the reason for the 483 HTLC limit each side has in the spec is to prevent commitment tx's from growing unreasonably large. The proposal suggests that if dust HTLCs are not included in the calculation, since they are not on the commitment tx, 483 (x2) non-dust HTLCs can still be included on the commitment tx. There could be a configurable limit on the number of outstanding dust HTLCs, but the point is that it doesn't affect the non-dust throughput of the channel. Bastien TEINTURIER responded to this proposal stating that dust HTLCs count for the 483 HTLC limit due to `update_fee`. If they are not counted and the limit is exceeded, the fee cannot be lowered anymore. This can lead to more than 483 HTLC outputs in the commitment, opening the door to other kinds of attacks. While this is the first issue that comes to mind, there may be other drawbacks if the proposal is scrutinized enough with an attacker's mindset.Eugene Siegel's proposal aims to raise the capital requirement of channel-jamming so that each HTLC must be non-dust, rather than spamming 1 sat payments. He believes it is a free mitigation without any downsides, besides code-writing. He asked for others' thoughts on the proposal.In an email exchange between Eugene Siegel and Bastien TEINTURIER, a proposal was made to increase the capital requirement of channel-jamming attacks. The proposal suggested that dust HTLC outputs be trimmed in a commitment transaction to prevent an unsophisticated attacker with low capital from jamming a target channel. The reason for the 483 HTLC limit each side has in the spec is to prevent commitment tx's from growing unreasonably large, and to ensure they are still valid tx's that can be included in a block. If dust HTLCs are not included in this calculation, then it would still allow 483 (x2) non-dust HTLCs to be included on the commitment tx. However, Bastien pointed out that the reason dust HTLCs count for the 483 HTLC limit is because of `update_fee`. If they are not counted and the limit is exceeded, the fee cannot be lowered anymore, which could result in more than 483 HTLC outputs in the commitment and open the door to other kinds of attacks.Bastien also noted that there may be other drawbacks if the proposal is examined enough with an attacker's mindset. Eugene's proposal would raise the capital requirement of channel-jamming so that each HTLC must be non-dust, rather than spamming 1 sat payments. This would prevent an unsophisticated attacker with low capital from jamming a target channel.
Updated on: 2023-07-31T23:27:03.478475+00:00