BGD. aBPT Balancer V2 - Migration plan

ABPT Balancer v1 → v2 Migration update

Since the snapshot on the AAVE/wstETH migration was submitted in may 2023, the Safety Module has undergone multiple upgrades, from slashing over emission change to the most recent Aave Governance v3 upgrade which lead to significant gas savings for stk tokens (before, after).

In parallel to this development an effort was started to create a manipulation resistant oracle to price the balance v2 AAVE/wstETH LP which was deployed ~two months ago. Important to highlight that is for off-chain usage, not on the smart contracts layer.

While the original plan was to upgrade the stkABPT token contract on the fly (from Balancer v1 to Balancer v2 with same token composition), the change of plans decided on the Snapshot vote forced us to adjust the migration plan.
Therefore a new migration contract was developed allowing users to migrate their positions via one single transaction.

As the pending upgrades were blocking the release and a new safety module deployment (to be used with stkGHO) was already on the horizon, we spend some extra time reworking the stake-token contract to have a more maintainable code-base in the future.

On the original contract there were a lot of minor issues like:

  • Spec deviations (because some of the EIPs the stake-token implements were not finalized at the time of original deployment).
  • Deprecated open-zeppelin dependencies.
  • Presence of deprecated storage slots for legacy reasons.
  • Immutables for aspects that should be variable (distribution end, cooldown period).
  • Complex nested inheritance chains.

All of them have been resolved now, and all changes have been audited by Certora, which means we are finally ready to create a proposal for the community to approve stkABPTv2.

The governance proposal will do the following:

  1. Upgrades the existing stkABPT(v1) to allow immediate withdrawal without cooldown and disable slashing.
  2. Stops emission on stkABPT(v1).
  3. Starts emission on the new stkABPT(v2).

The stkABPT(v2) will be configured analog to stkABPT(v1)

  • 20 days of cooldown
  • 2 days to unstake
  • 30% max slashing

The now variable distributionEnd will be set to 1 year after the safety module activation. This can be changed by the community at any time, but seems like the correct approach, not being too long or too short.