Replace config max counterpary `dust_limit_satoshis` by a constant.
authorAntoine Riard <dev@ariard.me>
Tue, 16 Mar 2021 22:07:22 +0000 (18:07 -0400)
committerAntoine Riard <dev@ariard.me>
Mon, 3 May 2021 19:37:38 +0000 (15:37 -0400)
commit16619ff5908ee5eade1bb17a95e2133199404f34
tree98ea59ecf2fae33d649758588f84c392becb7473
parent36570f4593bbbb8d5f894e5ed9d5a7f9a4720004
Replace config max counterpary `dust_limit_satoshis` by a constant.

Current Bitcoin Core's policy will reject a p2wsh as a dust if it's
under 330 satoshis. A typical p2wsh output is 43 bytes big to which
Core's `GetDustThreshold()` sums up a minimal spend of 67 bytes (even
if a p2wsh witnessScript might be smaller). `dustRelayFee` is set
to 3000 sat/kb, thus 110 * 3000 / 1000 = 330. As all time-sensitive
outputs are p2wsh, a value of 330 sat is the lower bound desired
to ensure good propagation of transactions. We give a bit margin to
our counterparty and pick up 660 satoshis as an accepted
`dust_limit_satoshis` upper bound.

As this reasoning is tricky and error-prone we hardcode it instead of
letting the user picking up a non-sense value.

Further, this lower bound of 330 sats is also hardcoded as another constant
(MIN_DUST_LIMIT_SATOSHIS) instead of being dynamically computed on
feerate (derive_holder_dust_limit_satoshis`). Reducing risks of
non-propagating transactions in casee of failing fee festimation.
fuzz/src/chanmon_consistency.rs
fuzz/src/full_stack.rs
lightning/src/ln/channel.rs
lightning/src/ln/functional_tests.rs
lightning/src/util/config.rs