mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-12-26 00:25:17 +00:00
de115fbfad
* And what country can preserve its liberties if their rulers are not warned from time to time that their people preserve the spirit of resistance? * adjust check to handle peer id change
94 lines
2.5 KiB
Go
94 lines
2.5 KiB
Go
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 || len(args) > 4 {
|
||
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)
|
||
}
|