On August 1st, the keys to the wallet for validator 167, which is not the Beethoven X validator, got compromised and his wallet was drained. In addition, the attacker also unstaked all the staked FTM from validator 167. Beethoven X has delegated 1M FTM to the affected validator through sFTMx. These funds are not at risk, but are also not earning any rewards at the moment. Over the past week, we’ve investigated ways to unlock the 1M FTM that we have delegated. After developing and testing options, we have deployed a contract to Fantom which allows our treasury to unstake the 1M FTM without any impact to sFTMx holders.
When a delegator or staker wants to unlock the FTM pre-maturely, a penalty needs to be paid. In the normal use case when a user is withdrawing FTM, if we need to unlock early, the user who initiates the request will pay this penalty when he burns the sFTMx. In this scenario we don't have a user that pays it and if we just unlock, it would result in a drop in the rate of sFTMx per FTM. We want to avoid this scenario under all circumstances. We’ve developed a contract that will unlock the vault and in the same transaction refund the sFTMx staking contract with the same amount of FTM so that no decrease in the rate will occur.
The contract source code can be found here: https://github.com/beethovenxfi/sftmx/blob/main/contracts/VaultUnlocker.sol The tests here: https://github.com/beethovenxfi/sftmx/blob/main/scripts/VaultUnlocker.ts The tenderly simulation here: https://dashboard.tenderly.co/shared/simulation/d493f3fa-776a-433c-86b4-f39b6b2f5082
The penalty that is due for the withdrawal is increasing over time at roughly 170 FTM per day. In light of this, we would like to move this proposal forward as fast as possible.
Motivation To make sure that sFTMx holders earn yield on all the staked FTM, we’ll need to withdraw and re-stake to a different validator.
The treasury will use this unlocker contract https://ftmscan.com/address/0xd0f62fbe32a72cd18ab8943b52220a7af6c743f4 to retrieve the funds. The course of action will be:
After 7 days, we will withdraw the FTM from these vaults into the free pool.
We are in close contact with validator 167 and he has confirmed that he will reimburse the treasury for any penalty that it needed to pay in order to unlock the funds.
The current cost for the penalty of delegating sits at 3.3k FTM. While the validator has given their word that they'll reimburse any associated costs, then there is a chance that the treasury would need to cover the amount otherwise.