mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 09:53:54 +01:00
10929d80cc
In this commit, we add a new Rebroadcaster interface to be used for publishing transactions passively in the background until they've been confirmed on chain. This is useful if a tx drops out of the mempool, but then the pool clears down and has more space available to accept the tx at the current fee level.
65 lines
2.5 KiB
Go
65 lines
2.5 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.ChannelStateDB
|
|
|
|
// 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
|
|
|
|
// Rebroadcaster is an optional config param that can be used to
|
|
// passively rebroadcast transactions in the background until they're
|
|
// detected as being confirmed.
|
|
Rebroadcaster Rebroadcaster
|
|
}
|