1- package staticaddr
1+ package address
22
33import (
44 "bytes"
@@ -12,6 +12,7 @@ import (
1212 "github.com/btcsuite/btcd/chaincfg"
1313 "github.com/lightninglabs/lndclient"
1414 "github.com/lightninglabs/loop"
15+ "github.com/lightninglabs/loop/staticaddr"
1516 "github.com/lightninglabs/loop/staticaddr/script"
1617 "github.com/lightninglabs/loop/swap"
1718 staticaddressrpc "github.com/lightninglabs/loop/swapserverrpc"
@@ -31,7 +32,7 @@ type ManagerConfig struct {
3132
3233 // Store is the database store that is used to store static address
3334 // related records.
34- Store AddressStore
35+ Store Store
3536
3637 // WalletKit is the wallet client that is used to derive new keys from
3738 // lnd's wallet.
@@ -46,31 +47,20 @@ type ManagerConfig struct {
4647type Manager struct {
4748 cfg * ManagerConfig
4849
49- initChan chan struct {}
50-
5150 sync.Mutex
5251}
5352
54- // NewAddressManager creates a new address manager.
55- func NewAddressManager (cfg * ManagerConfig ) * Manager {
53+ // NewManager creates a new address manager.
54+ func NewManager (cfg * ManagerConfig ) * Manager {
5655 return & Manager {
57- cfg : cfg ,
58- initChan : make (chan struct {}),
56+ cfg : cfg ,
5957 }
6058}
6159
6260// Run runs the address manager.
6361func (m * Manager ) Run (ctx context.Context ) error {
64- log .Debugf ("Starting address manager." )
65- defer log .Debugf ("Address manager stopped." )
66-
67- // Communicate to the caller that the address manager has completed its
68- // initialization.
69- close (m .initChan )
70-
7162 <- ctx .Done ()
72-
73- return nil
63+ return ctx .Err ()
7464}
7565
7666// NewAddress starts a new address creation flow.
@@ -113,7 +103,7 @@ func (m *Manager) NewAddress(ctx context.Context) (*btcutil.AddressTaproot,
113103
114104 // Send our clientPubKey to the server and wait for the server to
115105 // respond with he serverPubKey and the static address CSV expiry.
116- protocolVersion := CurrentRPCProtocolVersion ()
106+ protocolVersion := staticaddr . CurrentRPCProtocolVersion ()
117107 resp , err := m .cfg .AddressClient .ServerNewAddress (
118108 ctx , & staticaddressrpc.ServerNewAddressRequest {
119109 ProtocolVersion : protocolVersion ,
@@ -146,7 +136,7 @@ func (m *Manager) NewAddress(ctx context.Context) (*btcutil.AddressTaproot,
146136
147137 // Create the static address from the parameters the server provided and
148138 // store all parameters in the database.
149- addrParams := & AddressParameters {
139+ addrParams := & Parameters {
150140 ClientPubkey : clientPubKey .PubKey ,
151141 ServerPubkey : serverPubKey ,
152142 PkScript : pkScript ,
@@ -155,7 +145,9 @@ func (m *Manager) NewAddress(ctx context.Context) (*btcutil.AddressTaproot,
155145 Family : clientPubKey .Family ,
156146 Index : clientPubKey .Index ,
157147 },
158- ProtocolVersion : AddressProtocolVersion (protocolVersion ),
148+ ProtocolVersion : staticaddr .AddressProtocolVersion (
149+ protocolVersion ,
150+ ),
159151 }
160152 err = m .cfg .Store .CreateStaticAddress (ctx , addrParams )
161153 if err != nil {
@@ -197,12 +189,6 @@ func (m *Manager) getTaprootAddress(clientPubkey,
197189 )
198190}
199191
200- // WaitInitComplete waits until the address manager has completed its setup.
201- func (m * Manager ) WaitInitComplete () {
202- defer log .Debugf ("Address manager initiation complete." )
203- <- m .initChan
204- }
205-
206192// ListUnspentRaw returns a list of utxos at the static address.
207193func (m * Manager ) ListUnspentRaw (ctx context.Context , minConfs ,
208194 maxConfs int32 ) (* btcutil.AddressTaproot , []* lnwallet.Utxo , error ) {
@@ -213,7 +199,7 @@ func (m *Manager) ListUnspentRaw(ctx context.Context, minConfs,
213199 return nil , nil , err
214200
215201 case len (addresses ) == 0 :
216- return nil , nil , fmt . Errorf ( "no address found" )
202+ return nil , nil , nil
217203
218204 case len (addresses ) > 1 :
219205 return nil , nil , fmt .Errorf ("more than one address found" )
@@ -249,3 +235,52 @@ func (m *Manager) ListUnspentRaw(ctx context.Context, minConfs,
249235
250236 return taprootAddress , filteredUtxos , nil
251237}
238+
239+ // GetStaticAddressParameters returns the parameters of the static address.
240+ func (m * Manager ) GetStaticAddressParameters (ctx context.Context ) (* Parameters ,
241+ error ) {
242+
243+ params , err := m .cfg .Store .GetAllStaticAddresses (ctx )
244+ if err != nil {
245+ return nil , err
246+ }
247+
248+ if len (params ) == 0 {
249+ return nil , fmt .Errorf ("no static address parameters found" )
250+ }
251+
252+ return params [0 ], nil
253+ }
254+
255+ // GetStaticAddress returns a taproot address for the given client and server
256+ // public keys and expiry.
257+ func (m * Manager ) GetStaticAddress (ctx context.Context ) (* script.StaticAddress ,
258+ error ) {
259+
260+ params , err := m .GetStaticAddressParameters (ctx )
261+ if err != nil {
262+ return nil , err
263+ }
264+
265+ address , err := script .NewStaticAddress (
266+ input .MuSig2Version100RC2 , int64 (params .Expiry ),
267+ params .ClientPubkey , params .ServerPubkey ,
268+ )
269+ if err != nil {
270+ return nil , err
271+ }
272+
273+ return address , nil
274+ }
275+
276+ // ListUnspent returns a list of utxos at the static address.
277+ func (m * Manager ) ListUnspent (ctx context.Context , minConfs ,
278+ maxConfs int32 ) ([]* lnwallet.Utxo , error ) {
279+
280+ _ , utxos , err := m .ListUnspentRaw (ctx , minConfs , maxConfs )
281+ if err != nil {
282+ return nil , err
283+ }
284+
285+ return utxos , nil
286+ }
0 commit comments