mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-09-04 08:55:25 +02:00
chainfee: method to round up the fee for a given transaction weight
This commit is contained in:
@@ -71,6 +71,14 @@ func (s SatPerKWeight) FeeForWeight(wu lntypes.WeightUnit) btcutil.Amount {
|
||||
return btcutil.Amount(s) * btcutil.Amount(wu) / 1000
|
||||
}
|
||||
|
||||
// FeeForWeightRoundUp calculates the fee resulting from this fee rate and the
|
||||
// given weight in weight units (wu), rounding up to the nearest satoshi.
|
||||
func (s SatPerKWeight) FeeForWeightRoundUp(
|
||||
wu lntypes.WeightUnit) btcutil.Amount {
|
||||
|
||||
return (btcutil.Amount(s)*btcutil.Amount(wu) + 999) / 1000
|
||||
}
|
||||
|
||||
// FeeForVByte calculates the fee resulting from this fee rate and the given
|
||||
// size in vbytes (vb).
|
||||
func (s SatPerKWeight) FeeForVByte(vb lntypes.VByte) btcutil.Amount {
|
||||
|
@@ -3,6 +3,7 @@ package chainfee
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/lightningnetwork/lnd/lntypes"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
@@ -20,3 +21,13 @@ func TestSatPerVByteConversion(t *testing.T) {
|
||||
// 1 sat/vb should be equal to 250 sat/kw.
|
||||
require.Equal(t, SatPerKWeight(250), rate.FeePerKWeight())
|
||||
}
|
||||
|
||||
// TestFeeForWeightRoundUp checks that the FeeForWeightRoundUp method correctly
|
||||
// rounds up the fee for a given weight.
|
||||
func TestFeeForWeightRoundUp(t *testing.T) {
|
||||
feeRate := SatPerVByte(1).FeePerKWeight()
|
||||
txWeight := lntypes.WeightUnit(674) // 674 weight units is 168.5 vb.
|
||||
|
||||
require.EqualValues(t, 168, feeRate.FeeForWeight(txWeight))
|
||||
require.EqualValues(t, 169, feeRate.FeeForWeightRoundUp(txWeight))
|
||||
}
|
||||
|
Reference in New Issue
Block a user