dodomineV2 test finish

This commit is contained in:
owen05
2021-03-27 00:50:26 +08:00
parent 67964f41fc
commit 2c3a98d9cd
7 changed files with 461 additions and 54 deletions

View File

@@ -1,6 +1,6 @@
/*
Copyright 2020 DODO ZOO.
Copyright 2021 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/
@@ -45,24 +45,23 @@ contract BaseMine is InitializableOwnable {
event NewRewardToken(uint256 indexed i, address rewardToken);
event RemoveRewardToken(address rewardToken);
// ============ Modifier ==========
// ============ View ============
function getPendingReward(address user, uint256 i) public view returns (uint256) {
RewardTokenInfo memory rt = rewardTokenInfos[i];
RewardTokenInfo storage rt = rewardTokenInfos[i];
uint256 accRewardPerShare = rt.accRewardPerShare;
if (rt.lastRewardBlock != block.number) {
accRewardPerShare = _getAccRewardPerShare(i)
accRewardPerShare = _getAccRewardPerShare(i);
}
return
DecimalMath.mulFloor(
balanceOf(user),
accRewardPerShare.sub(rt.userRewardPeSharenPaid[user])
accRewardPerShare.sub(rt.userRewardPerSharePaid[user])
).add(rt.userRewards[user]);
}
function getPendingReward(address user, address rewardToken) public view returns (uint256) {
function getPendingRewardByToken(address user, address rewardToken) public view returns (uint256) {
return getPendingReward(user, getIdByRewardToken(rewardToken));
}
@@ -85,7 +84,7 @@ contract BaseMine is InitializableOwnable {
for (uint256 i = 0; i < len; i++) {
if (rewardToken == rewardTokenInfos[i].rewardToken) {
return i;
};
}
}
require(true, "DODOMineV2: TOKEN_NOT_FOUND");
}
@@ -114,6 +113,7 @@ contract BaseMine is InitializableOwnable {
function addRewardToken(
address rewardToken,
uint256 rewardPerBlock,
uint256 startBlock,
uint256 endBlock
) external onlyOwner {
@@ -133,6 +133,7 @@ contract BaseMine is InitializableOwnable {
rt.rewardToken = rewardToken;
rt.startBlock = startBlock;
rt.endBlock = endBlock;
rt.rewardPerBlock = rewardPerBlock;
rt.rewardVault = address(new RewardVault(rewardToken));
emit NewRewardToken(len, rewardToken);
@@ -202,7 +203,7 @@ contract BaseMine is InitializableOwnable {
if (block.number < rt.startBlock || rt.lastRewardBlock > rt.endBlock) {
return 0;
}
uint256 start = rt.startBlock > block.number ? rt.startBlock : block.number;
uint256 start = rt.lastRewardBlock < rt.startBlock ? rt.startBlock : rt.lastRewardBlock;
uint256 end = rt.endBlock < block.number ? rt.endBlock : block.number;
return end.sub(start);
}

View File

@@ -1,6 +1,6 @@
/*
Copyright 2020 DODO ZOO.
Copyright 2021 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/
@@ -31,7 +31,7 @@ contract ERC20Mine is BaseMine {
// ============ Deposit && Withdraw && Exit ============
function deposit(uint256 amount) public {
function deposit(uint256 amount) external {
require(amount > 0, "DODOMineV2: CANNOT_DEPOSIT_ZERO");
_updateAllReward(msg.sender);
@@ -42,7 +42,7 @@ contract ERC20Mine is BaseMine {
emit Deposit(msg.sender, amount);
}
function withdraw(uint256 amount) public {
function withdraw(uint256 amount) external {
require(amount > 0, "DODOMineV2: CANNOT_WITHDRAW_ZERO");
_updateAllReward(msg.sender);

View File

@@ -1,6 +1,6 @@
/*
Copyright 2020 DODO ZOO.
Copyright 2021 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/
@@ -34,20 +34,22 @@ contract vDODOMine is BaseMine {
// ============ Deposit && Withdraw && Exit ============
function deposit(uint256 amount) public {
function deposit(uint256 amount) external {
require(amount > 0, "DODOMineV2: CANNOT_DEPOSIT_ZERO");
require(
amount <= IVDODOToken(_vDODO_TOKEN_).availableBalanceOf(msg.sender),
"DODOMineV2: vDODO_NOT_ENOUGH"
);
_updateAllReward(msg.sender);
_totalSupply = _totalSupply.add(amount);
_balances[msg.sender] = _balances[msg.sender].add(amount);
emit Deposit(msg.sender, amount);
}
function withdraw(uint256 amount) public {
function withdraw(uint256 amount) external {
require(amount > 0, "DODOMineV2: CANNOT_WITHDRAW_ZERO");
require(amount <= _balances[msg.sender], "DODOMineV2: WITHDRAW_BALANCE_NOT_ENOUGH");
_updateAllReward(msg.sender);
_totalSupply = _totalSupply.sub(amount);
_balances[msg.sender] = _balances[msg.sender].sub(amount);
emit Withdraw(msg.sender, amount);