// build deploy contract tx
buildTxCmd.PersistentFlags().StringVar(&ip, "ip", "127.0.0.1", "network address")
buildTxCmd.PersistentFlags().StringVar(&port, "port", "3000", "network port")
+
+ // submit tx
+ submitPaymentCmd.PersistentFlags().StringVar(&spendUTXOSig, "spendUTXOSig", "", "spend UTXO Signature")
+ submitPaymentCmd.PersistentFlags().StringVar(&spendUTXOPublicKey, "spendUTXOPublicKey", "", "spend UTXO PublicKey")
+ submitPaymentCmd.PersistentFlags().StringVar(&spendWalletSig, "spendWalletSig", "", "spend Wallet Signature")
+ submitPaymentCmd.PersistentFlags().StringVar(&preimage, "preimage", "", "preimage")
+ submitPaymentCmd.PersistentFlags().StringVar(&ip, "ip", "127.0.0.1", "network address")
+ submitPaymentCmd.PersistentFlags().StringVar(&port, "port", "3000", "network port")
}
var (
// unlock contract paramenters
contractUTXOID = ""
buyer = ""
+
+ //
+ spendUTXOSig = ""
+ spendUTXOPublicKey = ""
+ spendWalletSig = ""
)
var (
}
var signMessageCmd = &cobra.Command{
- Use: "sign [xprv] [message]",
+ Use: "sign <xprv> <message>",
Short: "sign message",
Args: cobra.ExactArgs(2),
Run: func(cmd *cobra.Command, args []string) {
},
}
+var submitPaymentCmd = &cobra.Command{
+ Use: "submit <action> <guid> <rawTx> [spend parameters] [URL flags(ip and port)]",
+ Short: "submit a payment",
+ Args: cobra.ExactArgs(3),
+ Run: func(cmd *cobra.Command, args []string) {
+ action := args[0]
+ guid := args[1]
+ if len(guid) == 0 {
+ fmt.Println("The part field of guid is invalid:", guid)
+ os.Exit(0)
+ }
+
+ rawTx := args[2]
+ if _, err := hex.DecodeString(rawTx); err != nil {
+ fmt.Println("The part field of rawTx is invalid:", rawTx)
+ os.Exit(0)
+ }
+
+ spendUTXOSignatures := []string{}
+ spendWalletSignatures := []string{}
+ sigs := [][]string{}
+ switch action {
+ case "deployHTLC":
+ if _, err := hex.DecodeString(spendUTXOSig); err != nil || len(spendUTXOSig) != 128 {
+ fmt.Println("The part field of spendUTXOSig is invalid:", spendUTXOSig)
+ os.Exit(0)
+ }
+
+ if _, err := hex.DecodeString(spendUTXOPublicKey); err != nil || len(spendUTXOPublicKey) != 64 {
+ fmt.Println("The part field of spendUTXOPublicKey is invalid:", spendUTXOPublicKey)
+ os.Exit(0)
+ }
+
+ if _, err := hex.DecodeString(spendWalletSig); err != nil || len(spendWalletSig) != 128 {
+ fmt.Println("The part field of spendWalletSig is invalid:", spendWalletSig)
+ os.Exit(0)
+ }
+
+ spendUTXOSignatures = append(spendUTXOSignatures, spendUTXOSig, spendUTXOPublicKey)
+
+ default:
+ fmt.Println("action is invalid:", action)
+ os.Exit(0)
+ }
+ spendWalletSignatures = append(spendWalletSignatures, spendWalletSig)
+ sigs = append(sigs, spendUTXOSignatures, spendWalletSignatures)
+
+ server := &swap.Server{
+ IP: ip,
+ Port: port,
+ }
+ res, err := swap.SubmitPayment(server, guid, rawTx, "", sigs)
+ if err != nil {
+ fmt.Println("submit tx err:", err)
+ os.Exit(0)
+ }
+
+ fmt.Printf("submit %s tx result: %s\n", action, res)
+ },
+}
+
var callTradeoffCmd = &cobra.Command{
Use: "callTradeoff <accountID> <password> <buyer-program> <contractUTXOID> [txFee flag] [URL flags(ip and port)]",
Short: "call tradeoff contract for asset swapping",
swapCmd.AddCommand(equityCmd)
swapCmd.AddCommand(buildTxCmd)
swapCmd.AddCommand(signMessageCmd)
+ swapCmd.AddCommand(submitPaymentCmd)
if err := swapCmd.Execute(); err != nil {
os.Exit(0)
}
TxID string `json:"transaction_hash"`
}
-// submitPayment submit raw transaction and return transaction ID.
-func submitPayment(s *Server, guid, rawTx, memo string, sigs [][]string) (string, error) {
+// SubmitPayment submit raw transaction and return transaction ID.
+func SubmitPayment(s *Server, guid, rawTx, memo string, sigs [][]string) (string, error) {
payload, err := json.Marshal(submitPaymentReq{
GUID: guid,
RawTx: rawTx,
spendUTXOSignatures := append([]string{}, spendUTXOSig, spendUTXOPublicKey)
spendWalletSignatures := append([]string{}, spendWalletSig)
sigs := append([][]string{}, spendUTXOSignatures, spendWalletSignatures)
- txID, err := submitPayment(server, guid, rawTx, memo, sigs)
+ txID, err := SubmitPayment(server, guid, rawTx, memo, sigs)
if err != nil {
fmt.Println(err)
}
spendUTXOSignatures := append([]string{}, preimage, spendUTXOSig, "")
spendWalletSignatures := append([]string{}, spendWalletSig)
sigs := append([][]string{}, spendUTXOSignatures, spendWalletSignatures)
- txID, err := submitPayment(server, guid, rawTx, memo, sigs)
+ txID, err := SubmitPayment(server, guid, rawTx, memo, sigs)
if err != nil {
fmt.Println(err)
}
spendUTXOSignatures := append([]string{}, spendUTXOSig)
spendWalletSignatures := append([]string{}, spendWalletSig)
sigs := append([][]string{}, spendUTXOSignatures, spendWalletSignatures)
- txID, err := submitPayment(server, guid, rawTx, memo, sigs)
+ txID, err := SubmitPayment(server, guid, rawTx, memo, sigs)
if err != nil {
fmt.Println(err)
}
spendUTXOSignatures := append([]string{}, spendUTXOSig)
spendWalletSignatures := append([]string{}, spendWalletSig)
sigs := append([][]string{}, spendUTXOSignatures, spendWalletSignatures)
- txID, err := submitPayment(server, guid, rawTx, memo, sigs)
+ txID, err := SubmitPayment(server, guid, rawTx, memo, sigs)
if err != nil {
fmt.Println(err)
}
spendWalletSignaturesForFee := append([]string{}, spendWalletSigForFee)
spendWalletSignaturesForContract := append([]string{}, spendWalletSigForContract)
sigs := append([][]string{}, spendUTXOSignatures, spendWalletSignaturesForFee, spendWalletSignaturesForContract)
- txID, err := submitPayment(server, guid, rawTx, memo, sigs)
+ txID, err := SubmitPayment(server, guid, rawTx, memo, sigs)
if err != nil {
fmt.Println(err)
}