Skip to content

Commit e0ae659

Browse files
authored
program: make it easer to fill min order size orders (#1799)
* program: make it easer to fill min order size orders * reduce only tweak * CHANGELOG
1 parent 6b7a388 commit e0ae659

File tree

3 files changed

+11
-9
lines changed

3 files changed

+11
-9
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1515

1616
### Fixes
1717

18+
- program: make it easier to fill step size orders ([#1799](https://github.com/drift-labs/protocol-v2/pull/1799))
1819
- program: relax fee tier constraints for maker ([#1876](https://github.com/drift-labs/protocol-v2/pull/1876))
1920

2021
### Breaking

programs/drift/src/controller/orders.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2172,12 +2172,13 @@ pub fn fulfill_perp_order_with_amm(
21722172
};
21732173

21742174
// if user position is less than min order size, step size is the threshold
2175-
let amm_size_threshold =
2176-
if existing_base_asset_amount.unsigned_abs() > market.amm.min_order_size {
2177-
market.amm.min_order_size
2178-
} else {
2179-
market.amm.order_step_size
2180-
};
2175+
let amm_size_threshold = if !user.orders[order_index].reduce_only
2176+
&& existing_base_asset_amount.unsigned_abs() > market.amm.min_order_size
2177+
{
2178+
market.amm.min_order_size
2179+
} else {
2180+
market.amm.order_step_size
2181+
};
21812182

21822183
if base_asset_amount < amm_size_threshold {
21832184
// if is an actual swap (and not amm jit order) then msg!

programs/drift/src/validation/order.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ fn validate_limit_order(
142142
order,
143143
market.amm.order_step_size,
144144
market.amm.min_order_size,
145-
order.reduce_only,
145+
order.reduce_only || order.is_jit_maker(),
146146
)?;
147147

148148
if order.price == 0 && !order.has_oracle_price_offset() {
@@ -339,7 +339,7 @@ fn validate_base_asset_amount(
339339
order: &Order,
340340
step_size: u64,
341341
min_order_size: u64,
342-
reduce_only: bool,
342+
reduce_only_or_jit_maker: bool,
343343
) -> DriftResult {
344344
if order.base_asset_amount == 0 {
345345
msg!("Order base_asset_amount cant be 0");
@@ -355,7 +355,7 @@ fn validate_base_asset_amount(
355355
)?;
356356

357357
validate!(
358-
reduce_only || order.base_asset_amount >= min_order_size,
358+
reduce_only_or_jit_maker || order.base_asset_amount >= min_order_size,
359359
ErrorCode::InvalidOrderMinOrderSize,
360360
"Order base_asset_amount ({}) < min_order_size ({})",
361361
order.base_asset_amount,

0 commit comments

Comments
 (0)