Migrate Positions from V1 to V2
Migration of positions from the Vesu V1 version is not mandatory. Vesu V1 pools will continue to be supported and there is no risk of maintaining positions in the V1 version. However, liquidity will naturally migrate to the Vesu V2 pools as these will be more deeply integrated in the Starknet ecosystem going forward. Users, and in particular borrowers, are advised to monitor V1 pools and migrate their positions as the borrow conditions indicate decreasing liquidity.
Migration steps
Since the migration of Vesu V1 positions is not required, we don't automate that for users and also don't offer a simplified UI for it. That means, to migrate a position from Vesu V1 to V2, users have to close their V1 position and reopen it in one of the V2 pools. On the Vesu V2 frontend, V1 and V2 pools will be clearly labeled.
Vesu V2 addresses
Find the contract addresses here.
Breaking changes
Vesu V2 introduces some breaking changes compared to V1. We here provide an overview of these changes. If you have more questions, please reach out on our Discord.
- Deprecation of Singleton architecture: Vesu V1 built on a Singleton contract that manages the state and assets for all pools. This concept has been replaced with a Pool instance model where the state and assets are isolated into separate
Poolcontracts. To interact with a position in a specific pool, users now have to send transactions to the specific pool's address instead of the same Singleton address as before. - Removal of hooks and extension: Vesu V1's hooks system has been removed entirely making the separation of pool logic into core and extension unnecessary. In Vesu V2, all logic is now contained in a single
Poolcontract. - Removal of autonomous pool shutdown: The pool shutdown system in Vesu V1 was intended to enable for an orderly wind down of failed pools. This system has added significant complexity to the Vesu V1 codebase since it was designed for immutable pools. With the introduction of the Vesu Security Council and its ability to upgrade pools in case of an emergency, this mechanism was now removed.
- Removal of
transfer_positionfunction: Thetransfer_positionfunction has been removed entirely to simplify the codebase. The same user flows can be achieved by a periphery contract using flash loans. - Removal of
AmountTypeenum: The Vesu V2Amounttype does not support theAmountTypeenum anymore. All Amounts are expressed asDeltatypes. - Removal of
pool_idfields: Since interactions with a specific pool are now isolated on separate instances, thepool_idfield in the following data types has been removed:ModifyPositionParams,LiquidatePositionParams. - Removal of
datafields: Thedatafields was intended for advanced use cases involving hooks in the Vesu V1 codebase. With the removal of hooks, thedatafield was also removed from the following data types:ModifyPositionParams,LiquidatePositionParams. - Removal of
receive_as_sharesflag: Thereceive_as_sharesflag of theLiquidatePositionParamswas deactivated already with the migration of the Vesu V1 codebase to the SingletonV2 implementation that was executed in June 2025. In the Vesu V2 implementation, this flag has now been removed entirely as it was unused. - Addition of
fee_sharesinasset_config: The accrued fee shares are now explicitly tracked in a new variablefee_sharesin theasset_configof the respective asset in a pool. - Addition of
pool_pausing_agent: This is a new role that is added to pools with the ability to pause deposits and withdrawals in an emergency. Pool curators can assign this role, such as Vesu's Hypernative pauser agent.