Skip to content

Commit

Permalink
Refactor cross_tick function in invariant-type module
Browse files Browse the repository at this point in the history
  • Loading branch information
wojciech-cichocki committed Apr 3, 2024
1 parent f3fac09 commit e9c96a6
Showing 1 changed file with 5 additions and 14 deletions.
19 changes: 5 additions & 14 deletions programs/invariant/invariant-types/src/math.rs
Original file line number Diff line number Diff line change
Expand Up @@ -494,22 +494,13 @@ pub fn cross_tick(tick: &mut RefMut<Tick>, pool: &mut Pool) -> Result<()> {
.unchecked_sub(tick.fee_growth_outside_y);

// When going to higher tick net_liquidity should be added and for going lower subtracted
if (pool.current_tick_index >= tick.index) ^ tick.sign {
match pool.liquidity.checked_add(tick.liquidity_change) {
Ok(liquidity) => pool.liquidity = liquidity,
Err(_) => {
return Err(InvariantErrorCode::InvalidPoolLiquidity.into());
}
}
let new_liquidity = if (pool.current_tick_index >= tick.index) ^ tick.sign {
pool.liquidity.checked_add(tick.liquidity_change)
} else {
match pool.liquidity.checked_sub(tick.liquidity_change) {
Ok(liquidity) => pool.liquidity = liquidity,
Err(_) => {
return Err(InvariantErrorCode::InvalidPoolLiquidity.into());
}
}
}
pool.liquidity.checked_sub(tick.liquidity_change)
};

pool.liquidity = new_liquidity.map_err(|_| InvariantErrorCode::InvalidPoolLiquidity)?;
Ok(())
}

Expand Down

0 comments on commit e9c96a6

Please sign in to comment.