Skip to content

Commit

Permalink
Block token when removing
Browse files Browse the repository at this point in the history
  • Loading branch information
akshatmittal committed May 7, 2024
1 parent 7fd26c4 commit 6c3b820
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
8 changes: 8 additions & 0 deletions contracts/rewards/GenericMultiRewardsVault.sol
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ contract GenericMultiRewardsVault is ERC4626, Ownable {
mapping(IERC20 rewardToken => RewardInfo rewardInfo) public rewardInfos;
mapping(IERC20 rewardToken => address distributor) public distributorInfo;
mapping(IERC20 rewardToken => uint256 excessRewards) public leftoverRewards;
mapping(IERC20 rewardToken => bool isBlocked) public isRewardTokenBlocked;

mapping(address user => mapping(IERC20 rewardToken => uint256 rewardIndex)) public userIndex; // {qRewardTok}
mapping(address user => mapping(IERC20 rewardToken => uint256 accruedRewards)) public accruedRewards; // {qRewardTok}
Expand All @@ -135,6 +136,9 @@ contract GenericMultiRewardsVault is ERC4626, Ownable {
if (asset() == address(rewardToken)) {
revert Errors.RewardTokenCanNotBeStakingToken();
}
if (isRewardTokenBlocked[rewardToken]) {
revert Errors.RewardTokenBlocked(rewardToken);
}

RewardInfo memory rewards = rewardInfos[rewardToken];
if (rewards.lastUpdatedTimestamp > 0) {
Expand Down Expand Up @@ -183,13 +187,17 @@ contract GenericMultiRewardsVault is ERC4626, Ownable {
if (rewards.lastUpdatedTimestamp == 0) {
revert Errors.InvalidRewardToken(rewardToken);
}
if (isRewardTokenBlocked[rewardToken]) {
revert Errors.RewardTokenAlreadyBlocked(rewardToken);
}
if (_accrue) {
_accrueRewards(rewardToken, _accrueStatic(rewards));
}

delete rewardInfos[rewardToken];
delete distributorInfo[rewardToken];
delete leftoverRewards[rewardToken];
isRewardTokenBlocked[rewardToken] = true;

uint256 totalRewardTokens = rewardTokens.length;

Expand Down
6 changes: 3 additions & 3 deletions contracts/rewards/definitions.sol
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ struct RewardInfo {
}

abstract contract Errors {
// Reward Token Management
error InvalidRewardToken(IERC20 rewardToken);

// Reward Management
error InvalidRewardToken(IERC20 rewardToken);
error RewardTokenAlreadyBlocked(IERC20 rewardToken);
error RewardTokenAlreadyExist(IERC20 rewardToken);
error RewardTokenDoesNotExist(IERC20 rewardToken);
error RewardTokenCanNotBeStakingToken();
error RewardTokenBlocked(IERC20 rewardToken);
error ZeroAmount();
error RewardsAreDynamic(IERC20 rewardToken);
error ZeroRewardsSpeed();
Expand Down

0 comments on commit 6c3b820

Please sign in to comment.