diff --git a/x/medianode/client/cli/tx.go b/x/medianode/client/cli/tx.go index b1e698a..730699b 100644 --- a/x/medianode/client/cli/tx.go +++ b/x/medianode/client/cli/tx.go @@ -45,11 +45,12 @@ func GetCmdRegisterMediaNode() *cobra.Command { Example: fmt.Sprintf( "$ %s tx medianode register"+ "--url=https://mymedianode.com"+ - "--moniker=my-node"+ + "--node-moniker=my-node"+ "--description=mydescription"+ "--contact=contact@mynode.com"+ "--hardware-specs="+ "--price-per-hour= "+ + "--deposit= "+ "--from= "+ "--chain-id= "+ "--fees=", @@ -142,7 +143,7 @@ func GetCmdUpdateMediaNode() *cobra.Command { Long: "Update an existing media node's information, hardware specs, and price\n", Example: fmt.Sprintf( "$ %s tx medianode update [medianode-id] "+ - "--moniker= "+ + "--node-moniker= "+ "--description= "+ "--contact= "+ "--hardware-specs= "+ @@ -232,7 +233,7 @@ func GetCmdLeaseMediaNode() *cobra.Command { Short: "leases a media node", Long: "leases a media node with the specified URL and lease hours\n", Example: fmt.Sprintf( - "$ %s tx medianode lease [medianode-id] --lease-hours= --amount= "+ + "$ %s tx medianode lease [medianode-id] --lease-hours= --lease-amount= "+ "--from= "+ "--chain-id= "+ "--fees=", @@ -283,7 +284,7 @@ func GetCmdExtendLease() *cobra.Command { Short: "extends a lease for a media node", Long: "extends an active lease for a media node with the specified ID and additional lease hours\n", Example: fmt.Sprintf( - "$ %s tx medianode extend-lease [medianode-id] --additional-hours= --amount= "+ + "$ %s tx medianode extend-lease [medianode-id] --additional-hours= --lease-amount= "+ "--from= "+ "--chain-id= "+ "--fees=", @@ -334,7 +335,7 @@ func GetCmdDepositMediaNode() *cobra.Command { Short: "deposits an amount for a media node", Long: "deposits an amount for a media node with the specified URL and deposit amount\n", Example: fmt.Sprintf( - "$ %s tx medianode deposit [medianode-id] --amount= "+ + "$ %s tx medianode deposit [medianode-id] --deposit= "+ "--from= "+ "--chain-id= "+ "--fees=", diff --git a/x/medianode/keeper/keeper.go b/x/medianode/keeper/keeper.go index b6fdb35..fe065ee 100644 --- a/x/medianode/keeper/keeper.go +++ b/x/medianode/keeper/keeper.go @@ -179,8 +179,12 @@ func (k Keeper) DepositMediaNode(ctx sdk.Context, mediaNodeId string, amount sdk minDeposit := k.GetMinDeposit(ctx) initialDepositPerc := k.GetInitialDepositPercentage(ctx) minInitialDeposit := sdk.NewCoin(minDeposit.Denom, sdkmath.LegacyNewDecFromInt(minDeposit.Amount).Mul(initialDepositPerc).TruncateInt()) + + if amount.Denom != minDeposit.Denom { + return types.MediaNode{}, sdk.Coin{}, errorsmod.Wrapf(types.ErrInvalidDeposit, "invalid deposit denom; expected %s, got %s", minDeposit.Denom, amount.Denom) + } if !amount.IsGTE(minInitialDeposit) { - return types.MediaNode{}, sdk.Coin{}, errorsmod.Wrapf(types.ErrInsufficientDeposit, "%s of deposit is required", minInitialDeposit.String()) + return types.MediaNode{}, sdk.Coin{}, errorsmod.Wrapf(types.ErrInsufficientDeposit, "deposit must be at least %s", minInitialDeposit.String()) } // Create a deposit object diff --git a/x/medianode/keeper/msg_server.go b/x/medianode/keeper/msg_server.go index e1f43c9..d2e1929 100644 --- a/x/medianode/keeper/msg_server.go +++ b/x/medianode/keeper/msg_server.go @@ -33,8 +33,11 @@ func (m msgServer) RegisterMediaNode(goCtx context.Context, msg *types.MsgRegist minDeposit := m.Keeper.GetMinDeposit(ctx) initialDepositPerc := m.Keeper.GetInitialDepositPercentage(ctx) minInitialDeposit := sdk.NewCoin(minDeposit.Denom, sdkmath.LegacyNewDecFromInt(minDeposit.Amount).Mul(initialDepositPerc).TruncateInt()) + if msg.Deposit.Denom != minDeposit.Denom { + return nil, errorsmod.Wrapf(types.ErrInvalidDeposit, "invalid deposit denom; expected %s, got %s", minDeposit.Denom, msg.Deposit.Denom) + } if !msg.Deposit.IsGTE(minInitialDeposit) { - return nil, errorsmod.Wrapf(types.ErrInsufficientDeposit, "%s of initial deposit is reqquired", minInitialDeposit.String()) + return nil, errorsmod.Wrapf(types.ErrInsufficientDeposit, "initial deposit must be at least %s", minInitialDeposit.String()) } // Create and store the media node @@ -86,16 +89,13 @@ func (m msgServer) LeaseMediaNode(goCtx context.Context, msg *types.MsgLeaseMedi } params := m.Keeper.GetParams(ctx) - if msg.LeaseHours < params.MinimumLeaseHours { - return nil, errorsmod.Wrapf(types.ErrInvalidLeaseHours, "minimum of %d lease hours required", params.MinimumLeaseHours) - } - if msg.LeaseHours > params.MaximumLeaseHours { - return nil, errorsmod.Wrapf(types.ErrInvalidLeaseHours, "maximum of %d lease hours allowed", params.MaximumLeaseHours) + if msg.LeaseHours < params.MinimumLeaseHours || msg.LeaseHours > params.MaximumLeaseHours { + return nil, errorsmod.Wrapf(types.ErrInvalidLeaseHours, "lease hours must be between %d and %d", params.MinimumLeaseHours, params.MaximumLeaseHours) } mediaNode, found := m.Keeper.GetMediaNode(ctx, msg.MediaNodeId) if !found { - return nil, errorsmod.Wrapf(types.ErrMediaNodeDoesNotExist, "not found") + return nil, errorsmod.Wrapf(types.ErrMediaNodeDoesNotExist, "media node %s does not exist", msg.MediaNodeId) } if mediaNode.Status != types.STATUS_ACTIVE { return nil, errorsmod.Wrapf(types.ErrLeaseNotAllowed, "only active medianodes are allowed to lease") @@ -131,16 +131,13 @@ func (m msgServer) ExtendLease(goCtx context.Context, msg *types.MsgExtendLease) } params := m.Keeper.GetParams(ctx) - if msg.LeaseHours < params.MinimumLeaseHours { - return nil, errorsmod.Wrapf(types.ErrInvalidLeaseHours, "minimum of %d lease hours required", params.MinimumLeaseHours) - } - if msg.LeaseHours > params.MaximumLeaseHours { - return nil, errorsmod.Wrapf(types.ErrInvalidLeaseHours, "maximum of %d lease hours allowed", params.MaximumLeaseHours) + if msg.LeaseHours < params.MinimumLeaseHours || msg.LeaseHours > params.MaximumLeaseHours { + return nil, errorsmod.Wrapf(types.ErrInvalidLeaseHours, "lease hours must be between %d and %d", params.MinimumLeaseHours, params.MaximumLeaseHours) } mediaNodeLease, found := m.Keeper.GetMediaNodeLease(ctx, msg.MediaNodeId) if !found { - return nil, errorsmod.Wrapf(types.ErrLeaseNotFound, "not found") + return nil, errorsmod.Wrapf(types.ErrLeaseNotFound, "lease not found") } expectedLeaseAmount := sdk.NewCoin(mediaNodeLease.PricePerHour.Denom, mediaNodeLease.PricePerHour.Amount.Mul(sdkmath.NewIntFromUint64((msg.LeaseHours)))) diff --git a/x/medianode/types/msgs.go b/x/medianode/types/msgs.go index 6cc153b..1cd0743 100644 --- a/x/medianode/types/msgs.go +++ b/x/medianode/types/msgs.go @@ -71,6 +71,9 @@ func (msg MsgRegisterMediaNode) ValidateBasic() error { if msg.PricePerHour.Denom != params.BondDenom { return errorsmod.Wrap(ErrInvalidLeaseAmount, "invalid denom for price per hour only uflix is supported") } + if err := msg.Deposit.Validate(); err != nil { + return errorsmod.Wrap(ErrInvalidDeposit, "invalid deposit amount") + } if msg.PricePerHour.Amount.IsZero() { return errorsmod.Wrap(ErrInvalidLeaseAmount, "price per hour must be positive") }