Skip to content

Commit 18e8c35

Browse files
committed
loopd: instantiate static address open channel manager
1 parent 7b508c8 commit 18e8c35

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{}
@@ -1963,13 +1965,14 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
19631965
}
19641966

19651967
var (
1966-
totalNumDeposits = len(allDeposits)
1967-
valueUnconfirmed int64
1968-
valueDeposited int64
1969-
valueExpired int64
1970-
valueWithdrawn int64
1971-
valueLoopedIn int64
1972-
htlcTimeoutSwept int64
1968+
totalNumDeposits = len(allDeposits)
1969+
valueUnconfirmed int64
1970+
valueDeposited int64
1971+
valueExpired int64
1972+
valueWithdrawn int64
1973+
valueLoopedIn int64
1974+
valueChannelsOpened int64
1975+
htlcTimeoutSwept int64
19731976
)
19741977

19751978
// Value unconfirmed.
@@ -2001,6 +2004,9 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
20012004

20022005
case deposit.HtlcTimeoutSwept:
20032006
htlcTimeoutSwept += value
2007+
2008+
case deposit.ChannelPublished:
2009+
valueChannelsOpened += value
20042010
}
20052011
}
20062012

@@ -2025,6 +2031,7 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
20252031
ValueExpiredSatoshis: valueExpired,
20262032
ValueWithdrawnSatoshis: valueWithdrawn,
20272033
ValueLoopedInSatoshis: valueLoopedIn,
2034+
ValueChannelsOpened: valueChannelsOpened,
20282035
ValueHtlcTimeoutSweepsSatoshis: htlcTimeoutSwept,
20292036
}, nil
20302037
}
@@ -2134,6 +2141,35 @@ func (s *swapClientServer) populateBlocksUntilExpiry(ctx context.Context,
21342141
return nil
21352142
}
21362143

2144+
// StaticOpenChannel initiates an open channel request using static address
2145+
// deposits.
2146+
func (s *swapClientServer) StaticOpenChannel(ctx context.Context,
2147+
req *looprpc.OpenChannelRequest) (*looprpc.StaticOpenChannelResponse,
2148+
error) {
2149+
2150+
infof("Static open channel request received")
2151+
2152+
chanOpenTxHash, err := s.openChannelManager.DeliverOpenChannelRequest(
2153+
ctx, req,
2154+
)
2155+
2156+
var (
2157+
txHash string
2158+
errMsg string
2159+
)
2160+
if chanOpenTxHash != nil {
2161+
txHash = chanOpenTxHash.String()
2162+
}
2163+
if err != nil {
2164+
errMsg = err.Error()
2165+
}
2166+
2167+
return &looprpc.StaticOpenChannelResponse{
2168+
ChannelOpenTxHash: txHash,
2169+
Error: errMsg,
2170+
}, nil
2171+
}
2172+
21372173
type filterFunc func(deposits *deposit.Deposit) bool
21382174

21392175
func filter(deposits []*deposit.Deposit, f filterFunc) []*looprpc.Deposit {
@@ -2187,6 +2223,12 @@ func toClientDepositState(state fsm.StateType) looprpc.DepositState {
21872223
case deposit.LoopedIn:
21882224
return looprpc.DepositState_LOOPED_IN
21892225

2226+
case deposit.OpeningChannel:
2227+
return looprpc.DepositState_OPENING_CHANNEL
2228+
2229+
case deposit.ChannelPublished:
2230+
return looprpc.DepositState_CHANNEL_PUBLISHED
2231+
21902232
case deposit.SweepHtlcTimeout:
21912233
return looprpc.DepositState_SWEEP_HTLC_TIMEOUT
21922234

@@ -2266,6 +2308,12 @@ func toServerState(state looprpc.DepositState) fsm.StateType {
22662308
case looprpc.DepositState_LOOPED_IN:
22672309
return deposit.LoopedIn
22682310

2311+
case looprpc.DepositState_OPENING_CHANNEL:
2312+
return deposit.OpeningChannel
2313+
2314+
case looprpc.DepositState_CHANNEL_PUBLISHED:
2315+
return deposit.ChannelPublished
2316+
22692317
case looprpc.DepositState_SWEEP_HTLC_TIMEOUT:
22702318
return deposit.SweepHtlcTimeout
22712319

0 commit comments

Comments
 (0)