This commit is contained in:
owen05
2021-04-09 20:36:25 +08:00
parent 5ecbc2df10
commit 0e59f643b8
4 changed files with 43 additions and 25 deletions

View File

@@ -44,7 +44,7 @@ contract BaseMine is InitializableOwnable {
event UpdateEndBlock(uint256 indexed i, uint256 endBlock);
event NewRewardToken(uint256 indexed i, address rewardToken);
event RemoveRewardToken(address rewardToken);
event WithdrawLeftOver(address owner, uint256 i);
// ============ View ============
@@ -176,10 +176,22 @@ contract BaseMine is InitializableOwnable {
{
_updateReward(address(0), i);
RewardTokenInfo storage rt = rewardTokenInfos[i];
require(block.number < rt.endBlock, "DODOMineV2: ALREADY_CLOSE");
rt.rewardPerBlock = newRewardPerBlock;
emit UpdateReward(i, newRewardPerBlock);
}
function withdrawLeftOver(uint256 i) external onlyOwner {
RewardTokenInfo storage rt = rewardTokenInfos[i];
require(block.number > rt.endBlock, "DODOMineV2: MINING_NOT_FINISHED");
IRewardVault(rt.rewardVault).withdrawLeftOver(msg.sender);
emit WithdrawLeftOver(msg.sender, i);
}
// ============ Internal ============

View File

@@ -14,6 +14,7 @@ import {IERC20} from "../../intf/IERC20.sol";
interface IRewardVault {
function reward(address to, uint256 amount) external;
function withdrawLeftOver(address to) external;
}
contract RewardVault is Ownable {
@@ -28,4 +29,9 @@ contract RewardVault is Ownable {
function reward(address to, uint256 amount) external onlyOwner {
IERC20(rewardToken).safeTransfer(to, amount);
}
function withdrawLeftOver(address to) external onlyOwner {
uint256 leftover = IERC20(rewardToken).balanceOf(address(this));
IERC20(rewardToken).safeTransfer(to, leftover);
}
}