chainfee: method to round up the fee for a given transaction weight
This commit is contained in:
2 files changed
+19
No files matched your search
@@ -71,6 +71,14 @@ func (s SatPerKWeight) FeeForWeight(wu lntypes.WeightUnit) btcutil.Amount {
|
|||||||
return btcutil.Amount(s) * btcutil.Amount(wu) / 1000
|
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
|
// FeeForVByte calculates the fee resulting from this fee rate and the given
|
||||||
// size in vbytes (vb).
|
// size in vbytes (vb).
|
||||||
func (s SatPerKWeight) FeeForVByte(vb lntypes.VByte) btcutil.Amount {
|
func (s SatPerKWeight) FeeForVByte(vb lntypes.VByte) btcutil.Amount {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package chainfee
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/lightningnetwork/lnd/lntypes"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -20,3 +21,13 @@ func TestSatPerVByteConversion(t *testing.T) {
|
|||||||
// 1 sat/vb should be equal to 250 sat/kw.
|
// 1 sat/vb should be equal to 250 sat/kw.
|
||||||
require.Equal(t, SatPerKWeight(250), rate.FeePerKWeight())
|
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