Skip to content

Commit

Permalink
Merge pull request #11310 from vegaprotocol/pegged_update
Browse files Browse the repository at this point in the history
fix: handle invalid offset for pegged on market update when tick size…
  • Loading branch information
jeremyletang committed May 23, 2024
1 parent 1c7f3dd commit d7b7cda
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
6 changes: 5 additions & 1 deletion core/execution/future/market.go
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,8 @@ func (m *Market) Update(ctx context.Context, config *types.Market, oracleEngine
if tickSizeChanged {
peggedOrders := m.matching.GetActivePeggedOrderIDs()
peggedOrders = append(peggedOrders, m.peggedOrders.GetParkedIDs()...)

tickSizeInAsset, _ := num.UintFromDecimal(m.mkt.TickSize.ToDecimal().Mul(m.priceFactor))
for _, po := range peggedOrders {
order, err := m.matching.GetOrderByID(po)
if err != nil {
Expand All @@ -651,7 +653,9 @@ func (m *Market) Update(ctx context.Context, config *types.Market, oracleEngine
continue
}
}
if !num.UintZero().Mod(order.PeggedOrder.Offset, m.mkt.TickSize).IsZero() {
offsetInAsset, _ := num.UintFromDecimal(order.PeggedOrder.Offset.ToDecimal().Mul(m.priceFactor))
if !num.UintZero().Mod(order.PeggedOrder.Offset, m.mkt.TickSize).IsZero() ||
(order.PeggedOrder.Reference == types.PeggedReferenceMid && offsetInAsset.IsZero() && tickSizeInAsset.IsZero()) {
m.cancelOrder(ctx, order.Party, order.ID)
}
}
Expand Down
5 changes: 4 additions & 1 deletion core/execution/spot/market.go
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ func (m *Market) Update(ctx context.Context, config *types.Market) error {
m.updateLiquidityFee(ctx)

if tickSizeChanged {
tickSizeInAsset, _ := num.UintFromDecimal(m.mkt.TickSize.ToDecimal().Mul(m.priceFactor))
peggedOrders := m.matching.GetActivePeggedOrderIDs()
peggedOrders = append(peggedOrders, m.peggedOrders.GetParkedIDs()...)
for _, po := range peggedOrders {
Expand All @@ -307,7 +308,9 @@ func (m *Market) Update(ctx context.Context, config *types.Market) error {
continue
}
}
if !num.UintZero().Mod(order.PeggedOrder.Offset, m.mkt.TickSize).IsZero() {
offsetInAsset, _ := num.UintFromDecimal(order.PeggedOrder.Offset.ToDecimal().Mul(m.priceFactor))
if !num.UintZero().Mod(order.PeggedOrder.Offset, m.mkt.TickSize).IsZero() ||
(order.PeggedOrder.Reference == types.PeggedReferenceMid && offsetInAsset.IsZero() && tickSizeInAsset.IsZero()) {
m.cancelOrder(ctx, order.Party, order.ID)
}
}
Expand Down

0 comments on commit d7b7cda

Please sign in to comment.