Skip to content

Commit 36743b4

Browse files
committed
loopd: instantiate static address open channel manager
1 parent e407cab commit 36743b4

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{}
@@ -1725,13 +1727,14 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
17251727
}
17261728

17271729
var (
1728-
totalNumDeposits = len(allDeposits)
1729-
valueUnconfirmed int64
1730-
valueDeposited int64
1731-
valueExpired int64
1732-
valueWithdrawn int64
1733-
valueLoopedIn int64
1734-
htlcTimeoutSwept int64
1730+
totalNumDeposits = len(allDeposits)
1731+
valueUnconfirmed int64
1732+
valueDeposited int64
1733+
valueExpired int64
1734+
valueWithdrawn int64
1735+
valueLoopedIn int64
1736+
valueChannelsOpened int64
1737+
htlcTimeoutSwept int64
17351738
)
17361739

17371740
// Value unconfirmed.
@@ -1763,6 +1766,9 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
17631766

17641767
case deposit.HtlcTimeoutSwept:
17651768
htlcTimeoutSwept += value
1769+
1770+
case deposit.ChannelPublished:
1771+
valueChannelsOpened += value
17661772
}
17671773
}
17681774

@@ -1787,6 +1793,7 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
17871793
ValueExpiredSatoshis: valueExpired,
17881794
ValueWithdrawnSatoshis: valueWithdrawn,
17891795
ValueLoopedInSatoshis: valueLoopedIn,
1796+
ValueChannelsOpened: valueChannelsOpened,
17901797
ValueHtlcTimeoutSweepsSatoshis: htlcTimeoutSwept,
17911798
}, nil
17921799
}
@@ -1842,6 +1849,35 @@ func (s *swapClientServer) StaticAddressLoopIn(ctx context.Context,
18421849
}, nil
18431850
}
18441851

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

18471883
func filter(deposits []*deposit.Deposit, f filterFunc) []*looprpc.Deposit {
@@ -1889,6 +1925,12 @@ func toClientDepositState(state fsm.StateType) looprpc.DepositState {
18891925
case deposit.LoopedIn:
18901926
return looprpc.DepositState_LOOPED_IN
18911927

1928+
case deposit.OpeningChannel:
1929+
return looprpc.DepositState_OPENING_CHANNEL
1930+
1931+
case deposit.ChannelPublished:
1932+
return looprpc.DepositState_CHANNEL_PUBLISHED
1933+
18921934
case deposit.SweepHtlcTimeout:
18931935
return looprpc.DepositState_SWEEP_HTLC_TIMEOUT
18941936

@@ -1968,6 +2010,12 @@ func toServerState(state looprpc.DepositState) fsm.StateType {
19682010
case looprpc.DepositState_LOOPED_IN:
19692011
return deposit.LoopedIn
19702012

2013+
case looprpc.DepositState_OPENING_CHANNEL:
2014+
return deposit.OpeningChannel
2015+
2016+
case looprpc.DepositState_CHANNEL_PUBLISHED:
2017+
return deposit.ChannelPublished
2018+
19712019
case looprpc.DepositState_SWEEP_HTLC_TIMEOUT:
19722020
return deposit.SweepHtlcTimeout
19732021

0 commit comments

Comments
 (0)