Skip to content

Commit

Permalink
feat(staking/validator): refactor metadata type
Browse files Browse the repository at this point in the history
  • Loading branch information
ziscky committed Aug 22, 2024
1 parent 6b3de76 commit 14eaff9
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 47 deletions.
15 changes: 8 additions & 7 deletions x/staking/client/cli/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/cosmos/cosmos-sdk/version"
gogoprotoany "github.com/cosmos/gogoproto/types/any"
)

// default values
Expand Down Expand Up @@ -134,9 +133,9 @@ func NewEditValidatorCmd() *cobra.Command {
details, _ := cmd.Flags().GetString(FlagDetails)
metadataString, _ := cmd.Flags().GetString(FlagMetadata)

var metadata map[string]*gogoprotoany.Any
var metadata *types.Metadata
if metadataString != "" {
if err := json.Unmarshal([]byte(metadataString), &metadata); err != nil {
if err := json.Unmarshal([]byte(metadataString), metadata); err != nil {
return err
}
}
Expand Down Expand Up @@ -276,7 +275,7 @@ type TxCreateValidatorConfig struct {
SecurityContact string
Details string
Identity string
Metadata map[string]*gogoprotoany.Any
Metadata *types.Metadata
}

func PrepareConfigForTxCreateValidator(flagSet *flag.FlagSet, moniker, nodeID, chainID string, valPubKey cryptotypes.PubKey) (TxCreateValidatorConfig, error) {
Expand Down Expand Up @@ -320,9 +319,11 @@ func PrepareConfigForTxCreateValidator(flagSet *flag.FlagSet, moniker, nodeID, c
if err != nil {
return c, err
}
var metadata map[string]*gogoprotoany.Any
if err := json.Unmarshal([]byte(metadataString), &metadata); err != nil {
return c, err
var metadata *types.Metadata
if metadataString != "" {
if err := json.Unmarshal([]byte(metadataString), metadata); err != nil {
return c, err
}
}

c.Amount, err = flagSet.GetString(FlagAmount)
Expand Down
28 changes: 13 additions & 15 deletions x/staking/client/cli/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import (
"errors"
"os"

gogoprotoany "github.com/cosmos/gogoproto/types/any"

errorsmod "cosmossdk.io/errors"
"cosmossdk.io/math"
"cosmossdk.io/x/staking/types"
Expand All @@ -26,25 +24,25 @@ type validator struct {
Website string
Security string
Details string
Metadata map[string]*gogoprotoany.Any
Metadata *types.Metadata
CommissionRates types.CommissionRates
MinSelfDelegation math.Int
}

func parseAndValidateValidatorJSON(cdc codec.Codec, path string) (validator, error) {
type internalVal struct {
Amount string `json:"amount"`
PubKey json.RawMessage `json:"pubkey"`
Moniker string `json:"moniker"`
Identity string `json:"identity,omitempty"`
Website string `json:"website,omitempty"`
Security string `json:"security,omitempty"`
Details string `json:"details,omitempty"`
Metadata map[string]*gogoprotoany.Any `json:"metadata,omitempty"`
CommissionRate string `json:"commission-rate"`
CommissionMaxRate string `json:"commission-max-rate"`
CommissionMaxChange string `json:"commission-max-change-rate"`
MinSelfDelegation string `json:"min-self-delegation"`
Amount string `json:"amount"`
PubKey json.RawMessage `json:"pubkey"`
Moniker string `json:"moniker"`
Identity string `json:"identity,omitempty"`
Website string `json:"website,omitempty"`
Security string `json:"security,omitempty"`
Details string `json:"details,omitempty"`
Metadata *types.Metadata `json:"metadata,omitempty"`
CommissionRate string `json:"commission-rate"`
CommissionMaxRate string `json:"commission-max-rate"`
CommissionMaxChange string `json:"commission-max-change-rate"`
MinSelfDelegation string `json:"min-self-delegation"`
}

contents, err := os.ReadFile(path)
Expand Down
2 changes: 1 addition & 1 deletion x/staking/keeper/msg_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ func (k msgServer) EditValidator(ctx context.Context, msg *types.MsgEditValidato
return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid validator address: %s", err)
}

if msg.Description.IsEmpty() {
if msg.Description == (types.Description{}) {
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "empty description")
}

Expand Down
20 changes: 4 additions & 16 deletions x/staking/simulation/operations.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,13 @@ import (
"cosmossdk.io/math"
"cosmossdk.io/x/staking/keeper"
"cosmossdk.io/x/staking/types"
"google.golang.org/protobuf/types/known/wrapperspb"

"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
"github.com/cosmos/cosmos-sdk/x/simulation"
gogoprotoany "github.com/cosmos/gogoproto/types/any"
)

// Simulation operation weights constants
Expand Down Expand Up @@ -174,19 +172,14 @@ func SimulateMsgCreateValidator(
}
}

metadataValue, err := gogoprotoany.NewAnyWithCacheWithValue(wrapperspb.String(simtypes.RandStringOfLength(r, 10)))
if err != nil {
return simtypes.NoOpMsg(types.ModuleName, msgType, "unable to generate metadata value"), nil, err
}

description := types.NewDescription(
simtypes.RandStringOfLength(r, 10),
simtypes.RandStringOfLength(r, 10),
simtypes.RandStringOfLength(r, 10),
simtypes.RandStringOfLength(r, 10),
simtypes.RandStringOfLength(r, 10),
map[string]*gogoprotoany.Any{
simtypes.RandStringOfLength(r, 10): metadataValue,
&types.Metadata{
ProfilePicUri: simtypes.RandStringOfLength(r, 10),
},
)

Expand Down Expand Up @@ -281,19 +274,14 @@ func SimulateMsgEditValidator(
account := ak.GetAccount(ctx, simAccount.Address)
spendable := bk.SpendableCoins(ctx, account.GetAddress())

metadataValue, err := gogoprotoany.NewAnyWithCacheWithValue(wrapperspb.String(simtypes.RandStringOfLength(r, 10)))
if err != nil {
return simtypes.NoOpMsg(types.ModuleName, msgType, "unable to generate metadata value"), nil, err
}

description := types.NewDescription(
simtypes.RandStringOfLength(r, 10),
simtypes.RandStringOfLength(r, 10),
simtypes.RandStringOfLength(r, 10),
simtypes.RandStringOfLength(r, 10),
simtypes.RandStringOfLength(r, 10),
map[string]*gogoprotoany.Any{
simtypes.RandStringOfLength(r, 10): metadataValue,
&types.Metadata{
ProfilePicUri: simtypes.RandStringOfLength(r, 10),
},
)

Expand Down
2 changes: 1 addition & 1 deletion x/staking/types/msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ func (msg MsgCreateValidator) Validate(ac address.Codec) error {
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "invalid delegation amount")
}

if msg.Description.IsEmpty() {
if msg.Description == (Description{}) {
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "empty description")
}

Expand Down
8 changes: 1 addition & 7 deletions x/staking/types/validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ func (v Validator) IsUnbonding() bool {
// constant used in flags to indicate that description field should not be updated
const DoNotModifyDesc = "[do-not-modify]"

func NewDescription(moniker, identity, website, securityContact, details string, metadata map[string]*gogoprotoany.Any) Description {
func NewDescription(moniker, identity, website, securityContact, details string, metadata *Metadata) Description {
return Description{
Moniker: moniker,
Identity: identity,
Expand Down Expand Up @@ -257,12 +257,6 @@ func (d Description) EnsureLength() (Description, error) {
return d, nil
}

func (d Description) IsEmpty() bool {
return d.Moniker == "" && d.Identity == "" &&
d.Website == "" && d.SecurityContact == "" &&
d.Details == "" && len(d.Metadata) == 0
}

// ModuleValidatorUpdate returns a appmodule.ValidatorUpdate from a staking validator type
// with the full validator power.
// It replaces the previous ABCIValidatorUpdate function.
Expand Down

0 comments on commit 14eaff9

Please sign in to comment.