Make requests to an Electrum Server via Swift.

This package supports TCP, TLS, SSL, UDP, DTLS and not tor. The returning Objects are the same as in the MempoolKit. Also the Electrum Struct conforms to the BlockExplorer protocol, which means you can ether use MempoolKit or ElectrumKit

var blockexplorer: BlockExplorer = Mempool()
blockexplorer = Electrum(hostName: "bitcoin.lukechilds.co", port: 50001, using: .tcp)


Initialise Electrum

let electrum = Electrum(hostName: "bitcoin.lukechilds.co", port: 50001, using: .tcp)

If you want debug logs you can turn set debug to true.


let version = try await electrum.version()

Returns the version of the Electrum Server in a String.

Blocktip Height

let blockTip = try await electrum.getBlockTip()

Returns the blockheight of the latest block.


let tx = try await electrum.transaction(txid: "54b34ca8a627105a1d2a6c0a2224ba3394ca5dcd70ecf62ed43e334129b654d0")

Returns the transactions with all the prevouts. If this transaction is huge and has a lot of entries and exits, this method might take a lot of time or even throw an error. If you dont need all the prevouts its way faster:

let tx = try await electrum.transaction(txid: "54b34ca8a627105a1d2a6c0a2224ba3394ca5dcd70ecf62ed43e334129b654d0", withPrevOut: false)

Send Transaction

let txid = try await electrum.sendTransaction(hex: transactionHex)

Broadcast a raw transaction in hex format.

Recommended Fees

let recommendedFees = try await electrum.recommendedFees()

Returns the recommended Fees.

Address Transactions

let txs = try await electrum.addressTXS(address: "1Ecc7owFDacRgjcm2Vfw17eW2zM5Gjg4SX")

Returns all confirmed and unconfirmed transactions from a address.

Address Mempool Transactions

let mempoolTX = try await electrum.getMempoolTX(address: "1Ecc7owFDacRgjcm2Vfw17eW2zM5Gjg4SX")

Returns all unconfirmed transactions from a address.

Address UTXOs

let utxos = try await electrum.addressUTXOs(address: "1Ecc7owFDacRgjcm2Vfw17eW2zM5Gjg4SX")

Returns all the UTXOs from an address.

Transactions Outspends

let outspends = try await electrum.transactionOutspends(txid: "a00e4ff182014fe854e8278c8ba8d3f25bd564c8e94cdaa746fbfe7c15cc1d6c")

Returns which UTXOs in a transaction is spent.


View Github