update
This commit is contained in:
@@ -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 ============
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user