Class ElectrumClient
-
- All Implemented Interfaces:
-
java.lang.AutoCloseable
,org.bitcoindevkit.Disposable
,org.bitcoindevkit.ElectrumClientInterface
public class ElectrumClient implements Disposable, AutoCloseable, ElectrumClientInterface
Wrapper around an electrum_client::ElectrumApi which includes an internal in-memory transaction cache to avoid re-fetching already downloaded transactions.
-
-
Constructor Summary
Constructors Constructor Description ElectrumClient(Pointer pointer)
ElectrumClient(NoPointer noPointer)
This constructor can be used to instantiate a fake object. ElectrumClient(String url)
Creates a new bdk client from a electrum_client::ElectrumApi
-
Method Summary
Modifier and Type Method Description Unit
destroy()
Unit
close()
final Pointer
uniffiClonePointer()
HeaderNotification
blockHeadersSubscribe()
Subscribes to notifications for new block headers, by sending a blockchain.headers.subscribe call. Double
estimateFee(ULong number)
Estimates the fee required in bitcoin per kilobyte to confirm a transaction in number
blocks.Update
fullScan(FullScanRequest request, ULong stopGap, ULong batchSize, Boolean fetchPrevTxouts)
Full scan the keychain scripts specified with the blockchain (via an Electrum client) and returns updates for bdk_chain data structures. Unit
ping()
Pings the server. ServerFeaturesRes
serverFeatures()
Returns the capabilities of the server. Update
sync(SyncRequest request, ULong batchSize, Boolean fetchPrevTxouts)
Sync a set of scripts with the blockchain (via an Electrum client) for the data specified and returns updates for bdk_chain data structures. String
transactionBroadcast(Transaction tx)
Broadcasts a transaction to the network.
-
-
-
Constructor Detail
-
ElectrumClient
ElectrumClient(Pointer pointer)
-
ElectrumClient
ElectrumClient(NoPointer noPointer)
This constructor can be used to instantiate a fake object.
-
ElectrumClient
ElectrumClient(String url)
Creates a new bdk client from a electrum_client::ElectrumApi
-
-
Method Detail
-
uniffiClonePointer
final Pointer uniffiClonePointer()
-
blockHeadersSubscribe
HeaderNotification blockHeadersSubscribe()
Subscribes to notifications for new block headers, by sending a blockchain.headers.subscribe call.
-
estimateFee
Double estimateFee(ULong number)
Estimates the fee required in bitcoin per kilobyte to confirm a transaction in
number
blocks.
-
fullScan
Update fullScan(FullScanRequest request, ULong stopGap, ULong batchSize, Boolean fetchPrevTxouts)
Full scan the keychain scripts specified with the blockchain (via an Electrum client) and returns updates for bdk_chain data structures.
request
: struct with data required to perform a spk-based blockchain client full scan, seeFullScanRequest
.stop_gap
: the full scan for each keychain stops after a gap of script pubkeys with no associated transactions.batch_size
: specifies the max number of script pubkeys to request for in a single batch request.fetch_prev_txouts
: specifies whether we want previousTxOuts
for fee calculation. Note that this requires additional calls to the Electrum server, but is necessary for calculating the fee on a transaction if your wallet does not own the inputs. Methods likeWallet.calculate_fee
andWallet.calculate_fee_rate
will return aCalculateFeeError::MissingTxOut
error if those TxOuts are not present in the transaction graph.
-
serverFeatures
ServerFeaturesRes serverFeatures()
Returns the capabilities of the server.
-
sync
Update sync(SyncRequest request, ULong batchSize, Boolean fetchPrevTxouts)
Sync a set of scripts with the blockchain (via an Electrum client) for the data specified and returns updates for bdk_chain data structures.
request
: struct with data required to perform a spk-based blockchain client sync, seeSyncRequest
.batch_size
: specifies the max number of script pubkeys to request for in a single batch request.fetch_prev_txouts
: specifies whether we want previousTxOuts
for fee calculation. Note that this requires additional calls to the Electrum server, but is necessary for calculating the fee on a transaction if your wallet does not own the inputs. Methods likeWallet.calculate_fee
andWallet.calculate_fee_rate
will return aCalculateFeeError::MissingTxOut
error if those TxOuts are not present in the transaction graph.
If the scripts to sync are unknown, such as when restoring or importing a keychain that may include scripts that have been used, use full_scan with the keychain.
-
transactionBroadcast
String transactionBroadcast(Transaction tx)
Broadcasts a transaction to the network.
-
-