Skip to content

Commit 22ba5bf

Browse files
committed
loopd: instantiate static address open channel manager
1 parent c64b235 commit 22ba5bf

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"
@@ -574,6 +575,7 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
574575
staticAddressManager *address.Manager
575576
depositManager *deposit.Manager
576577
withdrawalManager *withdraw.Manager
578+
openChannelManager *openchannel.Manager
577579
staticLoopInManager *loopin.Manager
578580
)
579581

@@ -615,6 +617,19 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
615617
}
616618
withdrawalManager = withdraw.NewManager(withdrawalCfg, blockHeight)
617619

620+
// Static address deposit open channel manager setup.
621+
openChannelCfg := &openchannel.Config{
622+
Server: staticAddressClient,
623+
AddressManager: staticAddressManager,
624+
DepositManager: depositManager,
625+
WalletKit: d.lnd.WalletKit,
626+
ChainParams: d.lnd.ChainParams,
627+
ChainNotifier: d.lnd.ChainNotifier,
628+
Signer: d.lnd.Signer,
629+
LightningClient: d.lnd.Client,
630+
}
631+
openChannelManager = openchannel.NewManager(openChannelCfg)
632+
618633
// Static address loop-in manager setup.
619634
staticAddressLoopInStore := loopin.NewSqlStore(
620635
loopdb.NewTypedStore[loopin.Querier](baseDb),
@@ -702,6 +717,7 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
702717
depositManager: depositManager,
703718
withdrawalManager: withdrawalManager,
704719
staticLoopInManager: staticLoopInManager,
720+
openChannelManager: openChannelManager,
705721
assetClient: d.assetClient,
706722
}
707723

@@ -879,6 +895,20 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
879895
}()
880896
withdrawalManager.WaitInitComplete()
881897
}
898+
// Start the static address open channel manager.
899+
if openChannelManager != nil {
900+
d.wg.Add(1)
901+
go func() {
902+
defer d.wg.Done()
903+
904+
infof("Starting static address open channel manager")
905+
err := openChannelManager.Run(d.mainCtx)
906+
if err != nil && !errors.Is(context.Canceled, err) {
907+
d.internalErrChan <- err
908+
}
909+
infof("Static address open channel manager stopped")
910+
}()
911+
}
882912

883913
// Start the static address loop-in manager.
884914
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{}
@@ -1732,13 +1734,14 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
17321734
}
17331735

17341736
var (
1735-
totalNumDeposits = len(allDeposits)
1736-
valueUnconfirmed int64
1737-
valueDeposited int64
1738-
valueExpired int64
1739-
valueWithdrawn int64
1740-
valueLoopedIn int64
1741-
htlcTimeoutSwept int64
1737+
totalNumDeposits = len(allDeposits)
1738+
valueUnconfirmed int64
1739+
valueDeposited int64
1740+
valueExpired int64
1741+
valueWithdrawn int64
1742+
valueLoopedIn int64
1743+
valueChannelsOpened int64
1744+
htlcTimeoutSwept int64
17421745
)
17431746

17441747
// Value unconfirmed.
@@ -1770,6 +1773,9 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
17701773

17711774
case deposit.HtlcTimeoutSwept:
17721775
htlcTimeoutSwept += value
1776+
1777+
case deposit.ChannelPublished:
1778+
valueChannelsOpened += value
17731779
}
17741780
}
17751781

@@ -1794,6 +1800,7 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
17941800
ValueExpiredSatoshis: valueExpired,
17951801
ValueWithdrawnSatoshis: valueWithdrawn,
17961802
ValueLoopedInSatoshis: valueLoopedIn,
1803+
ValueChannelsOpened: valueChannelsOpened,
17971804
ValueHtlcTimeoutSweepsSatoshis: htlcTimeoutSwept,
17981805
}, nil
17991806
}
@@ -1849,6 +1856,35 @@ func (s *swapClientServer) StaticAddressLoopIn(ctx context.Context,
18491856
}, nil
18501857
}
18511858

1859+
// StaticOpenChannel initiates an open channel request using static address
1860+
// deposits.
1861+
func (s *swapClientServer) StaticOpenChannel(ctx context.Context,
1862+
req *looprpc.OpenChannelRequest) (*looprpc.StaticOpenChannelResponse,
1863+
error) {
1864+
1865+
infof("Static open channel request received")
1866+
1867+
chanOpenTxHash, err := s.openChannelManager.DeliverOpenChannelRequest(
1868+
ctx, req,
1869+
)
1870+
1871+
var (
1872+
txHash string
1873+
errMsg string
1874+
)
1875+
if chanOpenTxHash != nil {
1876+
txHash = chanOpenTxHash.String()
1877+
}
1878+
if err != nil {
1879+
errMsg = err.Error()
1880+
}
1881+
1882+
return &looprpc.StaticOpenChannelResponse{
1883+
ChannelOpenTxHash: txHash,
1884+
Error: errMsg,
1885+
}, nil
1886+
}
1887+
18521888
type filterFunc func(deposits *deposit.Deposit) bool
18531889

18541890
func filter(deposits []*deposit.Deposit, f filterFunc) []*looprpc.Deposit {
@@ -1896,6 +1932,12 @@ func toClientDepositState(state fsm.StateType) looprpc.DepositState {
18961932
case deposit.LoopedIn:
18971933
return looprpc.DepositState_LOOPED_IN
18981934

1935+
case deposit.OpeningChannel:
1936+
return looprpc.DepositState_OPENING_CHANNEL
1937+
1938+
case deposit.ChannelPublished:
1939+
return looprpc.DepositState_CHANNEL_PUBLISHED
1940+
18991941
case deposit.SweepHtlcTimeout:
19001942
return looprpc.DepositState_SWEEP_HTLC_TIMEOUT
19011943

@@ -1975,6 +2017,12 @@ func toServerState(state looprpc.DepositState) fsm.StateType {
19752017
case looprpc.DepositState_LOOPED_IN:
19762018
return deposit.LoopedIn
19772019

2020+
case looprpc.DepositState_OPENING_CHANNEL:
2021+
return deposit.OpeningChannel
2022+
2023+
case looprpc.DepositState_CHANNEL_PUBLISHED:
2024+
return deposit.ChannelPublished
2025+
19782026
case looprpc.DepositState_SWEEP_HTLC_TIMEOUT:
19792027
return deposit.SweepHtlcTimeout
19802028

0 commit comments

Comments
 (0)