Skip to content

Commit 6a96b6e

Browse files
committed
re-gen
1 parent 7af3dff commit 6a96b6e

File tree

3 files changed

+62
-19
lines changed

3 files changed

+62
-19
lines changed

chain/exchange/types/common_utils.go

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"bytes"
55
"math/big"
66
"reflect"
7+
"regexp"
8+
"strings"
79

810
sdk "github.com/cosmos/cosmos-sdk/types"
911
"github.com/ethereum/go-ethereum/common"
@@ -85,29 +87,35 @@ func StringInSlice(a string, list *[]string) bool {
8587
}
8688

8789
func IsValidSubaccountID(subaccountID string) (*common.Address, bool) {
88-
if len(subaccountID) != 66 {
90+
if !IsHexHash(subaccountID) {
8991
return nil, false
9092
}
9193
subaccountIdBytes := common.FromHex(subaccountID)
92-
93-
if len(subaccountIdBytes) != common.HashLength {
94-
return nil, false
95-
}
9694
addressBytes := subaccountIdBytes[:common.AddressLength]
97-
if !common.IsHexAddress(common.Bytes2Hex(addressBytes)) {
98-
return nil, false
99-
}
10095
address := common.BytesToAddress(addressBytes)
10196
return &address, true
10297
}
10398

10499
func IsValidOrderHash(orderHash string) bool {
105-
if len(orderHash) != 66 {
100+
return IsHexHash(orderHash)
101+
}
102+
103+
// IsHexHash verifies whether a string can represent a valid hex-encoded hash or not.
104+
func IsHexHash(s string) bool {
105+
if !isHexString(s) {
106106
return false
107107
}
108108

109-
orderHashBytes := common.FromHex(orderHash)
110-
return len(orderHashBytes) == common.HashLength
109+
if strings.HasPrefix(s, "0x") {
110+
return len(s) == 2*common.HashLength+2
111+
}
112+
113+
return len(s) == 2*common.HashLength
114+
}
115+
116+
func isHexString(str string) bool {
117+
isMatched, _ := regexp.MatchString("^(0x)?[0-9a-fA-F]+$", str)
118+
return isMatched
111119
}
112120

113121
func BreachesMinimumTickSize(value sdk.Dec, minTickSize sdk.Dec) bool {

chain/exchange/types/msgs.go

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ var (
3434
)
3535

3636
func (o *SpotOrder) ValidateBasic(senderAddr sdk.AccAddress) error {
37-
if o.MarketId == "" {
37+
if !IsHexHash(o.MarketId) {
3838
return sdkerrors.Wrap(ErrMarketInvalid, o.MarketId)
3939
}
4040
switch o.OrderType {
@@ -75,7 +75,7 @@ func (o *OrderInfo) ValidateBasic(senderAddr sdk.AccAddress) error {
7575
}
7676

7777
func (o *DerivativeOrder) ValidateBasic(senderAddr sdk.AccAddress) error {
78-
if o.MarketId == "" {
78+
if !IsHexHash(o.MarketId) {
7979
return sdkerrors.Wrap(ErrMarketInvalid, o.MarketId)
8080
}
8181
switch o.OrderType {
@@ -101,7 +101,7 @@ func (o *DerivativeOrder) ValidateBasic(senderAddr sdk.AccAddress) error {
101101
}
102102

103103
func (o *OrderData) ValidateBasic(senderAddr sdk.AccAddress) error {
104-
if o.MarketId == "" {
104+
if !IsHexHash(o.MarketId) {
105105
return sdkerrors.Wrap(ErrMarketInvalid, o.MarketId)
106106
}
107107

@@ -878,9 +878,10 @@ func (msg *MsgIncreasePositionMargin) ValidateBasic() error {
878878
return sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender)
879879
}
880880

881-
if msg.MarketId == "" {
881+
if !IsHexHash(msg.MarketId) {
882882
return sdkerrors.Wrap(ErrMarketInvalid, msg.MarketId)
883883
}
884+
884885
if !msg.Amount.IsPositive() {
885886
return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, msg.Amount.String())
886887
}
@@ -928,7 +929,7 @@ func (msg *MsgLiquidatePosition) ValidateBasic() error {
928929
return sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, msg.Sender)
929930
}
930931

931-
if msg.MarketId == "" {
932+
if !IsHexHash(msg.MarketId) {
932933
return sdkerrors.Wrap(ErrMarketInvalid, msg.MarketId)
933934
}
934935

@@ -975,7 +976,11 @@ func (msg MsgBatchUpdateOrders) ValidateBasic() error {
975976
hasSubaccountIdForCancelAll := msg.SubaccountId != ""
976977

977978
if hasCancelAllMarketId && !hasSubaccountIdForCancelAll {
978-
return sdkerrors.Wrap(ErrInvalidBatchMsgUpdate, "msg contains cancel all market id but no subaccount id")
979+
return sdkerrors.Wrap(ErrInvalidBatchMsgUpdate, "msg contains cancel all marketIDs but no subaccountID")
980+
}
981+
982+
if hasSubaccountIdForCancelAll && !hasCancelAllMarketId {
983+
return sdkerrors.Wrap(ErrInvalidBatchMsgUpdate, "msg contains subaccountID but no cancel all marketIDs")
979984
}
980985

981986
if hasSubaccountIdForCancelAll {
@@ -1011,6 +1016,9 @@ func (msg MsgBatchUpdateOrders) ValidateBasic() error {
10111016
if len(msg.SpotMarketIdsToCancelAll) > 0 && len(msg.SpotOrdersToCancel) > 0 {
10121017
seen := make(map[common.Hash]struct{})
10131018
for _, marketID := range msg.SpotMarketIdsToCancelAll {
1019+
if !IsHexHash(marketID) {
1020+
return sdkerrors.Wrap(ErrMarketInvalid, marketID)
1021+
}
10141022
seen[common.HexToHash(marketID)] = struct{}{}
10151023
}
10161024

@@ -1024,6 +1032,9 @@ func (msg MsgBatchUpdateOrders) ValidateBasic() error {
10241032
if len(msg.DerivativeMarketIdsToCancelAll) > 0 && len(msg.DerivativeOrdersToCancel) > 0 {
10251033
seen := make(map[common.Hash]struct{})
10261034
for _, marketID := range msg.DerivativeMarketIdsToCancelAll {
1035+
if !IsHexHash(marketID) {
1036+
return sdkerrors.Wrap(ErrMarketInvalid, marketID)
1037+
}
10271038
seen[common.HexToHash(marketID)] = struct{}{}
10281039
}
10291040

chain/exchange/types/proposal.go

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ func (p *SpotMarketParamUpdateProposal) ProposalType() string {
211211

212212
// ValidateBasic returns ValidateBasic result of this proposal.
213213
func (p *SpotMarketParamUpdateProposal) ValidateBasic() error {
214-
if p.MarketId == "" {
214+
if !IsHexHash(p.MarketId) {
215215
return sdkerrors.Wrap(ErrMarketInvalid, p.MarketId)
216216
}
217217
if p.MakerFeeRate == nil && p.TakerFeeRate == nil && p.RelayerFeeShareRate == nil && p.MinPriceTickSize == nil && p.MinQuantityTickSize == nil && p.Status == MarketStatus_Unspecified {
@@ -403,7 +403,7 @@ func (p *DerivativeMarketParamUpdateProposal) ProposalType() string {
403403

404404
// ValidateBasic returns ValidateBasic result of this proposal.
405405
func (p *DerivativeMarketParamUpdateProposal) ValidateBasic() error {
406-
if p.MarketId == "" {
406+
if !IsHexHash(p.MarketId) {
407407
return sdkerrors.Wrap(ErrMarketInvalid, p.MarketId)
408408
}
409409
if p.MakerFeeRate == nil &&
@@ -916,6 +916,18 @@ func (t *TradingRewardCampaignBoostInfo) ValidateBasic() error {
916916
return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "boosted spot market ids is not matching spot market multipliers")
917917
}
918918

919+
for _, marketID := range t.BoostedSpotMarketIds {
920+
if !IsHexHash(marketID) {
921+
return sdkerrors.Wrap(ErrMarketInvalid, marketID)
922+
}
923+
}
924+
925+
for _, marketID := range t.BoostedDerivativeMarketIds {
926+
if !IsHexHash(marketID) {
927+
return sdkerrors.Wrap(ErrMarketInvalid, marketID)
928+
}
929+
}
930+
919931
if len(t.BoostedDerivativeMarketIds) != len(t.DerivativeMarketMultipliers) {
920932
return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "boosted derivative market ids is not matching derivative market multipliers")
921933
}
@@ -971,6 +983,12 @@ func (c *TradingRewardCampaignInfo) ValidateBasic() error {
971983
}
972984
}
973985

986+
for _, marketID := range c.DisqualifiedMarketIds {
987+
if !IsHexHash(marketID) {
988+
return sdkerrors.Wrap(ErrMarketInvalid, marketID)
989+
}
990+
}
991+
974992
hasDuplicatesInDisqualifiedMarkets := c != nil && HasDuplicates(c.DisqualifiedMarketIds)
975993
if hasDuplicatesInDisqualifiedMarkets {
976994
return sdkerrors.Wrap(ErrInvalidTradingRewardCampaign, "campaign contains duplicate disqualified market ids")
@@ -1061,6 +1079,12 @@ func (p *FeeDiscountProposal) ValidateBasic() error {
10611079
return sdkerrors.Wrap(ErrInvalidFeeDiscountSchedule, "new fee discount schedule cannot have duplicate quote denoms")
10621080
}
10631081

1082+
for _, marketID := range p.Schedule.DisqualifiedMarketIds {
1083+
if !IsHexHash(marketID) {
1084+
return sdkerrors.Wrap(ErrMarketInvalid, marketID)
1085+
}
1086+
}
1087+
10641088
if HasDuplicates(p.Schedule.DisqualifiedMarketIds) {
10651089
return sdkerrors.Wrap(ErrInvalidFeeDiscountSchedule, "new fee discount schedule cannot have duplicate disqualified market ids")
10661090
}

0 commit comments

Comments
 (0)