Merge pull request #6076 from ellemouton/alwaysClampFeeFloor

lnwallet+docs: minrelayfee always above fee floor
This commit is contained in:
Olaoluwa Osuntokun
2021-12-15 16:33:28 -08:00
committed by GitHub
3 changed files with 17 additions and 2 deletions

View File

@@ -35,6 +35,9 @@
* [Fix memory corruption in Mission Control * [Fix memory corruption in Mission Control
Store](https://github.com/lightningnetwork/lnd/pull/6068) Store](https://github.com/lightningnetwork/lnd/pull/6068)
* [Ensure that the min relay fee is always clamped by our fee
floor](https://github.com/lightningnetwork/lnd/pull/6076)
## RPC Server ## RPC Server
@@ -49,6 +52,7 @@
* Andras Banki-Horvath * Andras Banki-Horvath
* Bjarne Magnussen * Bjarne Magnussen
* Elle Mouton
* Harsha Goli * Harsha Goli
* Martin Habovštiak * Martin Habovštiak
* Naveen Srinivasan * Naveen Srinivasan

View File

@@ -32,6 +32,12 @@ func newMinFeeManager(minUpdateInterval time.Duration,
return nil, err return nil, err
} }
// Ensure that the minimum fee we use is always clamped by our fee
// floor.
if minFee < FeePerKwFloor {
minFee = FeePerKwFloor
}
return &minFeeManager{ return &minFeeManager{
minFeePerKW: minFee, minFeePerKW: minFee,
lastUpdatedTime: time.Now(), lastUpdatedTime: time.Now(),

View File

@@ -23,8 +23,10 @@ func (m *mockChainBackend) fetchFee() (SatPerKWeight, error) {
func TestMinFeeManager(t *testing.T) { func TestMinFeeManager(t *testing.T) {
t.Parallel() t.Parallel()
// Initialize the mock backend and let it have a minimum fee rate
// below our fee floor.
chainBackend := &mockChainBackend{ chainBackend := &mockChainBackend{
minFee: SatPerKWeight(1000), minFee: FeePerKwFloor - 1,
} }
// Initialise the min fee manager. This should call the chain backend // Initialise the min fee manager. This should call the chain backend
@@ -36,11 +38,14 @@ func TestMinFeeManager(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, 1, chainBackend.callCount) require.Equal(t, 1, chainBackend.callCount)
// Check that the minimum fee rate is clamped by our fee floor.
require.Equal(t, feeManager.minFeePerKW, FeePerKwFloor)
// If the fee is requested again, the stored fee should be returned // If the fee is requested again, the stored fee should be returned
// and the chain backend should not be queried. // and the chain backend should not be queried.
chainBackend.minFee = SatPerKWeight(2000) chainBackend.minFee = SatPerKWeight(2000)
minFee := feeManager.fetchMinFee() minFee := feeManager.fetchMinFee()
require.Equal(t, minFee, SatPerKWeight(1000)) require.Equal(t, minFee, FeePerKwFloor)
require.Equal(t, 1, chainBackend.callCount) require.Equal(t, 1, chainBackend.callCount)
// Fake the passing of time. // Fake the passing of time.