mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-06-29 18:10:48 +02:00
lnwallet+peer: move internalKeyForAddr to lnwallet package
This way we can re-use it. We also make it slightly more generalized.
This commit is contained in:
81
server.go
81
server.go
@ -18,6 +18,7 @@ import (
|
||||
"github.com/btcsuite/btcd/btcec/v2"
|
||||
"github.com/btcsuite/btcd/btcec/v2/ecdsa"
|
||||
"github.com/btcsuite/btcd/btcutil"
|
||||
"github.com/btcsuite/btcd/chaincfg"
|
||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||
"github.com/btcsuite/btcd/connmgr"
|
||||
"github.com/btcsuite/btcd/txscript"
|
||||
@ -520,6 +521,8 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
|
||||
var serializedPubKey [33]byte
|
||||
copy(serializedPubKey[:], nodeKeyDesc.PubKey.SerializeCompressed())
|
||||
|
||||
netParams := cfg.ActiveNetParams.Params
|
||||
|
||||
// Initialize the sphinx router.
|
||||
replayLog := htlcswitch.NewDecayedLog(
|
||||
dbs.DecayedLogDB, cc.ChainNotifier,
|
||||
@ -1123,8 +1126,10 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
|
||||
})
|
||||
|
||||
s.sweeper = sweep.New(&sweep.UtxoSweeperConfig{
|
||||
FeeEstimator: cc.FeeEstimator,
|
||||
GenSweepScript: newSweepPkScriptGen(cc.Wallet),
|
||||
FeeEstimator: cc.FeeEstimator,
|
||||
GenSweepScript: newSweepPkScriptGen(
|
||||
cc.Wallet, s.cfg.ActiveNetParams.Params,
|
||||
),
|
||||
Signer: cc.Wallet.Cfg.Signer,
|
||||
Wallet: newSweeperWallet(cc.Wallet),
|
||||
Mempool: cc.MempoolNotifier,
|
||||
@ -1167,10 +1172,19 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
|
||||
|
||||
s.breachArbitrator = contractcourt.NewBreachArbitrator(
|
||||
&contractcourt.BreachConfig{
|
||||
CloseLink: closeLink,
|
||||
DB: s.chanStateDB,
|
||||
Estimator: s.cc.FeeEstimator,
|
||||
GenSweepScript: newSweepPkScriptGen(cc.Wallet),
|
||||
CloseLink: closeLink,
|
||||
DB: s.chanStateDB,
|
||||
Estimator: s.cc.FeeEstimator,
|
||||
GenSweepScript: func() ([]byte, error) {
|
||||
addr, err := newSweepPkScriptGen(
|
||||
cc.Wallet, netParams,
|
||||
)().Unpack()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return addr.DeliveryAddress, nil
|
||||
},
|
||||
Notifier: cc.ChainNotifier,
|
||||
PublishTransaction: cc.Wallet.PublishTransaction,
|
||||
ContractBreaches: contractBreaches,
|
||||
@ -1186,8 +1200,17 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
|
||||
ChainHash: *s.cfg.ActiveNetParams.GenesisHash,
|
||||
IncomingBroadcastDelta: lncfg.DefaultIncomingBroadcastDelta,
|
||||
OutgoingBroadcastDelta: lncfg.DefaultOutgoingBroadcastDelta,
|
||||
NewSweepAddr: newSweepPkScriptGen(cc.Wallet),
|
||||
PublishTx: cc.Wallet.PublishTransaction,
|
||||
NewSweepAddr: func() ([]byte, error) {
|
||||
addr, err := newSweepPkScriptGen(
|
||||
cc.Wallet, netParams,
|
||||
)().Unpack()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return addr.DeliveryAddress, nil
|
||||
},
|
||||
PublishTx: cc.Wallet.PublishTransaction,
|
||||
DeliverResolutionMsg: func(msgs ...contractcourt.ResolutionMsg) error {
|
||||
for _, msg := range msgs {
|
||||
err := s.htlcSwitch.ProcessContractResolution(msg)
|
||||
@ -1665,8 +1688,17 @@ func newServer(cfg *Config, listenAddrs []net.Addr,
|
||||
return s.channelNotifier.
|
||||
SubscribeChannelEvents()
|
||||
},
|
||||
Signer: cc.Wallet.Cfg.Signer,
|
||||
NewAddress: newSweepPkScriptGen(cc.Wallet),
|
||||
Signer: cc.Wallet.Cfg.Signer,
|
||||
NewAddress: func() ([]byte, error) {
|
||||
addr, err := newSweepPkScriptGen(
|
||||
cc.Wallet, netParams,
|
||||
)().Unpack()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return addr.DeliveryAddress, nil
|
||||
},
|
||||
SecretKeyRing: s.cc.KeyRing,
|
||||
Dial: cfg.net.Dial,
|
||||
AuthDial: authDial,
|
||||
@ -4935,18 +4967,39 @@ func (s *server) SendCustomMessage(peerPub [33]byte, msgType lnwire.MessageType,
|
||||
// Specifically, the script generated is a version 0, pay-to-witness-pubkey-hash
|
||||
// (p2wkh) output.
|
||||
func newSweepPkScriptGen(
|
||||
wallet lnwallet.WalletController) func() ([]byte, error) {
|
||||
wallet lnwallet.WalletController,
|
||||
netParams *chaincfg.Params) func() fn.Result[lnwallet.AddrWithKey] {
|
||||
|
||||
return func() ([]byte, error) {
|
||||
return func() fn.Result[lnwallet.AddrWithKey] {
|
||||
sweepAddr, err := wallet.NewAddress(
|
||||
lnwallet.TaprootPubkey, false,
|
||||
lnwallet.DefaultAccountName,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return fn.Err[lnwallet.AddrWithKey](err)
|
||||
}
|
||||
|
||||
return txscript.PayToAddrScript(sweepAddr)
|
||||
addr, err := txscript.PayToAddrScript(sweepAddr)
|
||||
if err != nil {
|
||||
return fn.Err[lnwallet.AddrWithKey](err)
|
||||
}
|
||||
|
||||
internalKeyDesc, err := lnwallet.InternalKeyForAddr(
|
||||
wallet, netParams, addr,
|
||||
)
|
||||
if err != nil {
|
||||
return fn.Err[lnwallet.AddrWithKey](err)
|
||||
}
|
||||
|
||||
return fn.Ok(lnwallet.AddrWithKey{
|
||||
DeliveryAddress: addr,
|
||||
InternalKey: fn.MapOption(func(
|
||||
desc keychain.KeyDescriptor) btcec.PublicKey {
|
||||
|
||||
return *desc.PubKey
|
||||
},
|
||||
)(internalKeyDesc),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user