We are delighted to announce that our V3Utils contract has undergone a comprehensive audit by Peckshield, resulting in its redeployment with enhanced security measures. The audit successfully identified and addressed two low-severity issues and one informational issue. For those who are interested, the full audit report is available here.
Let’s do a quick review of the functionality provided by the V3Utis contract that is now available on the app:
Swap and Increase liquidity: Takes any amount of token0, token1, or a third arbitrary token and a Uniswap v3 position NFT. It will swap the tokens into the correct amounts according to parameters passed given the position range, pool price, 0x quotes, and max slippage parameters, perform any required swaps, add the swapped tokens into the Uniswap position and return the NFT to the user.
Decrease liquidity and swap: Is the inverse operation, given a Uniswap position NFT and a desired output token, which does not require to be any of the underlying assets, it will decrease liquidity by the amount indicated by the user and perform the swap as defined by the 0x API, and max slippage parameters, and finally return to the calling user the output of the swap(s) as well as the position NFT. It can be performed by any amount of liquidity contained by the position.
Collect fees and swap: This one, similarly, allows users to collect any amount of uncollected fees on their Uniswap v3 position and atomically swap them into any token. Returning, at the end of the operation, the output of the swaps as well as position NFT with the underlying liquidity untouched.
Our team is dedicated to providing the best user experience, and we have responded to users' requests by developing two additional functions.
Swap and Mint: Similar to “Swap and increase liquidity”, it will take any amount of token0 and token1, or a third arbitrary token, and will perform the required swaps to create a position on the selected pool for a position range, it will then return the newly minted position to the user.
Move range: Allows LPs to exit from an existing position into another position in the same pool by atomically withdrawing existing liquidity and uncollected fees, swapping the withdrawn tokens into the correct allocation given the newly selected range, depositing the tokens and minting a new position which is then sent back to the user.
We are currently testing the integration of these new functionalities on the frontend, and they will be shipped soon. Stay tuned!