Skip to content

Commit

Permalink
program: fix if staking rounding for fee tier selection (#643)
Browse files Browse the repository at this point in the history
* program: fix if staking rounding for fee tier selection

* CHANGELOG

* subtract whole quote
  • Loading branch information
crispheaney committed Oct 5, 2023
1 parent a46a1cb commit 99eb79a
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Fixes

- program: fix if staking rounding for fee tier selection ([#643](https://github.com/drift-labs/protocol-v2/pull/643))

### Breaking

## [2.40.0] - 2023-09-28
Expand Down
16 changes: 10 additions & 6 deletions programs/drift/src/math/fees.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use crate::math::safe_math::SafeMath;
use crate::state::state::{FeeStructure, FeeTier, OrderFillerRewardStructure};
use crate::state::user::{MarketType, UserStats};

use crate::FEE_ADJUSTMENT_MAX;
use crate::{FEE_ADJUSTMENT_MAX, QUOTE_PRECISION_U64};
use solana_program::msg;

#[cfg(test)]
Expand Down Expand Up @@ -402,27 +402,31 @@ fn determine_perp_fee_tier<'a>(
let staked_quote_asset_amount = user_stats.if_staked_quote_asset_amount;

if total_30d_volume >= ONE_HUNDRED_MILLION_QUOTE
|| staked_quote_asset_amount >= TEN_THOUSAND_QUOTE
|| staked_quote_asset_amount >= TEN_THOUSAND_QUOTE - QUOTE_PRECISION_U64
{
return Ok(&fee_structure.fee_tiers[5]);
}

if total_30d_volume >= FIFTY_MILLION_QUOTE
|| staked_quote_asset_amount >= ONE_THOUSAND_QUOTE * 5
|| staked_quote_asset_amount >= ONE_THOUSAND_QUOTE * 5 - QUOTE_PRECISION_U64
{
return Ok(&fee_structure.fee_tiers[4]);
}

if total_30d_volume >= TEN_MILLION_QUOTE || staked_quote_asset_amount >= ONE_THOUSAND_QUOTE * 2
if total_30d_volume >= TEN_MILLION_QUOTE
|| staked_quote_asset_amount >= ONE_THOUSAND_QUOTE * 2 - QUOTE_PRECISION_U64
{
return Ok(&fee_structure.fee_tiers[3]);
}

if total_30d_volume >= FIVE_MILLION_QUOTE || staked_quote_asset_amount >= ONE_THOUSAND_QUOTE {
if total_30d_volume >= FIVE_MILLION_QUOTE
|| staked_quote_asset_amount >= ONE_THOUSAND_QUOTE - QUOTE_PRECISION_U64
{
return Ok(&fee_structure.fee_tiers[2]);
}

if total_30d_volume >= ONE_MILLION_QUOTE || staked_quote_asset_amount >= ONE_THOUSAND_QUOTE / 2
if total_30d_volume >= ONE_MILLION_QUOTE
|| staked_quote_asset_amount >= ONE_THOUSAND_QUOTE / 2 - QUOTE_PRECISION_U64
{
return Ok(&fee_structure.fee_tiers[1]);
}
Expand Down

0 comments on commit 99eb79a

Please sign in to comment.