Skip to content

Commit 19bdd99

Browse files
committed
loopd: instantiate static address open channel manager
1 parent 5a7a6b9 commit 19bdd99

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{}
@@ -1978,13 +1980,14 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
19781980
}
19791981

19801982
var (
1981-
totalNumDeposits = len(allDeposits)
1982-
valueUnconfirmed int64
1983-
valueDeposited int64
1984-
valueExpired int64
1985-
valueWithdrawn int64
1986-
valueLoopedIn int64
1987-
htlcTimeoutSwept int64
1983+
totalNumDeposits = len(allDeposits)
1984+
valueUnconfirmed int64
1985+
valueDeposited int64
1986+
valueExpired int64
1987+
valueWithdrawn int64
1988+
valueLoopedIn int64
1989+
valueChannelsOpened int64
1990+
htlcTimeoutSwept int64
19881991
)
19891992

19901993
// Value unconfirmed.
@@ -2016,6 +2019,9 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
20162019

20172020
case deposit.HtlcTimeoutSwept:
20182021
htlcTimeoutSwept += value
2022+
2023+
case deposit.ChannelPublished:
2024+
valueChannelsOpened += value
20192025
}
20202026
}
20212027

@@ -2040,6 +2046,7 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
20402046
ValueExpiredSatoshis: valueExpired,
20412047
ValueWithdrawnSatoshis: valueWithdrawn,
20422048
ValueLoopedInSatoshis: valueLoopedIn,
2049+
ValueChannelsOpened: valueChannelsOpened,
20432050
ValueHtlcTimeoutSweepsSatoshis: htlcTimeoutSwept,
20442051
}, nil
20452052
}
@@ -2149,6 +2156,35 @@ func (s *swapClientServer) populateBlocksUntilExpiry(ctx context.Context,
21492156
return nil
21502157
}
21512158

2159+
// StaticOpenChannel initiates an open channel request using static address
2160+
// deposits.
2161+
func (s *swapClientServer) StaticOpenChannel(ctx context.Context,
2162+
req *looprpc.OpenChannelRequest) (*looprpc.StaticOpenChannelResponse,
2163+
error) {
2164+
2165+
infof("Static open channel request received")
2166+
2167+
chanOpenTxHash, err := s.openChannelManager.DeliverOpenChannelRequest(
2168+
ctx, req,
2169+
)
2170+
2171+
var (
2172+
txHash string
2173+
errMsg string
2174+
)
2175+
if chanOpenTxHash != nil {
2176+
txHash = chanOpenTxHash.String()
2177+
}
2178+
if err != nil {
2179+
errMsg = err.Error()
2180+
}
2181+
2182+
return &looprpc.StaticOpenChannelResponse{
2183+
ChannelOpenTxHash: txHash,
2184+
Error: errMsg,
2185+
}, nil
2186+
}
2187+
21522188
type filterFunc func(deposits *deposit.Deposit) bool
21532189

21542190
func filter(deposits []*deposit.Deposit, f filterFunc) []*looprpc.Deposit {
@@ -2202,6 +2238,12 @@ func toClientDepositState(state fsm.StateType) looprpc.DepositState {
22022238
case deposit.LoopedIn:
22032239
return looprpc.DepositState_LOOPED_IN
22042240

2241+
case deposit.OpeningChannel:
2242+
return looprpc.DepositState_OPENING_CHANNEL
2243+
2244+
case deposit.ChannelPublished:
2245+
return looprpc.DepositState_CHANNEL_PUBLISHED
2246+
22052247
case deposit.SweepHtlcTimeout:
22062248
return looprpc.DepositState_SWEEP_HTLC_TIMEOUT
22072249

@@ -2281,6 +2323,12 @@ func toServerState(state looprpc.DepositState) fsm.StateType {
22812323
case looprpc.DepositState_LOOPED_IN:
22822324
return deposit.LoopedIn
22832325

2326+
case looprpc.DepositState_OPENING_CHANNEL:
2327+
return deposit.OpeningChannel
2328+
2329+
case looprpc.DepositState_CHANNEL_PUBLISHED:
2330+
return deposit.ChannelPublished
2331+
22842332
case looprpc.DepositState_SWEEP_HTLC_TIMEOUT:
22852333
return deposit.SweepHtlcTimeout
22862334

0 commit comments

Comments
 (0)