diff --git a/client/wallet/main.go b/client/wallet/main.go index 3292f0a9c..1f5d1bb0d 100644 --- a/client/wallet/main.go +++ b/client/wallet/main.go @@ -17,12 +17,14 @@ import ( "io" "io/ioutil" "os" + "strconv" "time" ) func main() { // Account subcommands accountImportCommand := flag.NewFlagSet("import", flag.ExitOnError) + transferCommand := flag.NewFlagSet("transfer", flag.ExitOnError) //accountListCommand := flag.NewFlagSet("list", flag.ExitOnError) // //// Transaction subcommands @@ -31,6 +33,10 @@ func main() { //// Account subcommand flag pointers //// Adding a new choice for --metric of 'substring' and a new --substring flag accountImportPtr := accountImportCommand.String("privateKey", "", "Specify the private key to import") + + transferSenderPtr := transferCommand.String("sender", "0", "Specify the sender account address or index") + transferReceiverPtr := transferCommand.String("receiver", "", "Specify the receiver account") + transferAmountPtr := transferCommand.Int("amount", 0, "Specify the amount to transfer") //accountListPtr := accountNewCommand.Bool("new", false, "N/A") // //// Transaction subcommand flag pointers @@ -115,7 +121,7 @@ func main() { }() time.Sleep(3 * time.Second) // Wait 3 seconds for the response. Exit afterward. case "test": - priKey := pki.GetPrivateKeyScalarFromInt(33) + priKey := pki.GetPrivateKeyScalarFromInt(444) address := pki.GetAddressFromPrivateKey(priKey) priKeyBytes, err := priKey.MarshalBinary() if err != nil { @@ -124,11 +130,59 @@ func main() { fmt.Printf("Private Key :\n {%x}\n", priKeyBytes) fmt.Printf("Address :\n {%x}\n", address) } - case "transaction": - switch os.Args[2] { - case "new": - fmt.Println("Creating new transaction...") + case "transfer": + fmt.Println("Transfer...") + transferCommand.Parse(os.Args[2:]) + priKey := *accountImportPtr + if transferCommand.Parsed() { + fmt.Println(priKey) + } else { + fmt.Println("Failed to parse flags") + } + sender := *transferSenderPtr + receiver := *transferReceiverPtr + amount := *transferAmountPtr + + if amount <= 0 { + fmt.Println("Please specify positive amount to transfer") } + priKeys := ReadPrivateKeys() + if len(priKeys) == 0 { + fmt.Println("No existing account to send money from.") + return + } + senderIndex, err := strconv.Atoi(sender) + senderAddress := "" + addresses := ReadAddresses() + if err != nil { + senderIndex = -1 + for i, address := range addresses { + if fmt.Sprintf("%x", address) == senderAddress { + senderIndex = i + break + } + } + if senderIndex == -1 { + fmt.Println("Specified sender account is not imported yet.") + break + } + } + if senderIndex >= len(priKeys) { + fmt.Println("Sender account index out of bounds.") + return + } + senderPriKey := priKeys[senderIndex] + + receiverAddress, err := hex.DecodeString(receiver) + if err != nil || len(receiverAddress) != 20 { + fmt.Println("The receiver address is not a valid address.") + return + } + + fmt.Println(senderPriKey) + fmt.Println(amount) + fmt.Println(receiverAddress) + // Generate transaction default: flag.PrintDefaults() os.Exit(1) diff --git a/deploy.sh b/deploy.sh index 36df548c1..737dfb755 100755 --- a/deploy.sh +++ b/deploy.sh @@ -58,8 +58,8 @@ while IFS='' read -r line || [[ -n "$line" ]]; do fi done < $config -txgen_enabled=$3 +txgen_disabled=$3 # Generate transactions -if [ -z "$txgen_enabled" ]; then +if [ -z "$txgen_disabled" ]; then ./bin/txgen -config_file $config -log_folder $log_folder fi