Class WalletSigningService

java.lang.Object
org.consensusj.bitcoin.services.WalletSigningService
All Implemented Interfaces:
SignTransactionService, TransactionSigner

public class WalletSigningService extends Object implements SignTransactionService
Transaction completion and signing service that uses a bitcoinj Wallet. This service can find available UTXOs, build and sign transactions.
  • Constructor Details

  • Method Details

    • signTransaction

      public CompletableFuture<org.bitcoinj.core.Transaction> signTransaction(RawTransactionSigningRequest rawRequest)
      Parameters:
      rawRequest - "raw" signing request with UTXO hash, index information only
      Returns:
      A (future) signed transaction
    • signTransaction

      public CompletableFuture<org.bitcoinj.core.Transaction> signTransaction(SigningRequest request)
      Description copied from interface: TransactionSigner
      Create a signed bitcoinj transaction from the signing request. This is asynchronous because user (or other) confirmation may be required.
      Specified by:
      signTransaction in interface TransactionSigner
      Parameters:
      request - "complete" signing request with UTXO hash, index, amount, scriptPubKey
      Returns:
      A (future) signed transaction
    • signSendToAddress

      public CompletableFuture<org.bitcoinj.core.Transaction> signSendToAddress(org.bitcoinj.base.Address toAddress, org.bitcoinj.base.Coin amount) throws IOException, org.bitcoinj.core.InsufficientMoneyException
      Create and sign a transaction to send coins to the specified address. Implements the transaction-building and signing portion of `sendtoaddress` RPC.
      Specified by:
      signSendToAddress in interface SignTransactionService
      Parameters:
      toAddress - destination address
      amount - amount to send
      Returns:
      a future signed transaction
      Throws:
      IOException
      org.bitcoinj.core.InsufficientMoneyException
    • createBitcoinSigningRequest

      public SigningRequest createBitcoinSigningRequest(List<TransactionInputData> inputUtxos, List<TransactionOutputData> outputs, org.bitcoinj.base.Address changeAddress) throws org.bitcoinj.core.InsufficientMoneyException
      Description copied from interface: SignTransactionService
      Create a signing request, given a list of inputs, a list of outputs and a change address. Calculates the fee, adds a change output, and returns a completed signing request.
      Specified by:
      createBitcoinSigningRequest in interface SignTransactionService
      Parameters:
      inputUtxos - list of available UTXOs
      outputs - Outputs to send to
      changeAddress - address that will receive change
      Returns:
      a completed transaction signing request
      Throws:
      org.bitcoinj.core.InsufficientMoneyException
    • findUtxo

    • findUnspentOutput

      public Optional<org.bitcoinj.core.TransactionOutput> findUnspentOutput(org.bitcoinj.base.Sha256Hash txId, int vout)
      Parameters:
      txId - txid
      vout - output index
      Returns:
      list of matching transaction outputs (bitcoinj objects)