Skip to content

Commit 407635a

Browse files
committed
loopd: instantiate static address open channel manager
1 parent ae9e8d0 commit 407635a

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

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

625+
// Static address deposit open channel manager setup.
626+
openChannelCfg := &openchannel.Config{
627+
Server: staticAddressClient,
628+
AddressManager: staticAddressManager,
629+
DepositManager: depositManager,
630+
WalletKit: d.lnd.WalletKit,
631+
ChainParams: d.lnd.ChainParams,
632+
ChainNotifier: d.lnd.ChainNotifier,
633+
Signer: d.lnd.Signer,
634+
LightningClient: d.lnd.Client,
635+
}
636+
openChannelManager = openchannel.NewManager(openChannelCfg)
637+
623638
// Static address loop-in manager setup.
624639
staticAddressLoopInStore := loopin.NewSqlStore(
625640
loopdb.NewTypedStore[loopin.Querier](baseDb),
@@ -707,6 +722,7 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
707722
depositManager: depositManager,
708723
withdrawalManager: withdrawalManager,
709724
staticLoopInManager: staticLoopInManager,
725+
openChannelManager: openChannelManager,
710726
assetClient: d.assetClient,
711727
}
712728

@@ -942,6 +958,20 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
942958
cancel()
943959
}
944960
}
961+
// Start the static address open channel manager.
962+
if openChannelManager != nil {
963+
d.wg.Add(1)
964+
go func() {
965+
defer d.wg.Done()
966+
967+
infof("Starting static address open channel manager")
968+
err := openChannelManager.Run(d.mainCtx)
969+
if err != nil && !errors.Is(context.Canceled, err) {
970+
d.internalErrChan <- err
971+
}
972+
infof("Static address open channel manager stopped")
973+
}()
974+
}
945975

946976
// Start the static address loop-in manager.
947977
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{}
@@ -1788,13 +1790,14 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
17881790
}
17891791

17901792
var (
1791-
totalNumDeposits = len(allDeposits)
1792-
valueUnconfirmed int64
1793-
valueDeposited int64
1794-
valueExpired int64
1795-
valueWithdrawn int64
1796-
valueLoopedIn int64
1797-
htlcTimeoutSwept int64
1793+
totalNumDeposits = len(allDeposits)
1794+
valueUnconfirmed int64
1795+
valueDeposited int64
1796+
valueExpired int64
1797+
valueWithdrawn int64
1798+
valueLoopedIn int64
1799+
valueChannelsOpened int64
1800+
htlcTimeoutSwept int64
17981801
)
17991802

18001803
// Value unconfirmed.
@@ -1826,6 +1829,9 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
18261829

18271830
case deposit.HtlcTimeoutSwept:
18281831
htlcTimeoutSwept += value
1832+
1833+
case deposit.ChannelPublished:
1834+
valueChannelsOpened += value
18291835
}
18301836
}
18311837

@@ -1850,6 +1856,7 @@ func (s *swapClientServer) GetStaticAddressSummary(ctx context.Context,
18501856
ValueExpiredSatoshis: valueExpired,
18511857
ValueWithdrawnSatoshis: valueWithdrawn,
18521858
ValueLoopedInSatoshis: valueLoopedIn,
1859+
ValueChannelsOpened: valueChannelsOpened,
18531860
ValueHtlcTimeoutSweepsSatoshis: htlcTimeoutSwept,
18541861
}, nil
18551862
}
@@ -1905,6 +1912,35 @@ func (s *swapClientServer) StaticAddressLoopIn(ctx context.Context,
19051912
}, nil
19061913
}
19071914

1915+
// StaticOpenChannel initiates an open channel request using static address
1916+
// deposits.
1917+
func (s *swapClientServer) StaticOpenChannel(ctx context.Context,
1918+
req *looprpc.OpenChannelRequest) (*looprpc.StaticOpenChannelResponse,
1919+
error) {
1920+
1921+
infof("Static open channel request received")
1922+
1923+
chanOpenTxHash, err := s.openChannelManager.DeliverOpenChannelRequest(
1924+
ctx, req,
1925+
)
1926+
1927+
var (
1928+
txHash string
1929+
errMsg string
1930+
)
1931+
if chanOpenTxHash != nil {
1932+
txHash = chanOpenTxHash.String()
1933+
}
1934+
if err != nil {
1935+
errMsg = err.Error()
1936+
}
1937+
1938+
return &looprpc.StaticOpenChannelResponse{
1939+
ChannelOpenTxHash: txHash,
1940+
Error: errMsg,
1941+
}, nil
1942+
}
1943+
19081944
type filterFunc func(deposits *deposit.Deposit) bool
19091945

19101946
func filter(deposits []*deposit.Deposit, f filterFunc) []*looprpc.Deposit {
@@ -1952,6 +1988,12 @@ func toClientDepositState(state fsm.StateType) looprpc.DepositState {
19521988
case deposit.LoopedIn:
19531989
return looprpc.DepositState_LOOPED_IN
19541990

1991+
case deposit.OpeningChannel:
1992+
return looprpc.DepositState_OPENING_CHANNEL
1993+
1994+
case deposit.ChannelPublished:
1995+
return looprpc.DepositState_CHANNEL_PUBLISHED
1996+
19551997
case deposit.SweepHtlcTimeout:
19561998
return looprpc.DepositState_SWEEP_HTLC_TIMEOUT
19571999

@@ -2031,6 +2073,12 @@ func toServerState(state looprpc.DepositState) fsm.StateType {
20312073
case looprpc.DepositState_LOOPED_IN:
20322074
return deposit.LoopedIn
20332075

2076+
case looprpc.DepositState_OPENING_CHANNEL:
2077+
return deposit.OpeningChannel
2078+
2079+
case looprpc.DepositState_CHANNEL_PUBLISHED:
2080+
return deposit.ChannelPublished
2081+
20342082
case looprpc.DepositState_SWEEP_HTLC_TIMEOUT:
20352083
return deposit.SweepHtlcTimeout
20362084

0 commit comments

Comments
 (0)