From 60ad01e9c2cbfd3742b64a2d4539cdbdea451adf Mon Sep 17 00:00:00 2001 From: Conner Fromknecht Date: Wed, 25 Nov 2020 15:05:56 -0800 Subject: [PATCH] server: initialize distinct anchor tower client --- server.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/server.go b/server.go index 13e1462b5..ab6fcbfc0 100644 --- a/server.go +++ b/server.go @@ -66,6 +66,7 @@ import ( "github.com/lightningnetwork/lnd/ticker" "github.com/lightningnetwork/lnd/tor" "github.com/lightningnetwork/lnd/walletunlocker" + "github.com/lightningnetwork/lnd/watchtower/blob" "github.com/lightningnetwork/lnd/watchtower/wtclient" "github.com/lightningnetwork/lnd/watchtower/wtpolicy" "github.com/lightningnetwork/lnd/watchtower/wtserver" @@ -247,6 +248,8 @@ type server struct { towerClient wtclient.Client + anchorTowerClient wtclient.Client + connMgr *connmgr.ConnManager sigPool *lnwallet.SigPool @@ -1265,6 +1268,29 @@ func newServer(cfg *Config, listenAddrs []net.Addr, if err != nil { return nil, err } + + // Copy the policy for legacy channels and set the blob flag + // signalling support for anchor channels. + anchorPolicy := policy + anchorPolicy.TxPolicy.BlobType |= + blob.Type(blob.FlagAnchorChannel) + + s.anchorTowerClient, err = wtclient.New(&wtclient.Config{ + Signer: cc.Wallet.Cfg.Signer, + NewAddress: newSweepPkScriptGen(cc.Wallet), + SecretKeyRing: s.cc.KeyRing, + Dial: cfg.net.Dial, + AuthDial: authDial, + DB: towerClientDB, + Policy: anchorPolicy, + ChainHash: *s.cfg.ActiveNetParams.GenesisHash, + MinBackoff: 10 * time.Second, + MaxBackoff: 5 * time.Minute, + ForceQuitDelay: wtclient.DefaultForceQuitDelay, + }) + if err != nil { + return nil, err + } } if len(cfg.ExternalHosts) != 0 { @@ -1438,6 +1464,12 @@ func (s *server) Start() error { return } } + if s.anchorTowerClient != nil { + if err := s.anchorTowerClient.Start(); err != nil { + startErr = err + return + } + } if err := s.htlcSwitch.Start(); err != nil { startErr = err return @@ -1677,6 +1709,12 @@ func (s *server) Stop() error { if s.towerClient != nil { s.towerClient.Stop() } + if s.anchorTowerClient != nil { + if err := s.anchorTowerClient.Stop(); err != nil { + srvrLog.Warnf("Unable to shut down anchor "+ + "tower client: %v", err) + } + } if s.hostAnn != nil { if err := s.hostAnn.Stop(); err != nil {