Package 

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 Detail

      • ElectrumClient

        ElectrumClient(String url, String socks5)
        Creates a new bdk client from a electrum_client::ElectrumApi Optional: Set the proxy of the builder
    • Method Detail

      • blockHeadersPop

         HeaderNotification blockHeadersPop()

        Tries to pop one queued notification for a new block header that we might have received. Returns None if there are no items in the queue.

      • estimateFee

         Double estimateFee(ULong number)

        Estimates the fee required in bitcoin per kilobyte to confirm a transaction in number blocks.

      • fetchTx

         Transaction fetchTx(Txid txid)

        Fetch transaction of given Txid.

        If it hits the cache it will return the cached version and avoid making the request.

      • 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, see FullScanRequest.

        • 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 previous TxOuts 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 like Wallet.calculate_fee and Wallet.calculate_fee_rate will return a CalculateFeeError::MissingTxOut error if those TxOuts are not present in the transaction graph.

      • relayFee

         Double relayFee()

        Returns the minimum accepted fee by the server’s node in Bitcoin, not Satoshi.

      • 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, see SyncRequest.

        • batch_size: specifies the max number of script pubkeys to request for in a single batch request.

        • fetch_prev_txouts: specifies whether we want previous TxOuts 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 like Wallet.calculate_fee and Wallet.calculate_fee_rate will return a CalculateFeeError::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.