summaryrefslogtreecommitdiff
path: root/cmd/goal/account.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/goal/account.go')
-rw-r--r--cmd/goal/account.go55
1 files changed, 52 insertions, 3 deletions
diff --git a/cmd/goal/account.go b/cmd/goal/account.go
index 7d20af38f..ccc37f227 100644
--- a/cmd/goal/account.go
+++ b/cmd/goal/account.go
@@ -59,7 +59,7 @@ var (
partKeyOutDir string
partKeyFile string
partKeyDeleteInput bool
- listpartkeyCompat bool
+ partkeyCompat bool
importDefault bool
mnemonic string
dumpOutFile string
@@ -167,7 +167,10 @@ func init() {
installParticipationKeyCmd.Flags().BoolVar(&partKeyDeleteInput, "delete-input", false, "Acknowledge that installpartkey will delete the input key file")
// listpartkey flags
- listParticipationKeysCmd.Flags().BoolVarP(&listpartkeyCompat, "compatibility", "c", false, "Print output in compatibility mode. This option will be removed in a future release, please use REST API for tooling.")
+ listParticipationKeysCmd.Flags().BoolVarP(&partkeyCompat, "compatibility", "c", false, "Print output in compatibility mode. This option will be removed in a future release, please use REST API for tooling.")
+
+ // partkeyinfo flags
+ partkeyInfoCmd.Flags().BoolVarP(&partkeyCompat, "compatibility", "c", false, "Print output in compatibility mode. This option will be removed in a future release, please use REST API for tooling.")
// import flags
importCmd.Flags().BoolVarP(&importDefault, "default", "f", false, "Set this account as the default one")
@@ -1069,6 +1072,7 @@ func uintToStr(number uint64) string {
// legacyListParticipationKeysCommand prints key information in the same
// format as earlier versions of goal. Some users are using this information
// in scripts and need some extra time to migrate to the REST API.
+// DEPRECATED
func legacyListParticipationKeysCommand() {
dataDir := ensureSingleDataDir()
@@ -1118,7 +1122,7 @@ var listParticipationKeysCmd = &cobra.Command{
Long: `List all participation keys tracked by algod along with summary of additional information. For detailed key information use 'partkeyinfo'.`,
Args: validateNoPosArgsFn,
Run: func(cmd *cobra.Command, args []string) {
- if listpartkeyCompat {
+ if partkeyCompat {
legacyListParticipationKeysCommand()
return
}
@@ -1364,12 +1368,57 @@ func strOrNA(value *uint64) string {
return uintToStr(*value)
}
+// legacyPartkeyInfoCommand prints key information in the same
+// format as earlier versions of goal. Some users are using this information
+// in scripts and need some extra time to migrate to alternatives.
+// DEPRECATED
+func legacyPartkeyInfoCommand() {
+ type partkeyInfo struct {
+ _struct struct{} `codec:",omitempty,omitemptyarray"`
+ Address string `codec:"acct"`
+ FirstValid basics.Round `codec:"first"`
+ LastValid basics.Round `codec:"last"`
+ VoteID crypto.OneTimeSignatureVerifier `codec:"vote"`
+ SelectionID crypto.VRFVerifier `codec:"sel"`
+ VoteKeyDilution uint64 `codec:"voteKD"`
+ }
+
+ onDataDirs(func(dataDir string) {
+ fmt.Printf("Dumping participation key info from %s...\n", dataDir)
+ client := ensureGoalClient(dataDir, libgoal.DynamicClient)
+
+ // Make sure we don't already have a partkey valid for (or after) specified roundLastValid
+ parts, err := client.ListParticipationKeyFiles()
+ if err != nil {
+ reportErrorf(errorRequestFail, err)
+ }
+
+ for filename, part := range parts {
+ fmt.Println("------------------------------------------------------------------")
+ info := partkeyInfo{
+ Address: part.Address().String(),
+ FirstValid: part.FirstValid,
+ LastValid: part.LastValid,
+ VoteID: part.VotingSecrets().OneTimeSignatureVerifier,
+ SelectionID: part.VRFSecrets().PK,
+ VoteKeyDilution: part.KeyDilution,
+ }
+ infoString := protocol.EncodeJSON(&info)
+ fmt.Printf("File: %s\n%s\n", filename, string(infoString))
+ }
+ })
+}
+
var partkeyInfoCmd = &cobra.Command{
Use: "partkeyinfo",
Short: "Output details about all available part keys",
Long: `Output details about all available part keys in the specified data directory(ies), such as key validity period.`,
Args: validateNoPosArgsFn,
Run: func(cmd *cobra.Command, args []string) {
+ if partkeyCompat {
+ legacyPartkeyInfoCommand()
+ return
+ }
onDataDirs(func(dataDir string) {
fmt.Printf("Dumping participation key info from %s...\n", dataDir)