mirror of
https://github.com/planetmint/planetmint-go.git
synced 2025-03-30 15:08:28 +00:00
Use elements RPC library (#225)
* Use elements RPC library // Closes #218 Signed-off-by: Julian Strobl <jmastr@mailbox.org>
This commit is contained in:
parent
2b19b8194b
commit
7b381f3313
2
go.mod
2
go.mod
@ -21,7 +21,7 @@ require (
|
||||
github.com/grpc-ecosystem/grpc-gateway v1.16.0
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2
|
||||
github.com/planetmint/planetmint-go/lib v0.2.1
|
||||
github.com/rddl-network/elements-rpc v0.2.0
|
||||
github.com/rddl-network/elements-rpc v0.3.0
|
||||
github.com/spf13/cast v1.5.0
|
||||
github.com/spf13/cobra v1.6.1
|
||||
github.com/spf13/pflag v1.0.5
|
||||
|
4
go.sum
4
go.sum
@ -889,8 +889,8 @@ github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Ung
|
||||
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
|
||||
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||
github.com/rddl-network/elements-rpc v0.2.0 h1:xZCbNZaeVYO2gVnwYUF25/aPKcCYcOwjUZM0hb1C/xI=
|
||||
github.com/rddl-network/elements-rpc v0.2.0/go.mod h1:WOSYDMhq+V74lReSInnSejbdEyGI8hiQZSn4cSoFuxo=
|
||||
github.com/rddl-network/elements-rpc v0.3.0 h1:riPjQWy/aUMeDnOPpRgMB8ddCVmvQX7XVWBYCi/BZ5Q=
|
||||
github.com/rddl-network/elements-rpc v0.3.0/go.mod h1:WOSYDMhq+V74lReSInnSejbdEyGI8hiQZSn4cSoFuxo=
|
||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
|
@ -1,70 +1,40 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"os/exec"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/planetmint/planetmint-go/config"
|
||||
elements "github.com/rddl-network/elements-rpc"
|
||||
)
|
||||
|
||||
type ReissueResult struct {
|
||||
Txid string `json:"txid"`
|
||||
Vin int `json:"vin"`
|
||||
}
|
||||
|
||||
func ReissueAsset(reissueTx string) (txid string, err error) {
|
||||
func ReissueAsset(reissueTx string) (txID string, err error) {
|
||||
conf := config.GetConfig()
|
||||
url := conf.GetRPCURL()
|
||||
cmdArgs := strings.Split(reissueTx, " ")
|
||||
cmd := exec.Command("/usr/local/bin/elements-cli", "-rpcpassword="+conf.RPCPassword,
|
||||
"-rpcuser="+conf.RPCUser, "-rpcport="+strconv.Itoa(conf.RPCPort), "-rpcconnect="+conf.RPCHost,
|
||||
cmdArgs[0], cmdArgs[1], cmdArgs[2])
|
||||
|
||||
var stdout, stderr bytes.Buffer
|
||||
cmd.Stdout = &stdout
|
||||
cmd.Stderr = &stderr
|
||||
|
||||
err = cmd.Run()
|
||||
errstr := stderr.String()
|
||||
|
||||
if err != nil || len(errstr) > 0 {
|
||||
err = errors.New("reissuance of RDDL failed: " + errstr)
|
||||
} else {
|
||||
var txobj ReissueResult
|
||||
err = json.Unmarshal(stdout.Bytes(), &txobj)
|
||||
if err == nil {
|
||||
txid = txobj.Txid
|
||||
}
|
||||
result, err := elements.ReissueAsset(url, []string{cmdArgs[1], cmdArgs[2]})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return txid, err
|
||||
txID = result.TxID
|
||||
return
|
||||
}
|
||||
|
||||
func DistributeAsset(address string, amount string) (txid string, err error) {
|
||||
func DistributeAsset(address string, amount string) (txID string, err error) {
|
||||
conf := config.GetConfig()
|
||||
cmd := exec.Command("/usr/local/bin/elements-cli", "-rpcpassword="+conf.RPCPassword,
|
||||
"-rpcuser="+conf.RPCUser, "-rpcport="+strconv.Itoa(conf.RPCPort), "-rpcconnect="+conf.RPCHost,
|
||||
"sendtoaddress", address, amount, "", "", "false", "true", "null", "\"unset\"", "false",
|
||||
"\""+conf.ReissuanceAsset+"\"")
|
||||
url := conf.GetRPCURL()
|
||||
|
||||
var stdout, stderr bytes.Buffer
|
||||
cmd.Stdout = &stdout
|
||||
cmd.Stderr = &stderr
|
||||
|
||||
err = cmd.Run()
|
||||
errstr := stderr.String()
|
||||
|
||||
if err != nil || len(errstr) > 0 {
|
||||
errormessage := "distribution of RDDL failed for " + address
|
||||
err = errors.New(errormessage)
|
||||
} else {
|
||||
var txobj ReissueResult
|
||||
err = json.Unmarshal(stdout.Bytes(), &txobj)
|
||||
if err == nil {
|
||||
txid = txobj.Txid
|
||||
}
|
||||
}
|
||||
return txid, err
|
||||
txID, err = elements.SendToAddress(url, []string{
|
||||
address,
|
||||
`"` + amount + `"`,
|
||||
`""`,
|
||||
`""`,
|
||||
"false",
|
||||
"true",
|
||||
"null",
|
||||
`"unset"`,
|
||||
"false",
|
||||
`"` + conf.ReissuanceAsset + `"`,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user