lnd: integrate companion watchtower
This commit is contained in:
parent
c1f24feb8b
commit
985ac7f5b7
52
lnd.go
52
lnd.go
|
@ -36,6 +36,7 @@ import (
|
||||||
"google.golang.org/grpc/credentials"
|
"google.golang.org/grpc/credentials"
|
||||||
|
|
||||||
"github.com/btcsuite/btcd/btcec"
|
"github.com/btcsuite/btcd/btcec"
|
||||||
|
"github.com/btcsuite/btcutil"
|
||||||
"github.com/btcsuite/btcwallet/wallet"
|
"github.com/btcsuite/btcwallet/wallet"
|
||||||
proxy "github.com/grpc-ecosystem/grpc-gateway/runtime"
|
proxy "github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||||
"github.com/lightninglabs/neutrino"
|
"github.com/lightninglabs/neutrino"
|
||||||
|
@ -51,6 +52,7 @@ import (
|
||||||
"github.com/lightningnetwork/lnd/macaroons"
|
"github.com/lightningnetwork/lnd/macaroons"
|
||||||
"github.com/lightningnetwork/lnd/signal"
|
"github.com/lightningnetwork/lnd/signal"
|
||||||
"github.com/lightningnetwork/lnd/walletunlocker"
|
"github.com/lightningnetwork/lnd/walletunlocker"
|
||||||
|
"github.com/lightningnetwork/lnd/watchtower"
|
||||||
"github.com/lightningnetwork/lnd/watchtower/wtdb"
|
"github.com/lightningnetwork/lnd/watchtower/wtdb"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -326,6 +328,48 @@ func Main() error {
|
||||||
defer towerClientDB.Close()
|
defer towerClientDB.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var tower *watchtower.Standalone
|
||||||
|
if cfg.Watchtower.Active {
|
||||||
|
// Segment the watchtower directory by chain and network.
|
||||||
|
towerDBDir := filepath.Join(
|
||||||
|
cfg.Watchtower.TowerDir,
|
||||||
|
registeredChains.PrimaryChain().String(),
|
||||||
|
normalizeNetwork(activeNetParams.Name),
|
||||||
|
)
|
||||||
|
|
||||||
|
towerDB, err := wtdb.OpenTowerDB(towerDBDir)
|
||||||
|
if err != nil {
|
||||||
|
ltndLog.Errorf("Unable to open watchtower db: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer towerDB.Close()
|
||||||
|
|
||||||
|
wtConfig, err := cfg.Watchtower.Apply(&watchtower.Config{
|
||||||
|
BlockFetcher: activeChainControl.chainIO,
|
||||||
|
DB: towerDB,
|
||||||
|
EpochRegistrar: activeChainControl.chainNotifier,
|
||||||
|
Net: cfg.net,
|
||||||
|
NewAddress: func() (btcutil.Address, error) {
|
||||||
|
return activeChainControl.wallet.NewAddress(
|
||||||
|
lnwallet.WitnessPubKey, false,
|
||||||
|
)
|
||||||
|
},
|
||||||
|
NodePrivKey: idPrivKey,
|
||||||
|
PublishTx: activeChainControl.wallet.PublishTransaction,
|
||||||
|
ChainHash: *activeNetParams.GenesisHash,
|
||||||
|
}, lncfg.NormalizeAddresses)
|
||||||
|
if err != nil {
|
||||||
|
ltndLog.Errorf("Unable to configure watchtower: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
tower, err = watchtower.New(wtConfig)
|
||||||
|
if err != nil {
|
||||||
|
ltndLog.Errorf("Unable to create watchtower: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Set up the core server which will listen for incoming peer
|
// Set up the core server which will listen for incoming peer
|
||||||
// connections.
|
// connections.
|
||||||
server, err := newServer(
|
server, err := newServer(
|
||||||
|
@ -431,6 +475,14 @@ func Main() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cfg.Watchtower.Active {
|
||||||
|
if err := tower.Start(); err != nil {
|
||||||
|
ltndLog.Errorf("Unable to start watchtower: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer tower.Stop()
|
||||||
|
}
|
||||||
|
|
||||||
// Wait for shutdown signal from either a graceful server stop or from
|
// Wait for shutdown signal from either a graceful server stop or from
|
||||||
// the interrupt handler.
|
// the interrupt handler.
|
||||||
<-signal.ShutdownChannel()
|
<-signal.ShutdownChannel()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user