Giter Site home page Giter Site logo

randomnerd / electrumjs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from daniguardiola/electrumjs

1.0 1.0 0.0 358 KB

๐Ÿ’ธ Javascript ElectrumX client with TCP socket and websocket support

License: MIT License

JavaScript 51.19% TypeScript 48.81%

electrumjs's Introduction

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('electrumjs')
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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.