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
Pool
contracts. 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
Pool
contract. - 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_position
function: Thetransfer_position
function has been removed entirely to simplify the codebase. The same user flows can be achieved by a periphery contract using flash loans. - Removal of
AmountType
enum: The Vesu V2Amount
type does not support theAmountType
enum anymore. All Amounts are expressed asDelta
types. - Removal of
pool_id
fields: Since interactions with a specific pool are now isolated on separate instances, thepool_id
field in the following data types has been removed:ModifyPositionParams
,LiquidatePositionParams
. - Removal of
data
fields: Thedata
fields was intended for advanced use cases involving hooks in the Vesu V1 codebase. With the removal of hooks, thedata
field was also removed from the following data types:ModifyPositionParams
,LiquidatePositionParams
. - Removal of
receive_as_shares
flag: Thereceive_as_shares
flag of theLiquidatePositionParams
was 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_shares
inasset_config
: The accrued fee shares are now explicitly tracked in a new variablefee_shares
in theasset_config
of 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.