diff --git a/lnwallet/fee_estimator.go b/lnwallet/fee_estimator.go new file mode 100644 index 00000000..b75d5b80 --- /dev/null +++ b/lnwallet/fee_estimator.go @@ -0,0 +1,40 @@ +package lnwallet + +// FeeEstimator provides the ability to estimate on-chain transaction fees for +// various combinations of transaction sizes and desired confirmation time +// (measured by number of blocks). +type FeeEstimator interface { + // EstimateFeePerByte takes in a target for the number of blocks until + // an initial confirmation and returns the estimated fee expressed in + // satoshis/byte. + EstimateFeePerByte(numBlocks uint32) uint64 + + // EstimateFeePerWeight takes in a target for the number of blocks + // until an initial confirmation and returns the estimated fee + // expressed in satoshis/weight. + EstimateFeePerWeight(numBlocks uint32) uint64 +} + +// StaticFeeEstimator will return a static value for all fee calculation +// requests. It is designed to be replaced by a proper fee calculation +// implementation. +type StaticFeeEstimator struct { + // FeeRate is the static fee rate in satoshis-per-byte that will be + // returned by this fee estimator. Queries for the fee rate in weight + // units will be scaled accordingly. + FeeRate uint64 +} + +// EstimateFeePerByte will return a static value for fee calculations. +func (e StaticFeeEstimator) EstimateFeePerByte(numBlocks uint32) uint64 { + return e.FeeRate +} + +// EstimateFeePerWeight will return a static value for fee calculations. +func (e StaticFeeEstimator) EstimateFeePerWeight(numBlocks uint32) uint64 { + return e.FeeRate / 4 +} + +// A compile-time assertion to ensure that StaticFeeEstimator implements the +// FeeEstimator interface. +var _ FeeEstimator = (*StaticFeeEstimator)(nil) diff --git a/lnwallet/interface.go b/lnwallet/interface.go index d6ac3827..ad5d2ecb 100644 --- a/lnwallet/interface.go +++ b/lnwallet/interface.go @@ -268,26 +268,6 @@ type MessageSigner interface { SignMessage(pubKey *btcec.PublicKey, msg []byte) (*btcec.Signature, error) } -// FeeEstimator provides the ability to estimate on-chain transaction fees for -// various combinations of transaction sizes and desired confirmation time -// (measured by number of blocks). -type FeeEstimator interface { - // EstimateFeePerByte takes in a target for the number of blocks until - // an initial confirmation and returns the estimated fee expressed in - // satoshis/byte. - EstimateFeePerByte(numBlocks uint32) uint64 - - // EstimateFeePerWeight takes in a target for the number of blocks until - // an initial confirmation and returns the estimated fee expressed in - // satoshis/weight. - EstimateFeePerWeight(numBlocks uint32) uint64 - - // EstimateConfirmation will return the number of blocks expected for a - // transaction to be confirmed given a fee rate in satoshis per - // byte. - EstimateConfirmation(satPerByte int64) uint32 -} - // WalletDriver represents a "driver" for a particular concrete // WalletController implementation. A driver is identified by a globally unique // string identifier along with a 'New()' method which is responsible for diff --git a/lnwallet/wallet.go b/lnwallet/wallet.go index 8933a90f..40d1d5cb 100644 --- a/lnwallet/wallet.go +++ b/lnwallet/wallet.go @@ -1445,28 +1445,3 @@ func coinSelect(feeRatePerWeight uint64, amt btcutil.Amount, return selectedUtxos, changeAmt, nil } } - -// StaticFeeEstimator will return a static value for all fee calculation -// requests. It is designed to be replaced by a proper fee calculation -// implementation. -type StaticFeeEstimator struct { - FeeRate uint64 - Confirmation uint32 -} - -// EstimateFeePerByte will return a static value for fee calculations. -func (e StaticFeeEstimator) EstimateFeePerByte(numBlocks uint32) uint64 { - return e.FeeRate -} - -// EstimateFeePerWeight will return a static value for fee calculations. -func (e StaticFeeEstimator) EstimateFeePerWeight(numBlocks uint32) uint64 { - return e.FeeRate / 4 -} - -// EstimateConfirmation will return a static value representing the estimated -// number of blocks that will be required to confirm a transaction for the -// given fee rate. -func (e StaticFeeEstimator) EstimateConfirmation(satPerByte int64) uint32 { - return e.Confirmation -}