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  }