diff --git a/abci/example/orderbook/app.go b/abci/example/orderbook/app.go index 9b521f30a..d1eabbf76 100644 --- a/abci/example/orderbook/app.go +++ b/abci/example/orderbook/app.go @@ -1,14 +1,10 @@ package orderbook import ( - "errors" - "fmt" - "github.com/cosmos/gogoproto/proto" dbm "github.com/tendermint/tm-db" "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/crypto/ed25519" ) var _ types.Application = (*StateMachine)(nil) @@ -191,110 +187,3 @@ func (sm *StateMachine) ProcessProposal(req types.RequestProcessProposal) types. return types.ResponseProcessProposal{ Status: types.ResponseProcessProposal_ACCEPT} } - -func (msg *MsgBid) ValidateBasic() error { - if err := msg.BidOrder.ValidateBasic(); err != nil { - return err - } - - if err := msg.Pair.ValidateBasic(); err != nil { - return err - } - - if len(msg.BidOrder.Signature) != ed25519.SignatureSize { - return errors.New("invalid signature size") - } - - //quantity to be more than 0 - // price to not be 0 - - return nil -} - -func (msg *MsgAsk) ValidateBasic() error { - if err := msg.AskOrder.ValidateBasic(); err != nil { - return err - } - - if err := msg.Pair.ValidateBasic(); err != nil { - return err - } - - if len(msg.AskOrder.Signature) != ed25519.SignatureSize { - return errors.New("invalid signature size") - } - - - //quantity to be more than 0 - // price to not be 0 - - return nil -} - -func (msg *MsgCreateAccount) ValidateBasic() error { - if len(msg.PublicKey) != ed25519.PubKeySize { - return errors.New("invalid pub key size") - } - - uniqueMap := make(map[string]struct{}, len(msg.Commodities)) - for _, c := range msg.Commodities { - if err := c.ValidateBasic(); err != nil { - return err - } - - if _, ok := uniqueMap[c.Denom]; ok { - return fmt.Errorf("commodity %s declared twice", c.Denom) - } - uniqueMap[c.Denom] = struct{}{} - } - - return nil -} - -func (msg *MsgRegisterPair) ValidateBasic() error { - return msg.Pair.ValidateBasic() -} - -func (c *Commodity) ValidateBasic() error { - if c.Quantity <= 0 { - return errors.New("quantity must be greater than zero") - } - - return nil -} - -func (p *Pair) ValidateBasic() error { - if p.BuyersDenomination == "" || p.SellersDenomination == "" { - return errors.New("inbound and outbound commodities must be present") - } - - if p.BuyersDenomination == p.SellersDenomination { - return errors.New("commodities must not be the same") - } - - return nil -} - -func (o *OrderBid) ValidateBasic() error { - if o.MaxQuantity == 0 { - return errors.New("quantity outbound must be non zero") - } - - if o.MaxPrice <= 0 { - return errors.New("min price must be greater than 0") - } - - return nil -} - -func (o *OrderAsk) ValidateBasic() error { - if o.Quantity == 0 { - return errors.New("quantity outbound must be non zero") - } - - if o.AskPrice <= 0 { - return errors.New("min price must be greater than 0") - } - - return nil -} \ No newline at end of file diff --git a/abci/example/orderbook/types.go b/abci/example/orderbook/types.go new file mode 100644 index 000000000..d15b55fec --- /dev/null +++ b/abci/example/orderbook/types.go @@ -0,0 +1,115 @@ +package orderbook + +import ( + "errors" + "fmt" + + "github.com/tendermint/tendermint/crypto/ed25519" +) + +func (msg *MsgBid) ValidateBasic() error { + if err := msg.BidOrder.ValidateBasic(); err != nil { + return err + } + + if err := msg.Pair.ValidateBasic(); err != nil { + return err + } + + if len(msg.BidOrder.Signature) != ed25519.SignatureSize { + return errors.New("invalid signature size") + } + + //quantity to be more than 0 + // price to not be 0 + + return nil +} + +func (msg *MsgAsk) ValidateBasic() error { + if err := msg.AskOrder.ValidateBasic(); err != nil { + return err + } + + if err := msg.Pair.ValidateBasic(); err != nil { + return err + } + + if len(msg.AskOrder.Signature) != ed25519.SignatureSize { + return errors.New("invalid signature size") + } + + + //quantity to be more than 0 + // price to not be 0 + + return nil +} + +func (msg *MsgCreateAccount) ValidateBasic() error { + if len(msg.PublicKey) != ed25519.PubKeySize { + return errors.New("invalid pub key size") + } + + uniqueMap := make(map[string]struct{}, len(msg.Commodities)) + for _, c := range msg.Commodities { + if err := c.ValidateBasic(); err != nil { + return err + } + + if _, ok := uniqueMap[c.Denom]; ok { + return fmt.Errorf("commodity %s declared twice", c.Denom) + } + uniqueMap[c.Denom] = struct{}{} + } + + return nil +} + +func (msg *MsgRegisterPair) ValidateBasic() error { + return msg.Pair.ValidateBasic() +} + +func (c *Commodity) ValidateBasic() error { + if c.Quantity <= 0 { + return errors.New("quantity must be greater than zero") + } + + return nil +} + +func (p *Pair) ValidateBasic() error { + if p.BuyersDenomination == "" || p.SellersDenomination == "" { + return errors.New("inbound and outbound commodities must be present") + } + + if p.BuyersDenomination == p.SellersDenomination { + return errors.New("commodities must not be the same") + } + + return nil +} + +func (o *OrderBid) ValidateBasic() error { + if o.MaxQuantity == 0 { + return errors.New("quantity outbound must be non zero") + } + + if o.MaxPrice <= 0 { + return errors.New("min price must be greater than 0") + } + + return nil +} + +func (o *OrderAsk) ValidateBasic() error { + if o.Quantity == 0 { + return errors.New("quantity outbound must be non zero") + } + + if o.AskPrice <= 0 { + return errors.New("min price must be greater than 0") + } + + return nil +} \ No newline at end of file