github.com/decred/dcrlnd@v0.7.6/lnwallet/remotedcrwallet/extended_wallet.go (about) 1 package remotedcrwallet 2 3 import ( 4 "errors" 5 "io" 6 7 pb "decred.org/dcrwallet/v4/rpc/walletrpc" 8 "github.com/decred/dcrd/chaincfg/chainhash" 9 "github.com/decred/dcrd/dcrec/secp256k1/v4" 10 "github.com/decred/dcrd/txscript/v4/stdaddr" 11 "github.com/decred/dcrlnd/lnwallet" 12 "google.golang.org/grpc/codes" 13 "google.golang.org/grpc/status" 14 ) 15 16 var _ lnwallet.ExtendedWalletController = (*DcrWallet)(nil) 17 18 func (b *DcrWallet) DeriveNextAccount(name string) error { 19 return errors.New("unimplemented") 20 } 21 22 func (b *DcrWallet) ExportPrivKey(addr stdaddr.Address) (*secp256k1.PrivateKey, error) { 23 return nil, errors.New("unimplemented") 24 } 25 26 func (b *DcrWallet) RescanWallet(startHeight int32, progress func(height int32) error) error { 27 cli, err := b.wallet.Rescan(b.ctx, &pb.RescanRequest{BeginHeight: startHeight}) 28 if err != nil { 29 return err 30 } 31 32 for { 33 progr, err := cli.Recv() 34 if errors.Is(err, io.EOF) { 35 return nil 36 } 37 if err != nil { 38 return err 39 } 40 if progress != nil { 41 err := progress(progr.RescannedThrough) 42 if err != nil { 43 return err 44 45 } 46 } 47 } 48 } 49 50 func (b *DcrWallet) GetWalletTransaction(txh chainhash.Hash) (*lnwallet.WalletTransaction, error) { 51 req := &pb.GetTransactionRequest{ 52 TransactionHash: txh[:], 53 } 54 res, err := b.wallet.GetTransaction(b.ctx, req) 55 if status.Code(err) == codes.NotFound { 56 return nil, lnwallet.ErrWalletTxNotExist 57 } 58 if err != nil { 59 return nil, err 60 } 61 var bh *chainhash.Hash 62 if res.BlockHash != nil { 63 bh, err = chainhash.NewHash(res.BlockHash) 64 if err != nil { 65 return nil, err 66 } 67 } 68 return &lnwallet.WalletTransaction{ 69 RawTx: res.Transaction.Transaction, 70 Confirmations: res.Confirmations, 71 BlockHash: bh, 72 }, nil 73 }