mirror of
https://github.com/aljazceru/ark.git
synced 2025-12-17 04:04:21 +01:00
68 lines
1.3 KiB
Go
68 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
var (
|
|
addressFlag = cli.StringFlag{
|
|
Name: "address",
|
|
Usage: "main chain address receiving the redeeemed VTXO",
|
|
Value: "",
|
|
Required: true,
|
|
}
|
|
|
|
amountToRedeemFlag = cli.Uint64Flag{
|
|
Name: "amount",
|
|
Usage: "amount to redeem",
|
|
Value: 0,
|
|
Required: false,
|
|
}
|
|
|
|
forceFlag = cli.BoolFlag{
|
|
Name: "force",
|
|
Usage: "force redemption without collaborate with the Ark service provider",
|
|
Value: false,
|
|
Required: false,
|
|
}
|
|
)
|
|
|
|
var redeemCommand = cli.Command{
|
|
Name: "redeem",
|
|
Usage: "Redeem VTXO(s) to onchain",
|
|
Flags: []cli.Flag{&addressFlag, &amountToRedeemFlag, &forceFlag},
|
|
Action: redeemAction,
|
|
}
|
|
|
|
func redeemAction(ctx *cli.Context) error {
|
|
address := ctx.String("address")
|
|
amount := ctx.Uint64("amount")
|
|
force := ctx.Bool("force")
|
|
|
|
if len(address) <= 0 {
|
|
return fmt.Errorf("missing address flag (--address)")
|
|
}
|
|
|
|
if !force && amount <= 0 {
|
|
return fmt.Errorf("missing amount flag (--amount)")
|
|
}
|
|
|
|
if force {
|
|
return unilateralRedeem(address)
|
|
}
|
|
|
|
return collaborativeRedeem(address, amount)
|
|
}
|
|
|
|
func collaborativeRedeem(address string, amount uint64) error {
|
|
fmt.Println("collaborative redeem is not implemented yet")
|
|
return nil
|
|
}
|
|
|
|
func unilateralRedeem(address string) error {
|
|
fmt.Println("unilateral redeem is not implemented yet")
|
|
return nil
|
|
}
|