From 6bf8d662219b85e8a2062b0d2e60e568e26e636b Mon Sep 17 00:00:00 2001 From: Ricardo Guilherme Schmidt <3esmit@gmail.com> Date: Mon, 26 Jun 2023 12:26:02 -0300 Subject: [PATCH] force users to migrate or leave --- contracts/StakeManager.sol | 13 ++++++++++++- contracts/StakeVault.sol | 5 +++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/contracts/StakeManager.sol b/contracts/StakeManager.sol index 79b1526..d85833a 100644 --- a/contracts/StakeManager.sol +++ b/contracts/StakeManager.sol @@ -104,6 +104,16 @@ contract StakeManager is Ownable { multiplierSupply += increasedMultiplier; } + /** + * @notice leave without processing account + */ + function leave() external onlyVault { + Account memory account = accounts[msg.sender]; + delete accounts[msg.sender]; + multiplierSupply -= account.multiplier; + stakeSupply -= _account.mount; + } + /** * @notice Release rewards for current epoch and increase epoch. */ @@ -170,7 +180,8 @@ contract StakeManager is Ownable { function processAccount(Account storage account, uint256 _limitEpoch) private { processEpoch(); - require(_limitEpoch <= currentEpoch, "Non-sese call"); + require(address(migration) == address(0), "Contract ended, please migrate"); + require(_limitEpoch <= currentEpoch, "Non-sense call"); uint256 userReward; uint256 userEpoch = account.epoch; for (Epoch memory iEpoch = epochs[userEpoch]; userEpoch < _limitEpoch; userEpoch++) { diff --git a/contracts/StakeVault.sol b/contracts/StakeVault.sol index 0ca1411..900b97a 100644 --- a/contracts/StakeVault.sol +++ b/contracts/StakeVault.sol @@ -32,6 +32,11 @@ contract StakeVault is Ownable { stakedToken.transferFrom(address(this), msg.sender, _amount); } + function leave() external onlyOwner { + stakeManager.leave(); + stakedToken.transferFrom(address(this), msg.sender, stakedToken.balanceOf(address(this))); + } + /** * @notice Opt-in migration to a new StakeManager contract. */