Skip to content

Commit 7bf4143

Browse files
committed
re-gen
1 parent 43fb0e5 commit 7bf4143

18 files changed

+3224
-842
lines changed

chain/exchange/types/codec.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,15 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
1818
cdc.RegisterConcrete(&MsgInstantPerpetualMarketLaunch{}, "exchange/MsgInstantPerpetualMarketLaunch", nil)
1919
cdc.RegisterConcrete(&MsgInstantExpiryFuturesMarketLaunch{}, "exchange/MsgInstantExpiryFuturesMarketLaunch", nil)
2020
cdc.RegisterConcrete(&MsgCreateSpotLimitOrder{}, "exchange/MsgCreateSpotLimitOrder", nil)
21+
cdc.RegisterConcrete(&MsgBatchCreateSpotLimitOrders{}, "exchange/MsgBatchCreateSpotLimitOrders", nil)
2122
cdc.RegisterConcrete(&MsgCreateSpotMarketOrder{}, "exchange/MsgCreateSpotMarketOrder", nil)
2223
cdc.RegisterConcrete(&MsgCancelSpotOrder{}, "exchange/MsgCancelSpotOrder", nil)
24+
cdc.RegisterConcrete(&MsgBatchCancelSpotOrders{}, "exchange/MsgBatchCancelSpotOrders", nil)
2325
cdc.RegisterConcrete(&MsgCreateDerivativeLimitOrder{}, "exchange/MsgCreateDerivativeLimitOrder", nil)
26+
cdc.RegisterConcrete(&MsgBatchCreateDerivativeLimitOrders{}, "exchange/MsgBatchCreateDerivativeLimitOrders", nil)
2427
cdc.RegisterConcrete(&MsgCreateDerivativeMarketOrder{}, "exchange/MsgCreateDerivativeMarketOrder", nil)
2528
cdc.RegisterConcrete(&MsgCancelDerivativeOrder{}, "exchange/MsgCancelDerivativeOrder", nil)
29+
cdc.RegisterConcrete(&MsgBatchCancelDerivativeOrders{}, "exchange/MsgBatchCancelDerivativeOrders", nil)
2630
cdc.RegisterConcrete(&MsgSubaccountTransfer{}, "exchange/MsgSubaccountTransfer", nil)
2731
cdc.RegisterConcrete(&MsgExternalTransfer{}, "exchange/MsgExternalTransfer", nil)
2832
cdc.RegisterConcrete(&MsgIncreasePositionMargin{}, "exchange/MsgIncreasePositionMargin", nil)
@@ -45,11 +49,15 @@ func RegisterInterfaces(registry types.InterfaceRegistry) {
4549
&MsgInstantPerpetualMarketLaunch{},
4650
&MsgInstantExpiryFuturesMarketLaunch{},
4751
&MsgCreateSpotLimitOrder{},
52+
&MsgBatchCreateSpotLimitOrders{},
4853
&MsgCreateSpotMarketOrder{},
4954
&MsgCancelSpotOrder{},
55+
&MsgBatchCancelSpotOrders{},
5056
&MsgCreateDerivativeLimitOrder{},
57+
&MsgBatchCreateDerivativeLimitOrders{},
5158
&MsgCreateDerivativeMarketOrder{},
5259
&MsgCancelDerivativeOrder{},
60+
&MsgBatchCancelDerivativeOrders{},
5361
&MsgSubaccountTransfer{},
5462
&MsgExternalTransfer{},
5563
&MsgIncreasePositionMargin{},

chain/exchange/types/deposit.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ package types
22

33
import (
44
"bytes"
5+
"sort"
6+
57
sdk "github.com/cosmos/cosmos-sdk/types"
68
"github.com/ethereum/go-ethereum/common"
7-
"sort"
89
)
910

1011
func NewDeposit() *Deposit {

chain/exchange/types/derivative_orderbook.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ type DerivativeOrderbook interface {
1515
}
1616

1717
type DerivativeOrderbookFills struct {
18-
Orders []*DerivativeLimitOrder
19-
FillQuantities []sdk.Dec
18+
Orders []*DerivativeLimitOrder
19+
FillQuantities []sdk.Dec
2020
}

chain/exchange/types/derivative_orders.go

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"github.com/ethereum/go-ethereum/common"
77
)
88

9-
109
func NewMarketOrderForLiquidation(position *Position, positionSubaccountID common.Hash, liquidator sdk.Address) *DerivativeMarketOrder {
1110

1211
// if long position, market sell order at price 0
@@ -87,6 +86,25 @@ func NewDerivativeLimitOrder(o *DerivativeOrder, orderHash common.Hash) *Derivat
8786
}
8887
}
8988

