Skip to content

Commit 23de118

Browse files
committed
loopd: instantiate static address open channel manager
1 parent ac70267 commit 23de118

File tree

2 files changed

+85
-7
lines changed

2 files changed

+85
-7
lines changed

loopd/daemon.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/lightninglabs/loop/staticaddr/address"
2525
"github.com/lightninglabs/loop/staticaddr/deposit"
2626
"github.com/lightninglabs/loop/staticaddr/loopin"
27+
"github.com/lightninglabs/loop/staticaddr/openchannel"
2728
"github.com/lightninglabs/loop/staticaddr/withdraw"
2829
loop_swaprpc "github.com/lightninglabs/loop/swapserverrpc"
2930
"github.com/lightninglabs/loop/sweepbatcher"
@@ -573,6 +574,7 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
573574
staticAddressManager *address.Manager
574575
depositManager *deposit.Manager
575576
withdrawalManager *withdraw.Manager
577+
openChannelManager *openchannel.Manager
576578
staticLoopInManager *loopin.Manager
577579
)
578580

@@ -619,6 +621,19 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
619621
}
620622
withdrawalManager = withdraw.NewManager(withdrawalCfg, blockHeight)
621623

624+
// Static address deposit open channel manager setup.
625+
openChannelCfg := &openchannel.Config{
626+
Server: staticAddressClient,
627+
AddressManager: staticAddressManager,
628+
DepositManager: depositManager,
629+
WalletKit: d.lnd.WalletKit,
630+
ChainParams: d.lnd.ChainParams,
631+
ChainNotifier: d.lnd.ChainNotifier,
632+
Signer: d.lnd.Signer,
633+
LightningClient: d.lnd.Client,
634+
}
635+
openChannelManager = openchannel.NewManager(openChannelCfg)
636+
622637
// Static address loop-in manager setup.
623638
staticAddressLoopInStore := loopin.NewSqlStore(
624639
loopdb.NewTypedStore[loopin.Querier](baseDb),
@@ -726,6 +741,7 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
726741
depositManager: depositManager,
727742
withdrawalManager: withdrawalManager,
728743
staticLoopInManager: staticLoopInManager,
744+
openChannelManager: openChannelManager,
729745
assetClient: d.assetClient,
730746
}
731747

@@ -961,6 +977,20 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
961977
cancel()
962978
}
963979
}
980+
// Start the static address open channel manager.
981+
if openChannelManager != nil {
982+
d.wg.Add(1)
983+
go func() {
984+
defer d.wg.Done()
985+
986+
infof("Starting static address open channel manager")
987+
err := openChannelManager.Run(d.mainCtx)
988+
if err != nil && !errors.Is(context.Canceled, err) {
989+
d.internalErrChan <- err
990+
}
991+
infof("Static address open channel manager stopped")
992+
}()
993+
}
964994

965995
// Start the static address loop-in manager.
966996
if staticLoopInManager != nil {

loopd/swapclient_server.go

Lines changed: 55 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"github.com/lightninglabs/loop/staticaddr/address"
3333
"github.com/lightninglabs/loop/staticaddr/deposit"
3434
"github.com/lightninglabs/loop/staticaddr/loopin"
35+
"github.com/lightninglabs/loop/staticaddr/openchannel"
3536
"github.com/lightninglabs/loop/staticaddr/withdraw"
3637
"github.com/lightninglabs/loop/swap"
3738
"github.com/lightninglabs/loop/swapserverrpc"
@@ -97,6 +98,7 @@ type swapClientServer struct {
9798
depositManager *deposit.Manager
9899
withdrawalManager *withdraw.Manager
99100
staticLoopInManager *loopin.Manager
101+
openChannelManager *openchannel.Manager
100102
assetClient *assets.TapdClient
101103
swaps map[lntypes.Hash]loop.SwapInfo
102104
subscribers map[int]chan<- interface{}
@@ -1974,13 +1976,14 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
19741976
}
19751977

19761978
var (
1977-
totalNumDeposits = len(allDeposits)
1978-
valueUnconfirmed int64
1979-
valueDeposited int64
1980-
valueExpired int64
1981-
valueWithdrawn int64
1982-
valueLoopedIn int64
1983-
htlcTimeoutSwept int64
1979+
totalNumDeposits = len(allDeposits)
1980+
valueUnconfirmed int64
1981+
valueDeposited int64
1982+
valueExpired int64
1983+
valueWithdrawn int64
1984+
valueLoopedIn int64
1985+
valueChannelsOpened int64
1986+
htlcTimeoutSwept int64
19841987
)
19851988

19861989
// Value unconfirmed.
@@ -2012,6 +2015,9 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
20122015

20132016
case deposit.HtlcTimeoutSwept:
20142017
htlcTimeoutSwept += value
2018+
2019+
case deposit.ChannelPublished:
2020+
valueChannelsOpened += value
20152021
}
20162022
}
20172023

