Stateless cryptocurrency API
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dump_stack() 1f2ef5df25
Follow redirect
4 月之前
.github/workflows Follow redirect 4 月之前
bitcoin Increase electrum synchronization timeout to 3 minutes 5 月之前
cardano Generate 15-words mnemonic (#8) 5 月之前
ethereum Support latest infura API 5 月之前
LICENSE Initial 9 月之前
README.md Fix go mod major version 5 月之前
cryptocurrency.go Fix go mod major version 5 月之前
cryptocurrency_test.go Add test 9 月之前
go.mod Fix go mod major version 5 月之前
go.sum Update go-ext-wasm 5 月之前
shell.nix Add copyright 9 月之前

README.md

GitHub Actions GoDoc Go Report Card Donate Donate

Cryptocurrency API

Stateless cryptocurrency API.

Requirements:

  • Bitcoin: electrum wallet in $PATH
  • Ethereum: export INFURA_PROJECT_ID=... 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/v2
go test -v code.dumpstack.io/lib/cryptocurrency/v2/...

Usage:

package main

import (
	"log"

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

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)
}