777ed104a3
In this commit, we create a new chainfee package, that houses all fee related functionality used within the codebase. The creation of this new package furthers our long-term goal of extracting functionality from the bloated `lnwallet` package into new distinct packages. Additionally, this new packages resolves a class of import cycle that could arise if a new package that was imported by something in `lnwallet` wanted to use the existing fee related functions in the prior `lnwallet` package.
60 lines
2.3 KiB
Go
60 lines
2.3 KiB
Go
package lnwallet
|
|
|
|
import (
|
|
"github.com/btcsuite/btcd/chaincfg"
|
|
"github.com/lightningnetwork/lnd/chainntnfs"
|
|
"github.com/lightningnetwork/lnd/channeldb"
|
|
"github.com/lightningnetwork/lnd/input"
|
|
"github.com/lightningnetwork/lnd/keychain"
|
|
"github.com/lightningnetwork/lnd/lnwallet/chainfee"
|
|
)
|
|
|
|
// Config is a struct which houses configuration parameters which modify the
|
|
// behaviour of LightningWallet.
|
|
//
|
|
// NOTE: The passed channeldb, and ChainNotifier should already be fully
|
|
// initialized/started before being passed as a function argument.
|
|
type Config struct {
|
|
// Database is a wrapper around a namespace within boltdb reserved for
|
|
// ln-based wallet metadata. See the 'channeldb' package for further
|
|
// information.
|
|
Database *channeldb.DB
|
|
|
|
// Notifier is used by in order to obtain notifications about funding
|
|
// transaction reaching a specified confirmation depth, and to catch
|
|
// counterparty's broadcasting revoked commitment states.
|
|
Notifier chainntnfs.ChainNotifier
|
|
|
|
// SecretKeyRing is used by the wallet during the funding workflow
|
|
// process to obtain keys to be used directly within contracts. Usage
|
|
// of this interface ensures that all key derivation is itself fully
|
|
// deterministic.
|
|
SecretKeyRing keychain.SecretKeyRing
|
|
|
|
// WalletController is the core wallet, all non Lightning Network
|
|
// specific interaction is proxied to the internal wallet.
|
|
WalletController WalletController
|
|
|
|
// Signer is the wallet's current Signer implementation. This Signer is
|
|
// used to generate signature for all inputs to potential funding
|
|
// transactions, as well as for spends from the funding transaction to
|
|
// update the commitment state.
|
|
Signer input.Signer
|
|
|
|
// FeeEstimator is the implementation that the wallet will use for the
|
|
// calculation of on-chain transaction fees.
|
|
FeeEstimator chainfee.Estimator
|
|
|
|
// ChainIO is an instance of the BlockChainIO interface. ChainIO is
|
|
// used to lookup the existence of outputs within the UTXO set.
|
|
ChainIO BlockChainIO
|
|
|
|
// DefaultConstraints is the set of default constraints that will be
|
|
// used for any incoming or outgoing channel reservation requests.
|
|
DefaultConstraints channeldb.ChannelConstraints
|
|
|
|
// NetParams is the set of parameters that tells the wallet which chain
|
|
// it will be operating on.
|
|
NetParams chaincfg.Params
|
|
}
|