diff --git a/contracts/staking/RewardDistributor.sol b/contracts/staking/RewardDistributor.sol index ad7bf3e..adb0106 100644 --- a/contracts/staking/RewardDistributor.sol +++ b/contracts/staking/RewardDistributor.sol @@ -79,7 +79,7 @@ contract RewardDistributor is IRewardDistributor, ReentrancyGuard, Governable { uint256 tokenAmount = amount * _amount / (10**_decimals); uint256 balance = IERC20(rewardToken).balanceOf(address(this)); - require(tokenAmount >= balance, "RewardDistributor: insufficient balance"); + require(tokenAmount <= balance, "RewardDistributor: insufficient balance"); IERC20(rewardToken).safeTransfer(msg.sender, tokenAmount); diff --git a/contracts/staking/RewardRouter.sol b/contracts/staking/RewardRouter.sol index b7a8052..7e5d0d2 100644 --- a/contracts/staking/RewardRouter.sol +++ b/contracts/staking/RewardRouter.sol @@ -76,14 +76,6 @@ contract RewardRouter is ReentrancyGuard, Governable { IRewardTracker(stakedCecTracker).claimForAccount(account, account); } - function compound() external nonReentrant { - _compound(msg.sender); - } - - function compoundForAccount(address _account) external nonReentrant onlyGov { - _compound(_account); - } - function handleRewards( bool _shouldClaimCec, bool _shouldStakeCec, @@ -111,83 +103,6 @@ contract RewardRouter is ReentrancyGuard, Governable { } } - function batchCompoundForAccounts(address[] memory _accounts) external nonReentrant onlyGov { - for (uint256 i = 0; i < _accounts.length; i++) { - _compound(_accounts[i]); - } - } - - function signalTransfer(address _receiver) external nonReentrant { - require(IERC20(cecVester).balanceOf(msg.sender) == 0, "sender has vested tokens"); - - _validateReceiver(_receiver); - - pendingReceivers[msg.sender] = _receiver; - } - - function acceptTransfer(address _sender) external nonReentrant { - require(IERC20(cecVester).balanceOf(_sender) == 0, "sender has vested tokens"); - - address receiver = msg.sender; - require(pendingReceivers[_sender] == receiver, "transfer not signalled"); - delete pendingReceivers[_sender]; - - _validateReceiver(receiver); - _compound(_sender); - - uint256 stakedCec = IRewardTracker(stakedCecTracker).depositBalances(_sender, cec); - if (stakedCec > 0) { - _unstakeCec(_sender, cec, stakedCec); - _stakeCec(_sender, receiver, cec, stakedCec); - } - - uint256 stakedEsCec = IRewardTracker(stakedCecTracker).depositBalances(_sender, esCec); - if (stakedEsCec > 0) { - _unstakeCec(_sender, esCec, stakedEsCec); - _stakeCec(_sender, receiver, esCec, stakedEsCec); - } - - uint256 esCecBalance = IERC20(esCec).balanceOf(_sender); - if (esCecBalance > 0) { - IERC20(esCec).transferFrom(_sender, receiver, esCecBalance); - } - - IVester(cecVester).transferStakeValues(_sender, receiver); - } - - function _validateReceiver(address _receiver) private view { - require( - IRewardTracker(stakedCecTracker).averageStakedAmounts(_receiver) == 0, - "stakedCecTracker.averageStakedAmounts > 0" - ); - require( - IRewardTracker(stakedCecTracker).cumulativeRewards(_receiver) == 0, - "stakedCecTracker.cumulativeRewards > 0" - ); - - require( - IVester(cecVester).transferredAverageStakedAmounts(_receiver) == 0, - "cecVester.transferredAverageStakedAmounts > 0" - ); - require( - IVester(cecVester).transferredCumulativeRewards(_receiver) == 0, - "cecVester.transferredCumulativeRewards > 0" - ); - - require(IERC20(cecVester).balanceOf(_receiver) == 0, "cecVester.balance > 0"); - } - - function _compound(address _account) private { - _compoundCec(_account); - } - - function _compoundCec(address _account) private { - uint256 esCecAmount = IRewardTracker(stakedCecTracker).claimForAccount(_account, _account); - if (esCecAmount > 0) { - _stakeCec(_account, _account, esCec, esCecAmount); - } - } - function _stakeCec(address _fundingAccount, address _account, address _token, uint256 _amount) private { require(_amount > 0, "invalid _amount"); diff --git a/test/testStaking.ts b/test/testStaking.ts index cd06365..a406d77 100644 --- a/test/testStaking.ts +++ b/test/testStaking.ts @@ -192,8 +192,8 @@ describe('RewardRouter', function() { await mineBlock(provider) await showLog('claim cec 2day', stakedGmxTracker, esCec, user1.address) // @ts-ignore - const tx1 = await rewardRouter.connect(user0).batchCompoundForAccounts([user1.address, user2.address]) - await reportGasUsed(provider, tx1, "batchCompoundForAccounts gas used") + await rewardRouter.connect(user1).stakeEsCec(await esCec.balanceOf(user1.address)) + await showLog('compound', stakedGmxTracker, esCec, user1.address) expect(await stakedGmxTracker.stakedAmounts(user1.address)).gt(expandDecimals(1008, 18)) expect(await stakedGmxTracker.stakedAmounts(user1.address)).lt(expandDecimals(1009, 18))