-
Notifications
You must be signed in to change notification settings - Fork 272
Feat/balancer swap #2290
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: devnet-ready
Are you sure you want to change the base?
Feat/balancer swap #2290
Conversation
…rate_reset_unactive_sn
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We're using Sam's bigmath crate now to handle high precision exponents.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have changed U96F32 to U64F64 for representation of price. F64 has more fractional bits and prices are virtually never greater than 1000 anyway, which is way below u64::MAX.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removing storage for provided reserves. From now on, we can calculate provided reserves using balancer very precisely, no need to store them separately. Anyway, this is only relevant when/if we decide to go for user liquidity with balancer.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If there are any left-overs in provided reserves, add them to reserves before removing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
adjust_protocol_liquidity needs to report how much it actually added to reserves because it is adding fees and this addition needs to be considered when we modify SubnetTAO and SubnetAlphaIn in run_coinbase.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We are not operating square root of prices anymore, so renamed this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file contains the heart of balancer math. All swaps come through this logic. Please read the comments to understand what we're doing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file is where uniswap v3 logic used to be. Reworked to use balancer.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now we can remove all swap v3 maps.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed swap v3 maps and replaced with balancer maps.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unline uniswap v3, balancer swap is always a single step, but yet, swap_step provides cleaner separation of swap logic, and I decided to preserve the structure. See how much simpler it is now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
adjust_protocol_liquidity returns the actual adjustment that needs to be made to reserves, which includes previously collected tao and alpha fees.
When tao fees are charged, the tao is coming from user balance to FeesTao map, not accounted for in SubnetTAO, so it needs to be added here.
When alpha fees are charged, the alpha is coming from user's stake, and is also not accounted for in SubnetAlphaIn.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is still an approximation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Continue removing storage for provided reserves here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Positions are unused atm, but I preserved the struct for later use, when we have user liquidity.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is part of uniswap v3 logic. Not needed anymore.
Description
Implement PalSwap (similar to balancer swap) to replace Uniswap V3.
Type of Change
Breaking Change
This PR changes the following externally accessible entities:
add_liqudiityextrinsic: Remove tick_low and tick_high parameters.Positionsmap is replaced withPositionsV2mapChecklist
./scripts/fix_rust.shto ensure my code is formatted and linted correctly