Skip to content
Stateless cryptocurrency API
Go Nix
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows Rename workflow Jan 18, 2020
bitcoin Add copyright Jan 18, 2020
cardano Return real transaction ID instead of a signedTx Jan 19, 2020
ethereum Add copyright Jan 18, 2020
LICENSE Initial Jan 11, 2020
README.md Implements send for Cardano Jan 19, 2020
cryptocurrency.go Validate address method for Cardano Jan 19, 2020
cryptocurrency_test.go Add test Jan 18, 2020
go.mod Fix go modules Jan 18, 2020
go.sum Fix go modules Jan 18, 2020
shell.nix Add copyright Jan 18, 2020

README.md

GitHub Actions GoDoc Go Report Card Donate Donate

Cryptocurrency API

Stateless cryptocurrency API.

Requirements:

  • Bitcoin: electrum wallet in $PATH
  • Ethereum: export INFURA_API_KEY=... from infura.io (it's free). It'll work even without, but there are some limits on queries.

Start:

go get -u code.dumpstack.io/lib/cryptocurrency
go test -v code.dumpstack.io/lib/cryptocurrency/...

Usage:

package main

import (
	"log"

	"code.dumpstack.io/lib/cryptocurrency"
)

func main() {
	c := cryptocurrency.Bitcoin
	dest := "mk84dHbQoUHWaWGuYspx6GXWgcjB9CuQqw"
	// c := cryptocurrency.Ethereum
	// dest := "0xD98660C76443A8A043a19499048EeC4FB06f2581"
	// c := cryptocurrency.Cardano
	// dest := "Ae2tdPwUPEZ68cfEjZjKKRabiqbazMtP69uGaM2pMZRg87fvn4FGvR95BEV"

	err := c.Testnet(true)
	if err != nil {
		log.Fatal(err)
	}

	seed, address, err := c.GenWallet()
	if err != nil {
		log.Fatal(err)
	}
	log.Println(seed, address)

	balance, err := c.Balance(seed)
	log.Println(balance)
	if err != nil {
		log.Fatal(err)
	}

	valid, err := c.Validate(dest)
	if err != nil {
		log.Fatal(err)
	}
	if valid {
		log.Println("address", dest, "is valid")
	} else {
		log.Fatal("address", dest, "is invalid")
	}

	amount := float64(0.1)
	tx, err := c.Send(seed, dest, amount)
	// tx, err := c.SendUnits(seed, dest, wei) // precise version
	if err != nil {
		log.Println("here it'll exit because there's no money inside new wallet")
		log.Fatal(err)
	}
	log.Println(tx)
}
You can’t perform that action at this time.