From a731962d324a0d2eca7d2bee228950c60439064a Mon Sep 17 00:00:00 2001 From: Martin Strobl <20109376+mart1n-xyz@users.noreply.github.com> Date: Tue, 11 Jul 2023 12:08:30 +0200 Subject: [PATCH] Repair minting MPs with lock - The "free MPs" in the amount of 100% of stake that are minted on deposit are now not minted anymore duplicitely in the lock function --- contracts/StakeManager.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/contracts/StakeManager.sol b/contracts/StakeManager.sol index 2929d28..2c71ff7 100644 --- a/contracts/StakeManager.sol +++ b/contracts/StakeManager.sol @@ -63,7 +63,7 @@ contract StakeManager is Ownable { processAccount(account, currentEpoch); account.balance += _amount; account.rewardAddress = StakeVault(msg.sender).owner(); - mintIntialMultiplier(account, _time, _amount); + mintIntialMultiplier(account, _time, _amount, 1); stakeSupply += _amount; } @@ -90,7 +90,7 @@ contract StakeManager is Ownable { Account storage account = accounts[msg.sender]; processAccount(account, currentEpoch); require(block.timestamp + _time > account.lockUntil, "Cannot decrease lock time"); - mintIntialMultiplier(account, _time); + mintIntialMultiplier(account, _time, account.balance, 0); } /** @@ -200,11 +200,11 @@ contract StakeManager is Ownable { multiplierSupply += increasedMultiplier; } - function mintIntialMultiplier(Account storage account, uint256 lockTime, uint256 amount) private { + function mintIntialMultiplier(Account storage account, uint256 lockTime, uint256 amount, uint256 initMint) private { //if balance still locked, multipliers must be minted from difference of time. uint256 dT = account.lockUntil > block.timestamp ? block.timestamp + lockTime - account.lockUntil : lockTime; account.lockUntil = block.timestamp + lockTime; - uint256 increasedMultiplier = amount * ((dT/YEAR)+1); + uint256 increasedMultiplier = amount * ((dT/YEAR)+initMint); account.lastMint = block.timestamp; account.multiplier += increasedMultiplier; multiplierSupply += increasedMultiplier;