@@ -2036,6 +2042,7 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
20362042
ValueExpiredSatoshis: valueExpired,
20372043
ValueWithdrawnSatoshis: valueWithdrawn,
20382044
ValueLoopedInSatoshis: valueLoopedIn,
2045+
ValueChannelsOpened: valueChannelsOpened,
20392046
ValueHtlcTimeoutSweepsSatoshis: htlcTimeoutSwept,
20402047
}, nil
20412048
}
@@ -2093,6 +2100,35 @@ func (s *swapClientServer) StaticAddressLoopIn(ctx context.Context,
20932100
}, nil
20942101
}
20952102

2103+
// StaticOpenChannel initiates an open channel request using static address
2104+
// deposits.
2105+
func (s *swapClientServer) StaticOpenChannel(ctx context.Context,
2106+
req *looprpc.OpenChannelRequest) (*looprpc.StaticOpenChannelResponse,
2107+
error) {
2108+
2109+
infof("Static open channel request received")
2110+
2111+
chanOpenTxHash, err := s.openChannelManager.DeliverOpenChannelRequest(
2112+
ctx, req,
2113+
)
2114+
2115+
var (
2116+
txHash string
2117+
errMsg string
2118+
)
2119+
if chanOpenTxHash != nil {
2120+
txHash = chanOpenTxHash.String()
2121+
}
2122+
if err != nil {
2123+
errMsg = err.Error()
2124+
}
2125+
2126+
return &looprpc.StaticOpenChannelResponse{
2127+
ChannelOpenTxHash: txHash,
2128+
Error: errMsg,
2129+
}, nil
2130+
}
2131+
20962132
type filterFunc func(deposits *deposit.Deposit) bool
20972133

20982134
func filter(deposits []*deposit.Deposit, f filterFunc) []*looprpc.Deposit {
@@ -2146,6 +2182,12 @@ func toClientDepositState(state fsm.StateType) looprpc.DepositState {
21462182
case deposit.LoopedIn:
21472183
return looprpc.DepositState_LOOPED_IN
21482184

2185+
case deposit.OpeningChannel:
2186+
return looprpc.DepositState_OPENING_CHANNEL
2187+
2188+
case deposit.ChannelPublished:
2189+
return looprpc.DepositState_CHANNEL_PUBLISHED
2190+
21492191
case deposit.SweepHtlcTimeout:
21502192
return looprpc.DepositState_SWEEP_HTLC_TIMEOUT
21512193

@@ -2225,6 +2267,12 @@ func toServerState(state looprpc.DepositState) fsm.StateType {
22252267
case looprpc.DepositState_LOOPED_IN:
22262268
return deposit.LoopedIn
22272269

2270+
case looprpc.DepositState_OPENING_CHANNEL:
2271+
return deposit.OpeningChannel
2272+
2273+
case looprpc.DepositState_CHANNEL_PUBLISHED:
2274+
return deposit.ChannelPublished
2275+
22282276
case looprpc.DepositState_SWEEP_HTLC_TIMEOUT:
22292277
return deposit.SweepHtlcTimeout
22302278

0 commit comments

Comments
 (0)