💸 Javascript ElectrumX client with TCP socket and websocket support
Switch branches/tags
Clone or download
Pull request Compare This branch is 63 commits ahead of you21979:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
example
protocol
src
.gitignore
LICENSE
README.md
package-lock.json
package.json
tsconfig.json
tslint.json

README.md

js-standard-style TypeScript

stability-wip

electrumjs

Electrum Protocol Client for NodeJS

npm i electrumjs

IMPORTANT

Note that this is a work in progress and it is not ready for production whatsoever. The package has not even been published to NPM yet. Proceed at your own risk.

About Electrum

https://electrum.org/

Electrum is widely used lightweight bitcoin wallet service. The project maintains a client and a server.

This library provides a simple interface for a connection with an ElectrumX server.

Check the Electrum protocol documentation

Features

  • Implements JSON-RPC 2.0 over TCP / TLS
  • Supports subscriptions and notifications
  • High performance
  • Easy to use high level interface

To do

  • Batch requests
  • Websocket support
  • Complete set of unit and integration tests
  • Split into a JSON-RPC Web/Socket module and the electrumx client module

Usage

const electrumclient = require('electrum-client')
const Client = electrumclient.Client

// version control interface
const ElectrumProtocol = electrumclient.v1.ElectrumProtocol

const proc = async (ecl) => {
    const balance = await ecl.blockchain_address_getBalance("12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX")
    console.log(balance)
    const unspent = await ecl.blockchain_address_listunspent("12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX")
    console.log(unspent)

    const tx1 = await ecl.blockchain_transaction_get("f91d0a8a78462bc59398f2c5d7a84fcff491c26ba54c4833478b202796c8aafd")
    console.log(tx1)
}

const main = async () => {
    // autogenerate client name
    const myname = [ElectrumProtocol.libname, ElectrumProtocol.hash].join('-')
    console.log(myname)

    // initialize
    const ecl = new ElectrumProtocol(new Client(995, 'btc.smsys.me', 'tls'))

    // wait a connection
    await ecl.client.connect()

    try{
        // negotiation protocol
        const res = await ecl.server_version(myname)
        console.log(res)
    }catch(e){
        // negotiation error
        await ecl.client.close()
        console.log(e)
        return;
    }

    try{
        await proc(ecl)
    }catch(e){
        console.log(e)
    }
    await ecl.client.close()
}
main().catch(console.log)