diff --git a/chainregistry.go b/chainregistry.go index 075da70a..f36d634a 100644 --- a/chainregistry.go +++ b/chainregistry.go @@ -22,6 +22,7 @@ import ( "github.com/lightningnetwork/lnd/routing/chainview" "github.com/roasbeef/btcd/chaincfg/chainhash" "github.com/roasbeef/btcd/rpcclient" + "github.com/roasbeef/btcutil" "github.com/roasbeef/btcwallet/chain" "github.com/roasbeef/btcwallet/walletdb" ) @@ -268,6 +269,27 @@ func newChainControlFromConfig(cfg *config, chanDB *channeldb.DB, } walletConfig.ChainSource = chainRPC + + // If we're not in simnet mode, then we'll attempt to use a + // proper fee estimator for testnet. + if !cfg.Bitcoin.SimNet && !cfg.Litecoin.SimNet { + ltndLog.Infof("Initializing btcd backed fee estimator") + + // Finally, we'll re-initialize the fee estimator, as + // if we're using btcd as a backend, then we can use + // live fee estimates, rather than a statically coded + // value. + fallBackFeeRate := btcutil.Amount(25) + cc.feeEstimator, err = lnwallet.NewBtcdFeeEstimator( + *rpcConfig, fallBackFeeRate, + ) + if err != nil { + return nil, nil, err + } + if err := cc.feeEstimator.Start(); err != nil { + return nil, nil, err + } + } } wc, err := btcwallet.New(*walletConfig) diff --git a/rpcserver.go b/rpcserver.go index 57e05ed5..29ade4fe 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -841,7 +841,7 @@ func (r *rpcServer) CloseChannel(in *lnrpc.CloseChannelRequest, // TODO(roasbeef): actually get the active channel // instead too? // * so only need to grab from database - peer.WipeChannel(channel) + peer.WipeChannel(channel.ChannelPoint()) } else { chanID := lnwire.NewChanIDFromOutPoint(channel.ChannelPoint()) r.server.htlcSwitch.RemoveLink(chanID) diff --git a/server.go b/server.go index 372ff8fb..994f4e05 100644 --- a/server.go +++ b/server.go @@ -20,6 +20,7 @@ import ( "github.com/lightningnetwork/lnd/lnrpc" "github.com/lightningnetwork/lnd/lnwire" "github.com/lightningnetwork/lnd/routing" + "github.com/roasbeef/btcd/blockchain" "github.com/roasbeef/btcd/btcec" "github.com/roasbeef/btcd/chaincfg/chainhash" "github.com/roasbeef/btcd/connmgr" @@ -329,7 +330,7 @@ func newServer(listenAddrs []string, chanDB *channeldb.DB, cc *chainControl, closureType htlcswitch.ChannelCloseType) { // TODO(conner): Properly respect the update and error channels // returned by CloseLink. - s.htlcSwitch.CloseLink(chanPoint, closureType) + s.htlcSwitch.CloseLink(chanPoint, closureType, 0) } s.breachArbiter = newBreachArbiter(&BreachConfig{ @@ -454,6 +455,7 @@ func (s *server) Stop() error { s.cc.wallet.Shutdown() s.cc.chainView.Stop() s.connMgr.Stop() + s.cc.feeEstimator.Stop() // Disconnect from each active peers to ensure that // peerTerminationWatchers signal completion to each peer. @@ -1435,6 +1437,8 @@ type openChanReq struct { pushAmt lnwire.MilliSatoshi + fundingFeePerWeight btcutil.Amount + // TODO(roasbeef): add ability to specify channel constraints as well updates chan *lnrpc.OpenStatusUpdate