diff --git a/client/cmd/transaction.go b/client/cmd/transaction.go index 55cf8d6c44c8b9eed260ede1100d35222dfbcb9f..f6c8e0b1c17b3f10594a3e73c444d36706e05480 100644 --- a/client/cmd/transaction.go +++ b/client/cmd/transaction.go @@ -66,7 +66,7 @@ func buildTransactionCommand() { } nameCmd.Flags().StringVarP(&clientDo.AmtFlag, "amt", "a", "", "specify an amount") nameCmd.Flags().StringVarP(&clientDo.NameFlag, "name", "n", "", "specify a name") - nameCmd.Flags().StringVarP(&clientDo.DataFlag, "data", "d", "", "specify some data") + nameCmd.Flags().StringVarP(&clientDo.DataFlag, "data", "", "", "specify some data") nameCmd.Flags().StringVarP(&clientDo.DataFileFlag, "data-file", "", "", "specify a file with some data") nameCmd.Flags().StringVarP(&clientDo.FeeFlag, "fee", "f", "", "specify the fee to send") @@ -76,13 +76,13 @@ func buildTransactionCommand() { Short: "eris-client tx call --amt <amt> --fee <fee> --gas <gas> --to <contract addr> --data <data>", Long: "eris-client tx call --amt <amt> --fee <fee> --gas <gas> --to <contract addr> --data <data>", Run: func(cmd *cobra.Command, args []string) { - // transaction.Call(clientDo) + transaction.Call(clientDo) }, PreRun: assertParameters, } callCmd.Flags().StringVarP(&clientDo.AmtFlag, "amt", "a", "", "specify an amount") callCmd.Flags().StringVarP(&clientDo.ToFlag, "to", "t", "", "specify an address to send to") - callCmd.Flags().StringVarP(&clientDo.DataFlag, "data", "d", "", "specify some data") + callCmd.Flags().StringVarP(&clientDo.DataFlag, "data", "", "", "specify some data") callCmd.Flags().StringVarP(&clientDo.FeeFlag, "fee", "f", "", "specify the fee to send") callCmd.Flags().StringVarP(&clientDo.GasFlag, "gas", "g", "", "specify the gas limit for a CallTx") diff --git a/client/core/core.go b/client/core/core.go index 7f605f52449c290f52ab9ecd9737e7c97f47461d..3ed979e848003575f34a940437b002ec9eb73eba 100644 --- a/client/core/core.go +++ b/client/core/core.go @@ -69,35 +69,35 @@ func Send(nodeAddr, signAddr, pubkey, addr, toAddr, amtS, nonceS string) (*txs.S return tx, nil } -// func Call(nodeAddr, signAddr, pubkey, addr, toAddr, amtS, nonceS, gasS, feeS, data string) (*txs.CallTx, error) { -// pub, amt, nonce, err := checkCommon(nodeAddr, signAddr, pubkey, addr, amtS, nonceS) -// if err != nil { -// return nil, err -// } +func Call(nodeAddr, signAddr, pubkey, addr, toAddr, amtS, nonceS, gasS, feeS, data string) (*txs.CallTx, error) { + pub, amt, nonce, err := checkCommon(nodeAddr, signAddr, pubkey, addr, amtS, nonceS) + if err != nil { + return nil, err + } -// toAddrBytes, err := hex.DecodeString(toAddr) -// if err != nil { -// return nil, fmt.Errorf("toAddr is bad hex: %v", err) -// } + toAddrBytes, err := hex.DecodeString(toAddr) + if err != nil { + return nil, fmt.Errorf("toAddr is bad hex: %v", err) + } -// fee, err := strconv.ParseInt(feeS, 10, 64) -// if err != nil { -// return nil, fmt.Errorf("fee is misformatted: %v", err) -// } + fee, err := strconv.ParseInt(feeS, 10, 64) + if err != nil { + return nil, fmt.Errorf("fee is misformatted: %v", err) + } -// gas, err := strconv.ParseInt(gasS, 10, 64) -// if err != nil { -// return nil, fmt.Errorf("gas is misformatted: %v", err) -// } + gas, err := strconv.ParseInt(gasS, 10, 64) + if err != nil { + return nil, fmt.Errorf("gas is misformatted: %v", err) + } -// dataBytes, err := hex.DecodeString(data) -// if err != nil { -// return nil, fmt.Errorf("data is bad hex: %v", err) -// } + dataBytes, err := hex.DecodeString(data) + if err != nil { + return nil, fmt.Errorf("data is bad hex: %v", err) + } -// tx := types.NewCallTxWithNonce(pub, toAddrBytes, dataBytes, amt, gas, fee, int(nonce)) -// return tx, nil -// } + tx := txs.NewCallTxWithNonce(pub, toAddrBytes, dataBytes, amt, gas, fee, int(nonce)) + return tx, nil +} // func Name(nodeAddr, signAddr, pubkey, addr, amtS, nonceS, feeS, name, data string) (*txs.NameTx, error) { // pub, amt, nonce, err := checkCommon(nodeAddr, signAddr, pubkey, addr, amtS, nonceS) diff --git a/client/transaction/transaction.go b/client/transaction/transaction.go index ea59c2d3db27359b3b4c701d7715fb06819bff63..faef29683f2a89da2375f74568fc58ee7126ad45 100644 --- a/client/transaction/transaction.go +++ b/client/transaction/transaction.go @@ -28,16 +28,38 @@ import ( ) func Send(do *definitions.ClientDo) { + // form the send transaction sendTransaction, err := core.Send(do.NodeAddrFlag, do.SignAddrFlag, do.PubkeyFlag, do.AddrFlag, do.ToFlag, do.AmtFlag, do.NonceFlag) if err != nil { - log.Fatalf("Failed on Send Transaction: %s", err) + log.Fatalf("Failed on forming Send Transaction: %s", err) + return } + // TODO: [ben] we carry over the sign bool, but always set it to true, + // as we move away from and deprecate the api that allows sending unsigned + // transactions and relying on (our) receiving node to sign it. unpackSignAndBroadcast( core.SignAndBroadcast(do.ChainidFlag, do.NodeAddrFlag, do.SignAddrFlag, sendTransaction, true, do.BroadcastFlag, do.WaitFlag)) } +func Call(do *definitions.ClientDo) { + // form the call transaction + callTransaction, err := core.Call(do.NodeAddrFlag, do.SignAddrFlag, + do.PubkeyFlag, do.AddrFlag, do.ToFlag, do.AmtFlag, do.NonceFlag, + do.GasFlag, do.FeeFlag, do.DataFlag) + if err != nil { + log.Fatalf("Failed on forming Call Transaction: %s", err) + return + } + // TODO: [ben] we carry over the sign bool, but always set it to true, + // as we move away from and deprecate the api that allows sending unsigned + // transactions and relying on (our) receiving node to sign it. + unpackSignAndBroadcast( + core.SignAndBroadcast(do.ChainidFlag, do.NodeAddrFlag, + do.SignAddrFlag, callTransaction, true, do.BroadcastFlag, do.WaitFlag)) +} + //---------------------------------------------------------------------- // Helper functions