Skip to content

Commit

Permalink
added fill orders message
Browse files Browse the repository at this point in the history
  • Loading branch information
stefan.balea committed Jan 31, 2025
1 parent 8905e1d commit 3d09912
Show file tree
Hide file tree
Showing 16 changed files with 1,303 additions and 328 deletions.
15 changes: 15 additions & 0 deletions proto/tradebin/tx.proto
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ service Msg {
rpc CreateMarket(MsgCreateMarket) returns (MsgCreateMarketResponse);
rpc CreateOrder(MsgCreateOrder) returns (MsgCreateOrderResponse);
rpc CancelOrder(MsgCancelOrder) returns (MsgCancelOrderResponse);
rpc FillOrders(MsgFillOrders) returns (MsgFillOrdersResponse);
// this line is used by starport scaffolding # proto/tx/rpc
}

Expand Down Expand Up @@ -43,4 +44,18 @@ message MsgCancelOrder {
message MsgCancelOrderResponse {
}

message FillOrderItem {
string price = 1;
string amount = 2;
}

message MsgFillOrders {
string creator = 1;
string marketId = 2;
string order_type = 3;
repeated FillOrderItem orders = 4;
}

message MsgFillOrdersResponse {}

// this line is used by starport scaffolding # proto/tx/message
144 changes: 144 additions & 0 deletions x/tradebin/client/cli/tx.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package cli

import (
"encoding/json"
"fmt"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/client/tx"
"strconv"
"time"

"github.com/spf13/cobra"
Expand All @@ -13,6 +17,7 @@ import (

var (
DefaultRelativePacketTimeoutTimestamp = uint64((time.Duration(10) * time.Minute).Nanoseconds())
_ = strconv.Itoa(0)
)

const (
Expand All @@ -37,3 +42,142 @@ func GetTxCmd() *cobra.Command {

return cmd
}

func CmdCancelOrder() *cobra.Command {
cmd := &cobra.Command{
Use: "cancel-order [market-id] [order-id] [order-type]",
Short: "Broadcast message CancelOrder",
Args: cobra.ExactArgs(3),
RunE: func(cmd *cobra.Command, args []string) (err error) {
argMarketId := args[0]
argOrderId := args[1]
argOrderType := args[2]

clientCtx, err := client.GetClientTxContext(cmd)
if err != nil {
return err
}

msg := types.NewMsgCancelOrder(
clientCtx.GetFromAddress().String(),
argMarketId,
argOrderId,
argOrderType,
)
if err := msg.ValidateBasic(); err != nil {
return err
}
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
}

flags.AddTxFlagsToCmd(cmd)

return cmd
}

func CmdCreateMarket() *cobra.Command {
cmd := &cobra.Command{
Use: "create-market [base] [quote]",
Short: "Broadcast message CreateMarket",
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) (err error) {
argAsset1 := args[0]
argAsset2 := args[1]

clientCtx, err := client.GetClientTxContext(cmd)
if err != nil {
return err
}

msg := types.NewMsgCreateMarket(
clientCtx.GetFromAddress().String(),
argAsset1,
argAsset2,
)
if err := msg.ValidateBasic(); err != nil {
return err
}
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
}

flags.AddTxFlagsToCmd(cmd)

return cmd
}

func CmdCreateOrder() *cobra.Command {
cmd := &cobra.Command{
Use: "create-order [order-type] [amount] [price] [market-id]",
Short: "Broadcast message CreateOrder",
Args: cobra.ExactArgs(4),
RunE: func(cmd *cobra.Command, args []string) (err error) {
argOrderType := args[0]
argAmount := args[1]
argPrice := args[2]
argMarketId := args[3]

clientCtx, err := client.GetClientTxContext(cmd)
if err != nil {
return err
}

msg := types.NewMsgCreateOrder(
clientCtx.GetFromAddress().String(),
argOrderType,
argAmount,
argPrice,
argMarketId,
)
if err := msg.ValidateBasic(); err != nil {
return err
}
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
}

flags.AddTxFlagsToCmd(cmd)

return cmd
}

func CmdFillOrders() *cobra.Command {
cmd := &cobra.Command{
Use: "fill-orders [order-type] [market-id] [orders]",
Short: "Broadcast message FillOrders",
Long: "This command expects [orders] to be an array of objects of form: {amount: 231, price:0.32}",
Args: cobra.ExactArgs(3),
RunE: func(cmd *cobra.Command, args []string) (err error) {
argOrderType := args[0]
argMarketId := args[1]
argOrders := args[2]
var decodedOrders []*types.FillOrderItem
err = json.Unmarshal([]byte(argOrders), &decodedOrders)
if err != nil {
return err
}

clientCtx, err := client.GetClientTxContext(cmd)
if err != nil {
return err
}

msg := types.NewMsgFillOrders(
clientCtx.GetFromAddress().String(),
argOrderType,
argMarketId,
decodedOrders,
)
if err := msg.ValidateBasic(); err != nil {
return err
}

return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
}

flags.AddTxFlagsToCmd(cmd)

return cmd
}
46 changes: 0 additions & 46 deletions x/tradebin/client/cli/tx_cancel_order.go

This file was deleted.

44 changes: 0 additions & 44 deletions x/tradebin/client/cli/tx_create_market.go

This file was deleted.

48 changes: 0 additions & 48 deletions x/tradebin/client/cli/tx_create_order.go

This file was deleted.

2 changes: 1 addition & 1 deletion x/tradebin/keeper/msg_server_cancel_order.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ func (k msgServer) CancelOrder(goCtx context.Context, msg *types.MsgCancelOrder)

qm := types.QueueMessage{
MarketId: msg.MarketId,
MessageType: types.OrderTypeCancel,
MessageType: types.MessageTypeCancel,
OrderId: msg.OrderId,
OrderType: msg.OrderType,
Owner: msg.Creator,
Expand Down
4 changes: 2 additions & 2 deletions x/tradebin/keeper/msg_server_cancel_order_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func (suite *IntegrationTestSuite) TestCancelOrder_CancelBuy_Success() {
suite.Require().Len(qms, 1)

suite.Require().Equal(qms[0].MarketId, order.MarketId)
suite.Require().Equal(qms[0].MessageType, types.OrderTypeCancel)
suite.Require().Equal(qms[0].MessageType, types.MessageTypeCancel)
suite.Require().Equal(qms[0].OrderId, order.Id)
suite.Require().Equal(qms[0].OrderType, order.OrderType)
suite.Require().Equal(qms[0].Owner, order.Owner)
Expand Down Expand Up @@ -100,7 +100,7 @@ func (suite *IntegrationTestSuite) TestCancelOrder_CancelSell_Success() {
suite.Require().Len(qms, 1)

suite.Require().Equal(qms[0].MarketId, order.MarketId)
suite.Require().Equal(qms[0].MessageType, types.OrderTypeCancel)
suite.Require().Equal(qms[0].MessageType, types.MessageTypeCancel)
suite.Require().Equal(qms[0].OrderId, order.Id)
suite.Require().Equal(qms[0].OrderType, order.OrderType)
suite.Require().Equal(qms[0].Owner, order.Owner)
Expand Down
Loading

0 comments on commit 3d09912

Please sign in to comment.