From 1c93e9e03d7bb2fe8d89faea5c4ca01a6069cfcd Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Mon, 9 Dec 2019 12:17:58 +0100 Subject: [PATCH] sweep: isolate min fee rate bucket --- sweep/sweeper.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sweep/sweeper.go b/sweep/sweeper.go index 59971493..95c0ff2b 100644 --- a/sweep/sweeper.go +++ b/sweep/sweeper.go @@ -714,7 +714,15 @@ func (s *UtxoSweeper) sweepCluster(cluster inputCluster, func (s *UtxoSweeper) bucketForFeeRate( feeRate chainfee.SatPerKWeight) int { - return int(feeRate-s.relayFeeRate) / s.cfg.FeeRateBucketSize + // Create an isolated bucket for sweeps at the minimum fee rate. This is + // to prevent very small outputs (anchors) from becoming uneconomical if + // their fee rate would be averaged with higher fee rate inputs in a + // regular bucket. + if feeRate == s.relayFeeRate { + return 0 + } + + return 1 + int(feeRate-s.relayFeeRate)/s.cfg.FeeRateBucketSize } // clusterBySweepFeeRate takes the set of pending inputs within the UtxoSweeper