package main
import (
"C" "encoding/json" "github.com/MinterTeam/minter-go-sdk/v2/transaction"
)
type SignParams struct {
TxHash string PrivateKey string
}
//export Sign func Sign(paramsJson *C.char) *C.char {
var params SignParams jsonBytes := []byte(C.GoString(paramsJson)) err := json.Unmarshal(jsonBytes, ¶ms) if err != nil { resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()}) return C.CString(string(resultJson)) } tx, err := transaction.Decode(params.TxHash) if err != nil { resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()}) return C.CString(string(resultJson)) } signedTx, err := tx.Sign(params.PrivateKey) if err != nil { resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()}) return C.CString(string(resultJson)) } encode, err := signedTx.Encode() if err != nil { resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()}) return C.CString(string(resultJson)) } resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode }) return C.CString(string(resultJson))
}
type MultiSignParams struct {
TxHash string MultisigAddress string PrivateKeys []string
}
//export MultiSign func MultiSign(paramsJson *C.char) *C.char {
var params MultiSignParams jsonBytes := []byte(C.GoString(paramsJson)) err := json.Unmarshal(jsonBytes, ¶ms) if err != nil { resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()}) return C.CString(string(resultJson)) } signedTx, err := transaction.Decode(params.TxHash) if err != nil { resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()}) return C.CString(string(resultJson)) } signedTx, err = signedTx.Sign(params.MultisigAddress, params.PrivateKeys... ) if err != nil { resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()}) return C.CString(string(resultJson)) } encode, err := signedTx.Encode() if err != nil { resultJson, _ := json.Marshal(map[string]string{"success": "false", "error": err.Error()}) return C.CString(string(resultJson)) } resultJson, _ := json.Marshal(map[string]string{"success": "true", "tx_hash": encode }) return C.CString(string(resultJson))
}
func main() {}