Skip to content

Commit 6b7a388

Browse files
0xbigzcrispheaney
andauthored
program: relax fee tier constraints for maker tier (#1876)
* program: fix-fee-validate-different-denoms * fix build * CHANGELOG --------- Co-authored-by: Chris Heaney <[email protected]>
1 parent 194373a commit 6b7a388

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

CHANGELOG.md

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

1616
### Fixes
1717

18+
- program: relax fee tier constraints for maker ([#1876](https://github.com/drift-labs/protocol-v2/pull/1876))
19+
1820
### Breaking
1921

2022
## [2.136.0] - 2025-09-03

programs/drift/src/validation/fee_structure.rs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use crate::msg;
33
use crate::error::{DriftResult, ErrorCode};
44
use crate::math::constants::{
55
FEE_DENOMINATOR, FEE_PERCENTAGE_DENOMINATOR, OPEN_ORDER_MARGIN_REQUIREMENT,
6+
PERCENTAGE_PRECISION,
67
};
78
use crate::state::state::{FeeStructure, FeeTier};
89
use crate::validate;
@@ -89,14 +90,26 @@ pub fn validate_fee_tier(
8990
)?;
9091

9192
let taker_fee = fee_tier.fee_numerator * (100 - fee_tier.referee_fee_numerator) / 100;
92-
let fee_to_market = taker_fee
93-
- fee_tier.maker_rebate_numerator
93+
let fee_to_market_pre_maker = taker_fee
9494
- taker_fee * (fee_tier.referrer_reward_numerator + filler_reward_numerator) / 100;
9595

9696
validate!(
97-
fee_to_market <= fee_tier.fee_numerator,
97+
fee_to_market_pre_maker <= fee_tier.fee_numerator,
9898
ErrorCode::InvalidFeeStructure,
99-
"invalid fee to market ({}) for index ({})",
99+
"invalid taker fee to market ({}) for index ({})",
100+
fee_tier.referrer_reward_numerator,
101+
fee_tier_index,
102+
)?;
103+
104+
let fee_to_market = fee_to_market_pre_maker as u128 * PERCENTAGE_PRECISION
105+
/ fee_tier.fee_denominator as u128
106+
- fee_tier.maker_rebate_numerator as u128 * PERCENTAGE_PRECISION
107+
/ fee_tier.maker_rebate_denominator as u128;
108+
109+
validate!(
110+
fee_to_market >= 0,
111+
ErrorCode::InvalidFeeStructure,
112+
"invalid maker fee to market ({}) for index ({})",
100113
fee_tier.referrer_reward_numerator,
101114
fee_tier_index,
102115
)?;

0 commit comments

Comments
 (0)