Skip to content

A pure Go ElectrumX JSON-RPC library.

License

Notifications You must be signed in to change notification settings

lamengao/go-electrum

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-electrum GoDoc

This project is a fork of checksum0/go-electrum. A pure Go Electrum bitcoin library supporting the latest ElectrumX protocol versions.
This makes it easy to write cryptocurrencies based services in a trustless fashion using Go without having to run a full node.

go-electrum

Usage

See example/ for more.

electrum GoDoc

$ go get github.com/lamengao/go-electrum
package main

import (
	"context"
	"log"
	"time"

	"github.com/lamengao/go-electrum/electrum"
)

func main() {
	// Establishing a new SSL connection to an ElectrumX server
	client := electrum.NewClient()
	if err := client.ConnectTCP(context.TODO(), "bch.imaginary.cash:50001"); err != nil {
		log.Fatal(err)
	}
    ctx := context.TODO()
	// Making sure connection is not closed with timed "client.ping" call
	go func() {
		for {
			if err := client.Ping(ctx); err != nil {
				log.Fatal(err)
			}
			time.Sleep(60 * time.Second)
		}
	}()

	// Making sure we declare to the server what protocol we want to use
	if _, _, err := client.ServerVersion(ctx); err != nil {
		log.Fatal(err)
	}

	// Asking the server for the balance of address 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
	// 8b01df4e368ea28f8dc0423bcf7a4923e3a12d307c875e47a0cfbf90b5c39161
	// We must use scripthash of the address now as explained in ElectrumX docs
	scripthash, _ := electrum.AddressToElectrumScriptHash("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa")
	balance, err := client.GetBalance(ctx, scripthash)
	if err != nil {
		log.Fatal(err)
	}
	log.Printf("Address confirmed balance:   %+v", balance.Confirmed)
	log.Printf("Address unconfirmed balance: %+v", balance.Unconfirmed)
}

License

go-electrum is licensed under the MIT license. See LICENSE file for more details.

Copyright (c) 2022 Roman Maklakov
Copyright (c) 2019 Ian Descôteaux
Copyright (c) 2015 Tristan Rice

Based on Tristan Rice go-electrum unmaintained library.

About

A pure Go ElectrumX JSON-RPC library.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%