Package org.consensusj.bitcoin.services
Class WalletSigningService
java.lang.Object
org.consensusj.bitcoin.services.WalletSigningService
- All Implemented Interfaces:
SignTransactionService
,TransactionSigner
Transaction completion and signing service that uses a bitcoinj
Wallet
. This
service can find available UTXOs, build and sign transactions.-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptioncreateBitcoinSigningRequest
(List<TransactionInputData> inputUtxos, List<TransactionOutputData> outputs, org.bitcoinj.base.Address changeAddress) Create a signing request, given a list of inputs, a list of outputs and a change address.Optional
<org.bitcoinj.core.TransactionOutput> findUnspentOutput
(org.bitcoinj.base.Sha256Hash txId, int vout) CompletableFuture
<org.bitcoinj.core.Transaction> signSendToAddress
(org.bitcoinj.base.Address toAddress, org.bitcoinj.base.Coin amount) Create and sign a transaction to send coins to the specified address.CompletableFuture
<org.bitcoinj.core.Transaction> signTransaction
(RawTransactionSigningRequest rawRequest) CompletableFuture
<org.bitcoinj.core.Transaction> signTransaction
(SigningRequest request) Create a signed bitcoinj transaction from the signing request.
-
Constructor Details
-
WalletSigningService
-
-
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
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 interfaceTransactionSigner
- 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 interfaceSignTransactionService
- Parameters:
toAddress
- destination addressamount
- 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 interfaceSignTransactionService
- Parameters:
inputUtxos
- list of available UTXOsoutputs
- Outputs to send tochangeAddress
- 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
- txidvout
- output index- Returns:
- list of matching transaction outputs (bitcoinj objects)
-