Skip to content

Commit 0e9b82f

Browse files
committed
PR comments, featureflag clean up
1 parent cb96b3b commit 0e9b82f

File tree

8 files changed

+58
-39
lines changed

8 files changed

+58
-39
lines changed

programs/drift/src/controller/liquidation.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,7 @@ pub fn liquidate_perp(
676676
maker_existing_base_asset_amount: maker_existing_base_asset_amount,
677677
trigger_price: None,
678678
builder_idx: None,
679-
builder_fee: 0,
679+
builder_fee: None,
680680
};
681681
emit!(fill_record);
682682

programs/drift/src/controller/orders.rs

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ pub fn place_perp_order(
448448
None,
449449
None,
450450
None,
451-
0,
451+
None,
452452
)?;
453453
emit_stack::<_, { OrderActionRecord::SIZE }>(order_action_record)?;
454454

@@ -730,7 +730,7 @@ pub fn cancel_order(
730730
None,
731731
None,
732732
None,
733-
0,
733+
None,
734734
)?;
735735
emit_stack::<_, { OrderActionRecord::SIZE }>(order_action_record)?;
736736
}
@@ -2304,9 +2304,9 @@ pub fn fulfill_perp_order_with_amm(
23042304
filler_reward,
23052305
referee_discount,
23062306
referrer_reward,
2307-
fee_to_market_for_lp: _fee_to_market_for_lp,
2307+
fee_to_market_for_lp,
23082308
maker_rebate,
2309-
builder_fee,
2309+
builder_fee: builder_fee_option,
23102310
} = fees::calculate_fee_for_fulfillment_with_amm(
23112311
user_stats,
23122312
quote_asset_amount,
@@ -2323,6 +2323,8 @@ pub fn fulfill_perp_order_with_amm(
23232323
builder_order_fee_bps,
23242324
)?;
23252325

2326+
let builder_fee = builder_fee_option.unwrap_or(0);
2327+
23262328
if let (Some(idx), Some(escrow)) = (builder_order_idx, rev_share_escrow.as_mut()) {
23272329
let mut order = escrow.get_order_mut(idx)?;
23282330
order.fees_accrued = order.fees_accrued.safe_add(builder_fee)?;
@@ -2365,7 +2367,7 @@ pub fn fulfill_perp_order_with_amm(
23652367

23662368
let position_index = get_position_index(&user.perp_positions, market.market_index)?;
23672369

2368-
if user_fee != 0 {
2370+
if user_fee != 0 || builder_fee != 0 {
23692371
controller::position::update_quote_asset_and_break_even_amount(
23702372
&mut user.perp_positions[position_index],
23712373
market,
@@ -2502,7 +2504,7 @@ pub fn fulfill_perp_order_with_amm(
25022504
maker_existing_base_asset_amount,
25032505
None,
25042506
builder_idx,
2505-
builder_fee,
2507+
builder_fee_option,
25062508
)?;
25072509
emit_stack::<_, { OrderActionRecord::SIZE }>(order_action_record)?;
25082510

@@ -2804,7 +2806,7 @@ pub fn fulfill_perp_order_with_match(
28042806
filler_reward,
28052807
referrer_reward,
28062808
referee_discount,
2807-
builder_fee,
2809+
builder_fee: builder_fee_option,
28082810
..
28092811
} = fees::calculate_fee_for_fulfillment_with_match(
28102812
taker_stats,
@@ -2821,6 +2823,7 @@ pub fn fulfill_perp_order_with_match(
28212823
taker.is_high_leverage_mode(MarginRequirementType::Initial),
28222824
builder_order_fee_bps,
28232825
)?;
2826+
let builder_fee = builder_fee_option.unwrap_or(0);
28242827

28252828
if let (Some(idx), Some(escrow)) = (builder_order_idx, builder_escrow.as_deref_mut()) {
28262829
let mut order = escrow.get_order_mut(idx)?;
@@ -2983,7 +2986,7 @@ pub fn fulfill_perp_order_with_match(
29832986
maker_existing_base_asset_amount,
29842987
None,
29852988
builder_idx,
2986-
builder_fee,
2989+
builder_fee_option,
29872990
)?;
29882991
emit_stack::<_, { OrderActionRecord::SIZE }>(order_action_record)?;
29892992

@@ -3221,7 +3224,7 @@ pub fn trigger_order(
32213224
None,
32223225
Some(trigger_price),
32233226
None,
3224-
0,
3227+
None,
32253228
)?;
32263229
emit!(order_action_record);
32273230

@@ -3786,7 +3789,7 @@ pub fn place_spot_order(
37863789
None,
37873790
None,
37883791
None,
3789-
0,
3792+
None,
37903793
)?;
37913794
emit_stack::<_, { OrderActionRecord::SIZE }>(order_action_record)?;
37923795

@@ -5031,7 +5034,7 @@ pub fn fulfill_spot_order_with_match(
50315034
None,
50325035
None,
50335036
None,
5034-
0,
5037+
None,
50355038
)?;
50365039
emit_stack::<_, { OrderActionRecord::SIZE }>(order_action_record)?;
50375040

@@ -5307,7 +5310,7 @@ pub fn fulfill_spot_order_with_external_market(
53075310
None,
53085311
None,
53095312
None,
5310-
0,
5313+
None,
53115314
)?;
53125315
emit_stack::<_, { OrderActionRecord::SIZE }>(order_action_record)?;
53135316

@@ -5513,7 +5516,7 @@ pub fn trigger_spot_order(
55135516
None,
55145517
Some(oracle_price.unsigned_abs()),
55155518
None,
5516-
0,
5519+
None,
55175520
)?;
55185521

55195522
emit!(order_action_record);

programs/drift/src/controller/revenue_share.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ pub fn sweep_completed_revenue_share_for_market<'a>(
5858
};
5959

6060
if is_referral_order {
61-
if fees_accrued == 0 {
61+
if fees_accrued == 0
62+
|| !(order_market_type == MarketType::Perp && order_market_index == market_index)
63+
{
6264
continue;
6365
}
6466
} else if !(is_completed

programs/drift/src/error.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -647,16 +647,12 @@ pub enum ErrorCode {
647647
InvalidBuilderFee,
648648
#[msg("RevenueShareEscrow has too many active orders")]
649649
RevenueShareEscrowOrdersAccountFull,
650-
#[msg("RevenueShareEscrow missing")]
651-
RevenueShareEscrowMissing,
652650
#[msg("Invalid RevenueShareAccount")]
653651
InvalidRevenueShareAccount,
654652
#[msg("Cannot revoke builder with open orders")]
655653
CannotRevokeBuilderWithOpenOrders,
656654
#[msg("Unable to load builder account")]
657655
UnableToLoadRevenueShareAccount,
658-
#[msg("RevenueShare order not found")]
659-
RevenueShareOrderNotFound,
660656
}
661657

662658
#[macro_export]

programs/drift/src/instructions/keeper.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,9 @@ fn fill_order<'c: 'info, 'info>(
145145
let (makers_and_referrer, makers_and_referrer_stats) =
146146
load_user_maps(remaining_accounts_iter, true)?;
147147

148-
let mut escrow = if state.builder_codes_enabled() {
148+
let builder_codes_enabled = state.builder_codes_enabled();
149+
let builder_referral_enabled = state.builder_referral_enabled();
150+
let mut escrow = if builder_codes_enabled || builder_referral_enabled {
149151
get_revenue_share_escrow_account(&mut remaining_accounts_iter)?
150152
} else {
151153
None
@@ -175,7 +177,7 @@ fn fill_order<'c: 'info, 'info>(
175177
clock,
176178
FillMode::Fill,
177179
&mut escrow.as_mut(),
178-
state.builder_referral_enabled(),
180+
builder_referral_enabled,
179181
)?;
180182

181183
Ok(())

programs/drift/src/instructions/user.rs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2029,7 +2029,7 @@ pub fn handle_transfer_perp_position<'c: 'info, 'info>(
20292029
maker_existing_base_asset_amount: from_existing_base_asset_amount,
20302030
trigger_price: None,
20312031
builder_idx: None,
2032-
builder_fee: 0,
2032+
builder_fee: None,
20332033
};
20342034

20352035
emit_stack::<_, { OrderActionRecord::SIZE }>(fill_record)?;
@@ -2594,7 +2594,13 @@ pub fn handle_place_and_make_perp_order<'c: 'info, 'info>(
25942594
makers_and_referrer.insert(ctx.accounts.user.key(), ctx.accounts.user.clone())?;
25952595
makers_and_referrer_stats.insert(authority, ctx.accounts.user_stats.clone())?;
25962596

2597-
let mut escrow = get_revenue_share_escrow_account(remaining_accounts_iter)?;
2597+
let builder_referral_enabled = state.builder_referral_enabled();
2598+
let builder_codes_enabled = state.builder_codes_enabled();
2599+
let mut escrow = if builder_codes_enabled || builder_referral_enabled {
2600+
get_revenue_share_escrow_account(remaining_accounts_iter)?
2601+
} else {
2602+
None
2603+
};
25982604

25992605
controller::orders::fill_perp_order(
26002606
taker_order_id,
@@ -2612,7 +2618,7 @@ pub fn handle_place_and_make_perp_order<'c: 'info, 'info>(
26122618
clock,
26132619
FillMode::PlaceAndMake,
26142620
&mut escrow.as_mut(),
2615-
state.builder_referral_enabled(),
2621+
builder_referral_enabled,
26162622
)?;
26172623

26182624
let order_exists = load!(ctx.accounts.user)?
@@ -2700,7 +2706,13 @@ pub fn handle_place_and_make_signed_msg_perp_order<'c: 'info, 'info>(
27002706
makers_and_referrer.insert(ctx.accounts.user.key(), ctx.accounts.user.clone())?;
27012707
makers_and_referrer_stats.insert(authority, ctx.accounts.user_stats.clone())?;
27022708

2703-
let mut escrow = get_revenue_share_escrow_account(remaining_accounts_iter)?;
2709+
let builder_referral_enabled = state.builder_referral_enabled();
2710+
let builder_codes_enabled = state.builder_codes_enabled();
2711+
let mut escrow = if builder_codes_enabled || builder_referral_enabled {
2712+
get_revenue_share_escrow_account(remaining_accounts_iter)?
2713+
} else {
2714+
None
2715+
};
27042716

27052717
let taker_signed_msg_account = ctx.accounts.taker_signed_msg_user_orders.load()?;
27062718
let taker_order_id = taker_signed_msg_account
@@ -2725,7 +2737,7 @@ pub fn handle_place_and_make_signed_msg_perp_order<'c: 'info, 'info>(
27252737
clock,
27262738
FillMode::PlaceAndMake,
27272739
&mut escrow.as_mut(),
2728-
state.builder_referral_enabled(),
2740+
builder_referral_enabled,
27292741
)?;
27302742

27312743
let order_exists = load!(ctx.accounts.user)?

programs/drift/src/math/fees.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ pub struct FillFees {
3131
pub filler_reward: u64,
3232
pub referrer_reward: u64,
3333
pub referee_discount: u64,
34-
pub builder_fee: u64,
34+
pub builder_fee: Option<u64>,
3535
}
3636

3737
pub fn calculate_fee_for_fulfillment_with_amm(
@@ -95,7 +95,7 @@ pub fn calculate_fee_for_fulfillment_with_amm(
9595
filler_reward,
9696
referrer_reward: 0,
9797
referee_discount: 0,
98-
builder_fee: 0,
98+
builder_fee: None,
9999
})
100100
} else {
101101
let mut fee = calculate_taker_fee(quote_asset_amount, &fee_tier, fee_adjustment)?;
@@ -136,11 +136,13 @@ pub fn calculate_fee_for_fulfillment_with_amm(
136136
let fee_to_market_for_lp = fee_to_market.safe_sub(quote_asset_amount_surplus)?;
137137

138138
let builder_fee = if let Some(builder_fee_bps) = builder_fee_bps {
139-
quote_asset_amount
140-
.safe_mul(builder_fee_bps.cast()?)?
141-
.safe_div(100_000)?
139+
Some(
140+
quote_asset_amount
141+
.safe_mul(builder_fee_bps.cast()?)?
142+
.safe_div(100_000)?,
143+
)
142144
} else {
143-
0
145+
None
144146
};
145147

146148
// must be non-negative
@@ -352,11 +354,13 @@ pub fn calculate_fee_for_fulfillment_with_match(
352354
.cast::<i64>()?;
353355

354356
let builder_fee = if let Some(builder_fee_bps) = builder_fee_bps {
355-
quote_asset_amount
356-
.safe_mul(builder_fee_bps.cast()?)?
357-
.safe_div(100_000)?
357+
Some(
358+
quote_asset_amount
359+
.safe_mul(builder_fee_bps.cast()?)?
360+
.safe_div(100_000)?,
361+
)
358362
} else {
359-
0
363+
None
360364
};
361365

362366
Ok(FillFees {

programs/drift/src/state/events.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,11 +260,11 @@ pub struct OrderActionRecord {
260260
/// the idx of the builder in the taker's [`RevenueShareEscrow`] account
261261
pub builder_idx: Option<u8>,
262262
/// precision: QUOTE_PRECISION builder fee paid by the taker
263-
pub builder_fee: u64,
263+
pub builder_fee: Option<u64>,
264264
}
265265

266266
impl Size for OrderActionRecord {
267-
const SIZE: usize = 472;
267+
const SIZE: usize = 480;
268268
}
269269

270270
pub fn get_order_action_record(
@@ -294,7 +294,7 @@ pub fn get_order_action_record(
294294
maker_existing_base_asset_amount: Option<u64>,
295295
trigger_price: Option<u64>,
296296
builder_idx: Option<u8>,
297-
builder_fee: u64,
297+
builder_fee: Option<u64>,
298298
) -> DriftResult<OrderActionRecord> {
299299
Ok(OrderActionRecord {
300300
ts,

0 commit comments

Comments
 (0)