A pure Go Electrum bitcoin library. This makes it easy to write bitcoin based services using Go without having to run a full bitcoin node.
This is very much WIP and has a number of unimplemented methods. This will eventually be rewritten into a more Go-esque library and handle wallet generation.
Packages provided
- electrum - Library for using JSON-RPC to talk directly to Electrum servers.
- wallet - A bitcoin wallet built on btcwallet with Electrum as the backend.
- irc - A helper module for finding electrum servers using the #electrum IRC channel on Freenode.
See example/ for more.
$ go get -u github.com/d4l3k/go-electrum/electrum
package main
import (
"log"
"github.com/d4l3k/go-electrum/electrum"
)
func main() {
node := electrum.NewNode()
if err := node.ConnectTCP("electrum.dragonzone.net:50001"); err != nil {
log.Fatal(err)
}
balance, err := node.BlockchainAddressGetBalance("1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L")
if err != nil {
log.Fatal(err)
}
log.Printf("Address balance: %+v", balance)
}
$ go get -u github.com/d4l3k/go-electrum/wallet
package main
import (
"log"
"github.com/btcsuite/btcutil"
"github.com/d4l3k/go-electrum/wallet"
)
func main() {
seed, err := hdkeychain.GenerateSeed(hdkeychain.RecommendedSeedLen)
if err != nil {
log.Fatal(err)
}
w, err := wallet.Create("test.wallet", "pass", seed)
if err != nil {
log.Fatal(err)
}
addrs, err := w.GenAddresses(1)
if err != nil {
log.Fatal(err)
}
log.Printf("Address: %s", addrs[0])
err = w.SendBitcoin(map[string]btcutil.Amount{
"18mS21JLSWJcTwKV8ZEv5SvroKAqkbYfPy": btcutil.NewAmount(1.0),
}, 6)
if err != nil {
log.Fatal(err)
}
}
$ go get -u github.com/d4l3k/go-electrum/irc
package main
import (
"log"
"github.com/d4l3k/go-electrum/irc"
)
func main() {
log.Println(irc.FindElectrumServers())
}
go-electrum is licensed under the MIT license.
Made by Tristan Rice.