@@ -969,15 +969,7 @@ func (msg MsgCreateSpotMarketOrder) ValidateBasic() error {
969969 return errors .Wrap (sdkerrors .ErrInvalidAddress , msg .Sender )
970970 }
971971
972- if msg .Order .OrderType == OrderType_BUY_PO || msg .Order .OrderType == OrderType_SELL_PO {
973- return errors .Wrap (types .ErrInvalidOrderTypeForMessage , "Spot market order can't be a post only order" )
974- }
975-
976- if err := msg .Order .ValidateBasic (senderAddr ); err != nil {
977- return err
978- }
979-
980- return nil
972+ return ValidateSpotMarketOrder (& msg .Order , senderAddr )
981973}
982974
983975// GetSignBytes implements the sdk.Msg interface. It encodes the message for signing
@@ -1227,14 +1219,7 @@ func (msg MsgCreateDerivativeMarketOrder) ValidateBasic() error {
12271219 return errors .Wrap (sdkerrors .ErrInvalidAddress , msg .Sender )
12281220 }
12291221
1230- if msg .Order .OrderType == OrderType_BUY_PO || msg .Order .OrderType == OrderType_SELL_PO {
1231- return errors .Wrap (types .ErrInvalidOrderTypeForMessage , "Derivative market order can't be a post only order" )
1232- }
1233-
1234- if err := msg .Order .ValidateBasic (senderAddr , false ); err != nil {
1235- return err
1236- }
1237- return nil
1222+ return ValidateDerivativeMarketOrder (& msg .Order , senderAddr )
12381223}
12391224
12401225// GetSignBytes encodes the message for signing
@@ -1300,17 +1285,7 @@ func (msg MsgCreateBinaryOptionsMarketOrder) ValidateBasic() error {
13001285 return errors .Wrap (sdkerrors .ErrInvalidAddress , msg .Sender )
13011286 }
13021287
1303- if msg .Order .OrderType == OrderType_BUY_PO || msg .Order .OrderType == OrderType_SELL_PO {
1304- return errors .Wrap (types .ErrInvalidOrderTypeForMessage , "market order can't be a post only order" )
1305- }
1306- if msg .Order .OrderType .IsConditional () {
1307- return errors .Wrap (types .ErrUnrecognizedOrderType , string (msg .Order .OrderType ))
1308- }
1309-
1310- if err := msg .Order .ValidateBasic (senderAddr , true ); err != nil {
1311- return err
1312- }
1313- return nil
1288+ return ValidateBinaryOptionsMarketOrder (& msg .Order , senderAddr )
13141289}
13151290
13161291// GetSignBytes encodes the message for signing
@@ -2132,6 +2107,24 @@ func (msg MsgBatchUpdateOrders) ValidateBasic() error {
21322107 }
21332108 }
21342109
2110+ for idx := range msg .SpotMarketOrdersToCreate {
2111+ if err := ValidateSpotMarketOrder (msg .SpotMarketOrdersToCreate [idx ], sender ); err != nil {
2112+ return err
2113+ }
2114+ }
2115+
2116+ for idx := range msg .DerivativeMarketOrdersToCreate {
2117+ if err := ValidateDerivativeMarketOrder (msg .DerivativeMarketOrdersToCreate [idx ], sender ); err != nil {
2118+ return err
2119+ }
2120+ }
2121+
2122+ for idx := range msg .BinaryOptionsMarketOrdersToCreate {
2123+ if err := ValidateBinaryOptionsMarketOrder (msg .BinaryOptionsMarketOrdersToCreate [idx ], sender ); err != nil {
2124+ return err
2125+ }
2126+ }
2127+
21352128 // Check for duplicate derivative market orders (same market and subaccount)
21362129 if err := ensureNoDuplicateMarketOrders (sender , msg .DerivativeMarketOrdersToCreate ); err != nil {
21372130 return err
@@ -2723,3 +2716,30 @@ func ensureNoDuplicateMarketOrders(sender sdk.AccAddress, orders []*DerivativeOr
27232716 }
27242717 return nil
27252718}
2719+
2720+ func ValidateSpotMarketOrder (order * SpotOrder , senderAddr sdk.AccAddress ) error {
2721+ if order .OrderType == OrderType_BUY_PO || order .OrderType == OrderType_SELL_PO {
2722+ return errors .Wrap (types .ErrInvalidOrderTypeForMessage , "Spot market order can't be a post only order" )
2723+ }
2724+
2725+ return order .ValidateBasic (senderAddr )
2726+ }
2727+
2728+ func ValidateDerivativeMarketOrder (order * DerivativeOrder , senderAddr sdk.AccAddress ) error {
2729+ if order .OrderType == OrderType_BUY_PO || order .OrderType == OrderType_SELL_PO {
2730+ return errors .Wrap (types .ErrInvalidOrderTypeForMessage , "Derivative market order can't be a post only order" )
2731+ }
2732+
2733+ return order .ValidateBasic (senderAddr , false )
2734+ }
2735+
2736+ func ValidateBinaryOptionsMarketOrder (order * DerivativeOrder , senderAddr sdk.AccAddress ) error {
2737+ if order .OrderType == OrderType_BUY_PO || order .OrderType == OrderType_SELL_PO {
2738+ return errors .Wrap (types .ErrInvalidOrderTypeForMessage , "market order can't be a post only order" )
2739+ }
2740+ if order .OrderType .IsConditional () {
2741+ return errors .Wrap (types .ErrUnrecognizedOrderType , string (order .OrderType ))
2742+ }
2743+
2744+ return order .ValidateBasic (senderAddr , true )
2745+ }
0 commit comments