-
Notifications
You must be signed in to change notification settings - Fork 42
/
tx_update_did.go
62 lines (52 loc) · 1.75 KB
/
tx_update_did.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package cli
import (
"github.com/cheqd/cheqd-node/x/cheqd/types"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/client/tx"
"github.com/spf13/cobra"
)
func CmdUpdateDid() *cobra.Command {
cmd := &cobra.Command{
Use: "update-did [payload-json] [ver-method-id-1] [priv-key-1] [ver-method-id-N] [priv-key-N] ...",
Short: "Update a DID.",
Long: "Updates a DID. " +
"[payload-json] is JSON encoded MsgUpdateDidPayload. " +
"[ver-method-id-N] is the DID fragment that points to the public part of the key in the ledger for the signature N." +
"[priv-key-1] is base base64 encoded ed25519 private key for signature N." +
"If 'interactive' value is used for a key, the key will be read interactively. " +
"Prefer interactive mode, use inline mode only for tests.",
Args: cobra.MinimumNArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
if err != nil {
return err
}
payloadJson, signInputs, err := GetPayloadAndSignInputs(clientCtx, args)
if err != nil {
return err
}
// Unmarshal payload
var payload types.MsgUpdateDidPayload
err = clientCtx.Codec.UnmarshalJSON([]byte(payloadJson), &payload)
if err != nil {
return err
}
// Build identity message
signBytes := payload.GetSignBytes()
identitySignatures := SignWithSignInputs(signBytes, signInputs)
msg := types.MsgUpdateDid{
Payload: &payload,
Signatures: identitySignatures,
}
//Set fee-payer if not set
err = SetFeePayerFromSigner(&clientCtx)
if err != nil {
return err
}
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), &msg)
},
}
flags.AddTxFlagsToCmd(cmd)
return cmd
}