mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-11-04 10:57:27 +00:00 
			
		
		
		
	add preliminary command stubs, kill offline bootstrappers (#164)
This commit is contained in:
		
							parent
							
								
									6b5ce992cf
								
							
						
					
					
						commit
						a9fac688d0
					
				
							
								
								
									
										2
									
								
								client/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								client/Makefile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					all:
 | 
				
			||||||
 | 
						go build -o qclient ./main.go
 | 
				
			||||||
							
								
								
									
										38
									
								
								client/cmd/accept.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								client/cmd/accept.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"math/big"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var acceptCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "accept",
 | 
				
			||||||
 | 
						Short: "Accepts a pending transfer",
 | 
				
			||||||
 | 
						Long: `Accepts a pending transfer:
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						accept <PendingTransaction>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						PendingTransaction - the address of the pending transfer
 | 
				
			||||||
 | 
						`,
 | 
				
			||||||
 | 
						Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
							if len(args) == 1 {
 | 
				
			||||||
 | 
								fmt.Println("invalid command")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							_, ok := new(big.Int).SetString(args[0], 0)
 | 
				
			||||||
 | 
							if !ok {
 | 
				
			||||||
 | 
								fmt.Println("invalid PendingTransaction")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							fmt.Println("25 QUIL (Coin 0x2688997f2776ab5993894ed04fcdac05577cf2494ddfedf356ebf8bd3de464ab)")
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						tokenCmd.AddCommand(acceptCmd)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								client/cmd/all.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								client/cmd/all.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var allCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "all",
 | 
				
			||||||
 | 
						Short: "Mints all available token rewards",
 | 
				
			||||||
 | 
						Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
							fmt.Println("1520.381923 QUIL (Coin 0x162ad88c319060b4f5ea6dbf9a0c2cd82d3d70dfc22d5fc99ca5371083d68416)")
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						mintCmd.AddCommand(allCmd)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								client/cmd/balance.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								client/cmd/balance.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var balanceCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "balance",
 | 
				
			||||||
 | 
						Short: "Lists the total balance of tokens in the managing account",
 | 
				
			||||||
 | 
						Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
							fmt.Println("1545.381923 QUIL")
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						tokenCmd.AddCommand(balanceCmd)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										20
									
								
								client/cmd/coins.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								client/cmd/coins.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var coinsCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "coins",
 | 
				
			||||||
 | 
						Short: "Lists all coins under control of the managing account",
 | 
				
			||||||
 | 
						Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
							fmt.Println("25.0 QUIL (Coin 0x1148092cdce78c721835601ef39f9c2cd8b48b7787cbea032dd3913a4106a58d)")
 | 
				
			||||||
 | 
							fmt.Println("1520.381923 QUIL (Coin 0x162ad88c319060b4f5ea6dbf9a0c2cd82d3d70dfc22d5fc99ca5371083d68416)")
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						tokenCmd.AddCommand(coinsCmd)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										45
									
								
								client/cmd/merge.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								client/cmd/merge.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"math/big"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var mergeCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "merge",
 | 
				
			||||||
 | 
						Short: "Merges two coins",
 | 
				
			||||||
 | 
						Long: `Merges two coins:
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						merge <LeftCoin> <RightCoin>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						LeftCoin - the first coin address
 | 
				
			||||||
 | 
						RightCoin - the second coin address
 | 
				
			||||||
 | 
						`,
 | 
				
			||||||
 | 
						Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
							if len(args) != 2 {
 | 
				
			||||||
 | 
								fmt.Println("invalid command")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							_, ok := new(big.Int).SetString(args[0], 0)
 | 
				
			||||||
 | 
							if !ok {
 | 
				
			||||||
 | 
								fmt.Println("invalid LeftCoin")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							_, ok = new(big.Int).SetString(args[1], 0)
 | 
				
			||||||
 | 
							if !ok {
 | 
				
			||||||
 | 
								fmt.Println("invalid Rightcoin")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							fmt.Println("1545.381923 QUIL (Coin 0x151f4ae225e20759077e1724e4c5d0feae26c477fd10d728dfea962eec79b83f)")
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						tokenCmd.AddCommand(mergeCmd)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										14
									
								
								client/cmd/mint.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								client/cmd/mint.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var mintCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "mint",
 | 
				
			||||||
 | 
						Short: "Performs a mint operation",
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						tokenCmd.AddCommand(mintCmd)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										43
									
								
								client/cmd/mutualReceive.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								client/cmd/mutualReceive.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/shopspring/decimal"
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var mutualReceiveCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "mutual-receive",
 | 
				
			||||||
 | 
						Short: "Initiates a mutual receive",
 | 
				
			||||||
 | 
						Long: `Initiates a mutual receive:
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						mutual-receive <ExpectedAmount>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						ExpectedAmount - the amount expected in the transfer
 | 
				
			||||||
 | 
						`,
 | 
				
			||||||
 | 
						Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
							if len(args) != 1 {
 | 
				
			||||||
 | 
								fmt.Println("invalid command")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							amount := args[len(args)-1]
 | 
				
			||||||
 | 
							_, err := decimal.NewFromString(amount)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								fmt.Println("invalid ExpectedAmount")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							fmt.Println("Rendezvous: 0x2ad567e4fc1ac335a8d3d6077de2ee998aff996b51936da04ee1b0f5dc196a4f")
 | 
				
			||||||
 | 
							fmt.Printf("Awaiting sender... ")
 | 
				
			||||||
 | 
							time.Sleep(2 * time.Second)
 | 
				
			||||||
 | 
							fmt.Println("OK")
 | 
				
			||||||
 | 
							fmt.Println(amount + " QUIL (Coin 0x0525c76ecdc6ef21c2eb75df628b52396adcf402ba26a518ac395db8f5874a82)")
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						tokenCmd.AddCommand(mutualReceiveCmd)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										39
									
								
								client/cmd/mutualTransfer.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								client/cmd/mutualTransfer.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var mutualTransferCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "mutual-transfer",
 | 
				
			||||||
 | 
						Short: "Initiates a mutual transfer",
 | 
				
			||||||
 | 
						Long: `Initiates a mutual transfer:
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						mutual-transfer <Rendezvous> (<Amount>|<OfCoin>)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Rendezvous - the rendezvous point to connect to the recipient
 | 
				
			||||||
 | 
						Amount – the amount to send, splitting/merging and sending as needed
 | 
				
			||||||
 | 
						OfCoin – the address of the coin to send in whole
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Either Amount or OfCoin must be specified
 | 
				
			||||||
 | 
						`,
 | 
				
			||||||
 | 
						Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
							if len(args) != 2 {
 | 
				
			||||||
 | 
								fmt.Println("invalid command")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							fmt.Printf("Confirming rendezvous... ")
 | 
				
			||||||
 | 
							time.Sleep(500 * time.Millisecond)
 | 
				
			||||||
 | 
							fmt.Println("OK")
 | 
				
			||||||
 | 
							fmt.Println("50 QUIL (Coin [private])")
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						tokenCmd.AddCommand(mutualTransferCmd)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										38
									
								
								client/cmd/reject.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								client/cmd/reject.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"math/big"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var rejectCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "reject",
 | 
				
			||||||
 | 
						Short: "Rejects the pending transaction",
 | 
				
			||||||
 | 
						Long: `Rejects a pending transfer:
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						reject <PendingTransaction>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						PendingTransaction - the address of the pending transfer
 | 
				
			||||||
 | 
						`,
 | 
				
			||||||
 | 
						Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
							if len(args) == 1 {
 | 
				
			||||||
 | 
								fmt.Println("invalid command")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							_, ok := new(big.Int).SetString(args[0], 0)
 | 
				
			||||||
 | 
							if !ok {
 | 
				
			||||||
 | 
								fmt.Println("invalid PendingTransaction")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							fmt.Println("25 QUIL (PendingTransaction 0x27fff099dee515ece193d2af09b164864e4bb60c19eb6719b5bc981f92151009)")
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						tokenCmd.AddCommand(rejectCmd)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										31
									
								
								client/cmd/root.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								client/cmd/root.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var configDirectory string
 | 
				
			||||||
 | 
					var simulateFail bool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var rootCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "qclient",
 | 
				
			||||||
 | 
						Short: "Quilibrium RPC Client",
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func Execute() {
 | 
				
			||||||
 | 
						err := rootCmd.Execute()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							os.Exit(1)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						rootCmd.PersistentFlags().StringVar(
 | 
				
			||||||
 | 
							&configDirectory,
 | 
				
			||||||
 | 
							"config",
 | 
				
			||||||
 | 
							"../node/.config/",
 | 
				
			||||||
 | 
							"config directory (default is ../node/.config/)",
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										55
									
								
								client/cmd/split.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								client/cmd/split.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"math/big"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/shopspring/decimal"
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var splitCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "split",
 | 
				
			||||||
 | 
						Short: "Splits a coin into two coins",
 | 
				
			||||||
 | 
						Long: `Splits a coin into two coins:
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						split <OfCoin> <LeftAmount> <RightAmount>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						OfCoin - the address of the coin to split
 | 
				
			||||||
 | 
						LeftAmount - the first half of the split amount
 | 
				
			||||||
 | 
						RightAmount - the second half of the split amount
 | 
				
			||||||
 | 
						`,
 | 
				
			||||||
 | 
						Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
							if len(args) != 3 {
 | 
				
			||||||
 | 
								fmt.Println("invalid command")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							_, ok := new(big.Int).SetString(args[0], 0)
 | 
				
			||||||
 | 
							if !ok {
 | 
				
			||||||
 | 
								fmt.Println("invalid OfCoin")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							leftAmount := args[1]
 | 
				
			||||||
 | 
							_, err := decimal.NewFromString(leftAmount)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								fmt.Println("invalid LeftAmount")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							rightAmount := args[2]
 | 
				
			||||||
 | 
							_, err = decimal.NewFromString(rightAmount)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								fmt.Println("invalid RightAmount")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							fmt.Println(leftAmount + " QUIL (Coin 0x024479f49f03dc53fd702198cd9b548c9e96004e19ef6a4e9c5211a9795ba34d)")
 | 
				
			||||||
 | 
							fmt.Println(rightAmount + " QUIL (Coin 0x0140e01731256793bba03914f3844d645fbece26553acdea8ac4de4d84f91690)")
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						tokenCmd.AddCommand(splitCmd)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										14
									
								
								client/cmd/token.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								client/cmd/token.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var tokenCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "token",
 | 
				
			||||||
 | 
						Short: "Performs a token operation",
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						rootCmd.AddCommand(tokenCmd)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										93
									
								
								client/cmd/transfer.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								client/cmd/transfer.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,93 @@
 | 
				
			|||||||
 | 
					package cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"math/big"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/shopspring/decimal"
 | 
				
			||||||
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var transferCmd = &cobra.Command{
 | 
				
			||||||
 | 
						Use:   "transfer",
 | 
				
			||||||
 | 
						Short: "Creates a pending transfer of coin",
 | 
				
			||||||
 | 
						Long: `Creates a pending transfer of coin:
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						transfer <ToAccount> [<RefundAccount>] [<Expiry>] (<Amount>|<OfCoin>)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						ToAccount – account address, must be specified
 | 
				
			||||||
 | 
						RefundAccount - account address to receive coin if rejected (if omitted, uses sender address)
 | 
				
			||||||
 | 
						Expiry – unix epoch time in seconds where the ToAccount can no longer claim (if omitted, does not expire)
 | 
				
			||||||
 | 
						Amount – the amount to send, splitting/merging and sending as needed
 | 
				
			||||||
 | 
						OfCoin – the address of the coin to send in whole
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Either Amount or OfCoin must be specified
 | 
				
			||||||
 | 
						`,
 | 
				
			||||||
 | 
						Run: func(cmd *cobra.Command, args []string) {
 | 
				
			||||||
 | 
							if len(args) < 2 {
 | 
				
			||||||
 | 
								fmt.Println("invalid command")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							_, ok := new(big.Int).SetString(args[0], 0)
 | 
				
			||||||
 | 
							if !ok {
 | 
				
			||||||
 | 
								fmt.Println("invalid ToAccount")
 | 
				
			||||||
 | 
								os.Exit(1)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							refundAccount := "0x23c0f371e9faa7be4ffedd616361e0c9aeb776ae4d7f3a37605ecbfa40a55a90"
 | 
				
			||||||
 | 
							// expiry := int64(9999999999)
 | 
				
			||||||
 | 
							var err error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if len(args) >= 3 {
 | 
				
			||||||
 | 
								if len(args[len(args)-2]) != 66 {
 | 
				
			||||||
 | 
									_, err = strconv.ParseInt(args[len(args)-2], 10, 0)
 | 
				
			||||||
 | 
									if err != nil {
 | 
				
			||||||
 | 
										fmt.Println(err)
 | 
				
			||||||
 | 
										os.Exit(1)
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									refundAccount = args[1]
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if refundAccount[0] != '0' || refundAccount[1] != 'x' {
 | 
				
			||||||
 | 
								_, ok := new(big.Int).SetString(refundAccount, 0)
 | 
				
			||||||
 | 
								if !ok {
 | 
				
			||||||
 | 
									fmt.Println("invalid refund account")
 | 
				
			||||||
 | 
									os.Exit(1)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							ofCoin := ""
 | 
				
			||||||
 | 
							amount := ""
 | 
				
			||||||
 | 
							if len(args[len(args)-1]) == 66 {
 | 
				
			||||||
 | 
								ofCoin = args[len(args)-1]
 | 
				
			||||||
 | 
								_, ok := new(big.Int).SetString(ofCoin, 0)
 | 
				
			||||||
 | 
								if !ok {
 | 
				
			||||||
 | 
									fmt.Println("invalid OfCoin")
 | 
				
			||||||
 | 
									os.Exit(1)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								switch ofCoin {
 | 
				
			||||||
 | 
								case "0x1148092cdce78c721835601ef39f9c2cd8b48b7787cbea032dd3913a4106a58d":
 | 
				
			||||||
 | 
									fmt.Println("25.0 QUIL (Pending Transaction 0x0382e4da0c7c0133a1b53453b05096272b80c1575c6828d0211c4e371f7c81bb)")
 | 
				
			||||||
 | 
								case "0x162ad88c319060b4f5ea6dbf9a0c2cd82d3d70dfc22d5fc99ca5371083d68416":
 | 
				
			||||||
 | 
									fmt.Println("1520.381923 QUIL (Pending Transaction 0x0382e4da0c7c0133a1b53453b05096272b80c1575c6828d0211c4e371f7c81bb)")
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								amount = args[len(args)-1]
 | 
				
			||||||
 | 
								_, err := decimal.NewFromString(amount)
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									fmt.Println("invalid Amount")
 | 
				
			||||||
 | 
									os.Exit(1)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								fmt.Println(amount + " QUIL (Pending Transaction 0x0382e4da0c7c0133a1b53453b05096272b80c1575c6828d0211c4e371f7c81bb)")
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						tokenCmd.AddCommand(transferCmd)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										10
									
								
								client/go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								client/go.mod
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					module source.quilibrium.com/quilibrium/monorepo/client
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					go 1.20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require (
 | 
				
			||||||
 | 
						github.com/inconshreveable/mousetrap v1.1.0 // indirect
 | 
				
			||||||
 | 
						github.com/shopspring/decimal v1.4.0 // indirect
 | 
				
			||||||
 | 
						github.com/spf13/cobra v1.8.0 // indirect
 | 
				
			||||||
 | 
						github.com/spf13/pflag v1.0.5 // indirect
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										12
									
								
								client/go.sum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								client/go.sum
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
 | 
				
			||||||
 | 
					github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
 | 
				
			||||||
 | 
					github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
 | 
				
			||||||
 | 
					github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 | 
				
			||||||
 | 
					github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
 | 
				
			||||||
 | 
					github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
 | 
				
			||||||
 | 
					github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
 | 
				
			||||||
 | 
					github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
 | 
				
			||||||
 | 
					github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 | 
				
			||||||
 | 
					github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 | 
				
			||||||
 | 
					gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
				
			||||||
 | 
					gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 | 
				
			||||||
							
								
								
									
										12
									
								
								client/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								client/main.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"source.quilibrium.com/quilibrium/monorepo/client/cmd"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func main() {
 | 
				
			||||||
 | 
						fmt.Println("Quilibrium RPC Client – Simulation Mode")
 | 
				
			||||||
 | 
						cmd.Execute()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user