89+
func (o *DerivativeLimitOrder) ToDerivativeOrder(marketID string) *DerivativeOrder {
90+
return &DerivativeOrder{
91+
MarketId: marketID,
92+
OrderInfo: o.OrderInfo,
93+
OrderType: o.OrderType,
94+
Margin: o.Margin,
95+
TriggerPrice: o.TriggerPrice,
96+
}
97+
}
98+
func (o *DerivativeMarketOrder) ToDerivativeOrder(marketID string) *DerivativeOrder {
99+
return &DerivativeOrder{
100+
MarketId: marketID,
101+
OrderInfo: o.OrderInfo,
102+
OrderType: o.OrderType,
103+
Margin: o.Margin,
104+
TriggerPrice: o.TriggerPrice,
105+
}
106+
}
107+
90108
func (o *DerivativeLimitOrder) GetCancelDepositDelta(feeRate sdk.Dec) *DepositDelta {
91109
depositDelta := NewDepositDelta()
92110
if o.IsVanilla() {
@@ -122,17 +140,24 @@ func (o *DerivativeOrder) CheckMarginAndGetMarginHold(market *DerivativeMarket,
122140
return sdk.Dec{}, sdkerrors.Wrapf(ErrInsufficientOrderMargin, "InitialMarginRatio Check: need at least %s but got %s", market.InitialMarginRatio.Mul(notional).String(), o.Margin.String())
123141
}
124142

125-
markPriceThreshold := o.ComputeInitialMarginRequirementMarkPriceThreshold(market.InitialMarginRatio)
143+
if err = o.CheckInitialMarginRequirementMarkPriceThreshold(market.InitialMarginRatio, markPrice); err != nil {
144+
return sdk.Dec{}, err
145+
}
146+
147+
return o.Margin.Add(feeAmount), nil
148+
}
149+
150+
func (o *DerivativeOrder) CheckInitialMarginRequirementMarkPriceThreshold(initialMarginRatio, markPrice sdk.Dec) (err error) {
151+
markPriceThreshold := o.ComputeInitialMarginRequirementMarkPriceThreshold(initialMarginRatio)
126152
// For Buys: MarkPrice ≥ (Margin - Price * Quantity) / ((InitialMarginRatio - 1) * Quantity)
127153
// For Sells: MarkPrice ≤ (Margin + Price * Quantity) / ((1+ InitialMarginRatio) * Quantity)
128154
if o.OrderType.IsBuy() && markPrice.LT(markPriceThreshold) {
129-
return sdk.Dec{}, sdkerrors.Wrapf(ErrInsufficientOrderMargin, "Buy MarkPriceThreshold Check: mark price %s must be GTE %s", markPrice.String(), markPriceThreshold.String())
155+
return sdkerrors.Wrapf(ErrInsufficientOrderMargin, "Buy MarkPriceThreshold Check: mark price %s must be GTE %s", markPrice.String(), markPriceThreshold.String())
130156
} else if !o.OrderType.IsBuy() && markPrice.GT(markPriceThreshold) {
131-
132-
return sdk.Dec{}, sdkerrors.Wrapf(ErrInsufficientOrderMargin, "Sell MarkPriceThreshold Check: mark price %s must be LTE %s", markPrice.String(), markPriceThreshold.String())
157+
return sdkerrors.Wrapf(ErrInsufficientOrderMargin, "Sell MarkPriceThreshold Check: mark price %s must be LTE %s", markPrice.String(), markPriceThreshold.String())
133158
}
134159

135-
return o.Margin.Add(feeAmount), nil
160+
return nil
136161
}
137162

138163
func (o *DerivativeOrder) ComputeInitialMarginRequirementMarkPriceThreshold(initialMarginRatio sdk.Dec) sdk.Dec {
@@ -148,6 +173,14 @@ func (o *DerivativeOrder) ComputeInitialMarginRequirementMarkPriceThreshold(init
148173
return numerator.Quo(denominator)
149174
}
150175

176+
func (o *DerivativeLimitOrder) CheckInitialMarginRequirementMarkPriceThreshold(initialMarginRatio, markPrice sdk.Dec) (err error) {
177+
return o.ToDerivativeOrder("").CheckInitialMarginRequirementMarkPriceThreshold(initialMarginRatio, markPrice)
178+
}
179+
180+
func (o *DerivativeMarketOrder) CheckInitialMarginRequirementMarkPriceThreshold(initialMarginRatio, markPrice sdk.Dec) (err error) {
181+
return o.ToDerivativeOrder("").CheckInitialMarginRequirementMarkPriceThreshold(initialMarginRatio, markPrice)
182+
}
183+
151184
func (o *DerivativeMarketOrder) ComputeOrderHash(nonce uint32, marketId string) (common.Hash, error) {
152185
triggerPrice := ""
153186
if o.TriggerPrice != nil {

chain/exchange/types/derivative_positions.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package types
22

33
import (
44
"bytes"
5-
"fmt"
65
"sort"
76

87
"github.com/ethereum/go-ethereum/common"
@@ -35,7 +34,7 @@ func GetPositionSliceData(p map[common.Hash]*PositionState) ([]*Position, []comm
3534
positions = append(positions, position.Position)
3635
nonNilPositionSubaccountIDs = append(nonNilPositionSubaccountIDs, subaccountID)
3736
} else {
38-
fmt.Println("❌ position is nil for subaccount", subaccountID.Hex())
37+
//fmt.Println("❌ position is nil for subaccount", subaccountID.Hex())
3938
}
4039
}
4140

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package types
2+
3+
func (m *DerivativeMarket) IsTimeExpiry() bool {
4+
return !m.IsPerpetual
5+
}
6+
7+
func (m *DerivativeMarket) IsActive() bool {
8+
return m.Status != MarketStatus_Active
9+
}
10+
11+
func (m *DerivativeMarket) IsInactive() bool {
12+
return !m.IsActive()
13+
}

chain/exchange/types/exchange.go

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,29 @@ func (m *SpotMarket) MarketID() common.Hash {
2020

2121
func (e ExecutionType) IsMarket() bool {
2222
return e == ExecutionType_Market
23-
}
23+
}
24+
25+
func (m *SpotMarket) StatusSupportsOrderCancellations() bool {
26+
if m == nil {
27+
return false
28+
}
29+
return m.Status.supportsOrderCancellations()
30+
}
31+
32+
func (m *DerivativeMarket) StatusSupportsOrderCancellations() bool {
33+
if m == nil {
34+
return false
35+
}
36+
return m.Status.supportsOrderCancellations()
37+
}
38+
39+
func (s MarketStatus) supportsOrderCancellations() bool {
40+
switch s {
41+
case MarketStatus_Active, MarketStatus_Suspended, MarketStatus_Demolished, MarketStatus_Expired:
42+
return true
43+
case MarketStatus_Paused:
44+
return false
45+
default:
46+
return false
47+
}
48+
}

0 commit comments

Comments
 (0)